php session有效期限的問題

怪我咯
發布: 2023-03-13 09:38:01
原創
6709 人瀏覽過

PHP中的session有效期限預設是1440秒(24分鐘)【weiweiok 註:php5裡預設的是180分】,也就是說,客戶端超過24分鐘沒有刷新,當前session就會失效。很明顯,這是不能滿足需求的。

php session有效期限的問題

#

一個已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session資訊儲存到資料庫,這樣可以透過SQL語句來刪除所有過期的session,精確地控制session的有效期限。這也是基於PHP的大型網站常用的方法。但是,一般的小型網站,似乎沒有必要這麼勞師動眾。
但是一般的Session的生命期有限,如果用戶關閉了瀏覽器,就不能保存Session的變數了!那麼怎麼樣可以實現Session的永久生命期呢?
大家知道,Session儲存在伺服器端,根據客戶端提供的SessionID來得到這個用戶的文件,然後讀取文件,取得變數的值,SessionID可以使用客戶端的Cookie或者Http1. 1協定的Query_String(就是存取的URL的「?」後面的部分)來傳送給伺服器,然後伺服器讀取Session的目錄…
要實作Session的永久生命期,首先需要了解php .ini關於Session的相關設定(開啟php.ini文件,在“[Session]”部分):
1、session.use_cookies:預設的值是“1”,代表SessionID使用Cookie來傳遞,反之就是使用Query_String來傳遞;
2、session.name:這個就是SessionID儲存的變數名稱,可能是Cookie,也可能是Query_String來傳遞,預設值是「PHPSESSID」;
3、session.cookie_lifetime :這個代表SessionID在客戶端Cookie儲存的時間,預設是0,代表瀏覽器一關閉SessionID就作廢…就是因為這個所以Session不能永久使用!
4、session.gc_maxlifetime:這個是Session資料在伺服器端儲存的時間,如果超過這個時間,那麼Session資料就會自動刪除!
還有很多的設置,不過和本文相關的就是這些了,以下開始講使用永久Session的原理和步驟。
前面說過,伺服器透過SessionID來讀取Session的數據,但是一般瀏覽器傳送的SessionID在瀏覽器關閉後就沒有了,那麼我們只需要人為的設定SessionID並且保存下來,不就可以…
如果你擁有伺服器的操作權限,那麼設定這個非常非常的簡單,只是需要進行如下的步驟:
1、把「session.use_cookies」設定為1,開啟Cookie儲存SessionID,不過預設就是1,一般不用修改;
2、把「session.cookie_lifetime」改為正無窮(當然沒有正無窮的參數,不過999999999和正無窮也沒有什麼區別);
3、把「session.gc_maxlifetime」設定為和「session.cookie_lifetime」一樣的時間;
在PHP的文件中明確指出,設定session有效期的參數是session.gc_maxlifetime。可以在php.ini檔案中,或透過ini_set()函數來修改此參數。問題在於,經過多次測試,修改這個參數基本上不起作用,session有效期仍然保持24分鐘的預設值。
由於PHP的工作機制,它並沒有一個daemon線程,來定時地掃描session資訊並判斷其是否失效。當一個有效請求發生時,PHP會根據全域變數session.gc_probability/session.gc_pisor(同樣可以透過php.ini或ini_set()函數來修改)的值,來決定是否要啟動一個GC(Garbage Collector)。預設情況下,session.gc_probability = 1,session.gc_pisor =100,也就是說有1%的可能性會啟動GC。
GC的工作,就是掃描所有的session訊息,用當前時間減去session的最後修改時間(modified date),同session.gc_maxlifetime參數進行比較,如果生存時間已經超過gc_maxlifetime,就把該session刪除。
到此為止,工作一切正常。那為什麼會發生gc_maxlifetime無效的情況呢?
在預設情況下,session資訊會以文字檔案的形式,被儲存在系統的暫存檔案目錄中。在Linux下,這條路徑通常為\tmp,在 Windows下通常為C:\Windows\Temp。當伺服器上有多個PHP應用時,它們會把自己的session檔案都保存在同一個目錄中。同樣地,這些PHP應用也會以一定機率啟動GC,掃描所有的session檔。
問題在於,GC在工作時,並不會區分不同網站的session。舉例言之,網站A的gc_maxlifetime設定為2小時,網站B的 gc_maxlifetime設定為預設的24分鐘。當站點B的GC啟動時,它會掃描公用的臨時檔案目錄,把所有超過24分鐘的session檔案全部刪除掉,而不管它們來自於站點A或B。這樣,站點A的gc_maxlifetime設定就形同虛設了。
找到問題所在,解決起來就很簡單了。修改session.save_path參數,或是使用session_save_path()函數,把保存session的目錄指向一個專用的目錄,gc_maxlifetime參數運作正常了。
嚴格來說,這算是PHP的一個bug?
還有一個問題就是,gc_maxlifetime只能保證session生存的最短時間,並不能夠保存在超過這一時間之後session資訊立即會被刪除。因為GC是按機率啟動的,可能在某一個長時間內都沒有被啟動,那麼大量的session在超過gc_maxlifetime以後仍然會有效。解決這個問題的一個方法是,把session.gc_probability/session.gc_pisor的機率提高,如果提到100%,就會徹底解決這個問題,但顯然會對效能造成嚴重的影響。另一個方法是自己在程式碼中判斷目前session的生存時間,如果超出了 gc_maxlifetime,就清空目前session。
但是如果你沒有伺服器的操作權限,那就比較麻煩了,你需要透過PHP程式改寫SessionID來實現永久的Session資料保存。查查php.net的函數手冊,可以看到有「session_id」這個函數:如果沒有設定參數,那麼將會傳回目前的SessionID,如果設定了參數,就會將目前的SessionID設定為給定的值…
只要利用永久性的Cookie加上「session_id」函數,就可以實現永久Session資料保存了!
但是為了方便,我們需要知道伺服器設定的“session.name”,但是一般使用者都沒有權限查看伺服器的php.ini設置,不過PHP提供了一個非常好的函數“phpinfo”,利用這個可以查看幾乎所有的PHP資訊!
----------------------------------------------- -------------------------------------
PHP相關資訊顯示< /title> <br><?phpinfo()?> <br>-------------------------------- -------------------------------------------------- -- <br>開啟編輯器,輸入上面的程式碼,然後在瀏覽器中執行這個程序,會見到PHP的相關資訊(如圖1所示)。其中有一項“session.name”的參數,這個就是我們需要的伺服器“session.name”,一般是“PHPSESSID”。 <br>記下了SessionID的名稱後,我們就可以實現永久的Session資料儲存了! <br></p> <p class="codetitle">程式碼如下:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">session_start(); ini_set(&#39;session.save_path&#39;,&#39;/tmp/&#39;); //6个钟头 ini_set(&#39;session.gc_maxlifetime&#39;,21600); //保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime, "/");</pre><div class="contentsignin">登入後複製</div></div><p> 後記:<br/>其實真正的永久儲存是不可能的,因為Cookie的保存時間有限,而伺服器的空間也有限…但是對於一些需要保存時間比較長的站點,以上方法就已經足夠了! <br/>把session放入mysql的Example: <br/>資料庫裡建表:session ( sesskey varchar32 , expiry int11 , value longtext) <br/>code: <br/>程式碼執行前已經<a href="http://www.php.cn/wiki/409.html" target="_blank">連接資料庫</a>了。 <br/></p><p class="codetitle">程式碼如下:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">define(&#39;STORE_SESSIONS&#39;,&#39;mysql&#39;); if (STORE_SESSIONS == &#39;mysql&#39;) { if (!$SESS_LIFE = get_cfg_var(&#39;session.gc_maxlifetime&#39;)) { $SESS_LIFE = 1440; } function _sess_open($save_path, $session_name) { // 如果没有连接数据库,可以在此执行mysql_pconnect,mysql_select_db return true; } function _sess_close() { return true; } function _sess_read($key) { $value_query = mysql_query("select value from sessions where sesskey = &#39;" .addslashes($key) . "&#39; and expiry > &#39;" . time() . "&#39;"); $value = mysql_fetch_array($value_query); if (isset($value[&#39;value&#39;])) { return $value[&#39;value&#39;]; } return false; } function _sess_write($key, $val) { global $SESS_LIFE; $expiry = time() + $SESS_LIFE; $value = $val; $check_query = mysql_query("select count(*) as total from sessions where sesskey = &#39;" . addslashes($key) . "&#39;"); $check = mysql_fetch_array($check_query); if ($check[&#39;total&#39;] > 0) { return mysql_query("update sessions set expiry = &#39;" . addslashes($expiry) . "&#39;, value = &#39;" . addslashes($value) . "&#39; where sesskey = &#39;" . addslashes($key) . "&#39;"); } else { return mysql_query("insert into sessions values (&#39;" . addslashes($key) . "&#39;, &#39;" . addslashes($expiry) . "&#39;, &#39;" . addslashes($value) . "&#39;)"); } } function _sess_destroy($key) { return mysql_query("delete from sessions where sesskey = &#39;" . addslashes($key) . "&#39;"); } function _sess_gc($maxlifetime) { mysql_query("delete from sessions where expiry < &#39;" . time() . "&#39;"); return true; } session_set_save_handler(&#39;_sess_open&#39;, &#39;_sess_close&#39;, &#39;_sess_read&#39;, &#39;_sess_write&#39;, &#39;_sess_destroy&#39;, &#39;_sess_gc&#39;); } danoo_session_name( &#39;dtvSid&#39; ); danoo_session_save_path(SESSION_WRITE_DIRECTORY);</pre><div class="contentsignin">登入後複製</div></div><p>還是有點不明白,open,write那些參數從哪裡來的。 修改php.ini配置的兩個常用函數: get_cfg_var('session.gc_maxlifetime') : 取得session.gc_maxlifetime的值 ini_set('session.cookie_lifetime','0') : 設定session.cookie_lifetime的值為0。 </p> <blockquote><p><span style="color: rgb(255, 0, 0);">相關專題推薦</span>:<a href="https://www.php.cn/php-weizijiaocheng-454911.html" target="_blank">php session</a> (包含圖文、影片、案例)</p></blockquote><p>以上是php session有效期限的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!</p> </div> </div> <div style="height: 25px;"> <div class="wzconBq" style="display: inline-flex;"> <span>相關標籤:</span> <div class="wzcbqd"> <a onclick="hits_log(2,'www',this);" href-data="https://www.php.cn/zh-tw/search?word=php" target="_blank">php</a> <a onclick="hits_log(2,'www',this);" href-data="https://www.php.cn/zh-tw/search?word=session" target="_blank">session</a> <a onclick="hits_log(2,'www',this);" href-data="https://www.php.cn/zh-tw/search?word=有效期限" target="_blank">有效期限</a> </div> </div> <div style="display: inline-flex;float: right; color:#333333;">來源:php.cn</div> </div> <div class="wzconOtherwz"> <a href="https://www.php.cn/zh-tw/faq/373348.html" title="php 中session變數怎麼銷毀"> <span>上一篇:php 中session變數怎麼銷毀</span> </a> <a href="https://www.php.cn/zh-tw/faq/373351.html" title="php Session沒有效果是因為什麼"> <span>下一篇:php Session沒有效果是因為什麼</span> </a> </div> <div class="wzconShengming"> <div class="bzsmdiv">本網站聲明</div> <div>本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn</div> </div> <div class="wwads-cn wwads-horizontal" data-id="156" style="max-width:955px"></div> <div class="wzconZzwz"> <div class="wzconZzwztitle">作者最新文章</div> <ul> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/360371.html">PHP條件控制語句之「elseif語句」實例詳解</a> </div> <div>2023-03-07 13:08:02</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/373805.html">php中解析帶有中文字元的url怎麼做?</a> </div> <div>2023-03-13 16:16:02</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/372719.html">SQL語句去掉重複記錄,取得重複記錄實例程式碼</a> </div> <div>1970-01-01 08:00:00</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/373350.html">php session有效期限的問題</a> </div> <div>2023-03-13 09:38:01</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/373657.html">php用戶密碼加密演算法解析</a> </div> <div>2023-03-13 14:30:01</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/359367.html">vue.js實作仿原生ios時間選擇元件開發經驗</a> </div> <div>1970-01-01 08:00:00</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/371484.html">怎麼利用JS將從資料庫讀取出來的日期型格式化為想要的類型</a> </div> <div>1970-01-01 08:00:00</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/369678.html">php運算子的優先順序</a> </div> <div>2023-03-10 21:22:02</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/359542.html">JS控製文字域只讀或可寫入屬性的方法技巧</a> </div> <div>1970-01-01 08:00:00</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="https://www.php.cn/zh-tw/faq/360344.html">PHP表達式概念及實例詳解</a> </div> <div>2023-03-07 12:38:01</div> </li> </ul> </div> <div class="wzconZzwz"> <div class="wzconZzwztitle">最新問題</div> <div class="wdsyContent"> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="https://www.php.cn/zh-tw/wenda/175514.html" target="_blank" title="Codeigniter:$this->session->userdata('user_id') 無法正常運作的問題" class="wdcdcTitle">Codeigniter:$this->session->userdata('user_id') 無法正常運作的問題</a> <a href="https://www.php.cn/zh-tw/wenda/175514.html" class="wdcdcCons">所以我正在嘗試使用codeigniter3進行學習,並且我正在嘗試從用戶表中獲取id,用戶表上的id列的名稱是user_id,我有另一個名為lowongan的表,它有id_user...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> 來自於 2024-03-30 12:19:52</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>323</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> </div> </div> <div class="wzconZt" > <div class="wzczt-title"> <div>相關專題</div> <a href="https://www.php.cn/zh-tw/faq/zt" target="_blank">更多> </a> </div> <div class="wzcttlist"> <ul> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpwjzmdk"><img src="https://img.php.cn/upload/subject/202407/22/2024072214120868901.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="php檔案怎麼打開" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpwjzmdk" class="title-a-spanl" title="php檔案怎麼打開"><span>php檔案怎麼打開</span> </a> </li> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpzmqcszys"><img src="https://img.php.cn/upload/subject/202407/22/2024072214004499289.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="php怎麼取出陣列的前幾個元素" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpzmqcszys" class="title-a-spanl" title="php怎麼取出陣列的前幾個元素"><span>php怎麼取出陣列的前幾個元素</span> </a> </li> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpfxlsb"><img src="https://img.php.cn/upload/subject/202407/22/2024072214003558557.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="php反序列化失敗怎麼辦" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpfxlsb" class="title-a-spanl" title="php反序列化失敗怎麼辦"><span>php反序列化失敗怎麼辦</span> </a> </li> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/sessionsxdyy"><img src="https://img.php.cn/upload/subject/202407/22/2024072213580932079.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="session失效的原因" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/sessionsxdyy" class="title-a-spanl" title="session失效的原因"><span>session失效的原因</span> </a> </li> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/sessionsxjjff"><img src="https://img.php.cn/upload/subject/202407/22/2024072213573294856.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="session失效解決方法" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/sessionsxjjff" class="title-a-spanl" title="session失效解決方法"><span>session失效解決方法</span> </a> </li> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpljmssql"><img src="https://img.php.cn/upload/subject/202407/22/2024072213560082376.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="php怎麼連接mssql資料庫" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpljmssql" class="title-a-spanl" title="php怎麼連接mssql資料庫"><span>php怎麼連接mssql資料庫</span> </a> </li> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpljmssqlsjk"><img src="https://img.php.cn/upload/subject/202407/22/2024072213555538594.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="php連接mssql資料庫的方法" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/phpljmssqlsjk" class="title-a-spanl" title="php連接mssql資料庫的方法"><span>php連接mssql資料庫的方法</span> </a> </li> <li class="ul-li"> <a target="_blank" href="https://www.php.cn/zh-tw/faq/htmlzmsc"><img src="https://img.php.cn/upload/subject/202407/22/2024072213512540557.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="html怎麼上傳" /> </a> <a target="_blank" href="https://www.php.cn/zh-tw/faq/htmlzmsc" class="title-a-spanl" title="html怎麼上傳"><span>html怎麼上傳</span> </a> </li> </ul> </div> </div> </div> </div> <div class="phpwzright"> <div class="wzrOne"> <div class="wzroTitle">熱門推薦</div> <div class="wzroList"> <ul> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="Mac電腦設定hosts的方法(圖文步驟)" href="https://www.php.cn/zh-tw/faq/448310.html">Mac電腦設定hosts的方法(圖文步驟)</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="PHP快速建立一個簡單的QQ機器人" href="https://www.php.cn/zh-tw/faq/448391.html">PHP快速建立一個簡單的QQ機器人</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="API常用簽章驗證方法(PHP實作)" href="https://www.php.cn/zh-tw/faq/448286.html">API常用簽章驗證方法(PHP實作)</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="PHP常用日期時間操作集" href="https://www.php.cn/zh-tw/faq/448309.html">PHP常用日期時間操作集</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="PHP產生圖形驗證碼(加強幹擾型)" href="https://www.php.cn/zh-tw/faq/448308.html">PHP產生圖形驗證碼(加強幹擾型)</a> </div> </li> </ul> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="wzrThree"> <div class="wzrthree-title"> <div>熱門教學</div> <a target="_blank" href="https://www.php.cn/zh-tw/course.html">更多> </a> </div> <div class="wzrthreelist swiper2"> <div class="wzrthreeTab swiper-wrapper"> <div class="check tabdiv swiper-slide" data-id="one">相關教學 <div></div></div> <div class="tabdiv swiper-slide" data-id="two">熱門推薦<div></div></div> <div class="tabdiv swiper-slide" data-id="three">最新課程<div></div></div> </div> <ul class="one"> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/1106.html" title="PHP程式碼整潔之道" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/6256873e17991995.png" alt="PHP程式碼整潔之道"/> </a> <div class="wzrthree-right"> <a target="_blank" title="PHP程式碼整潔之道" href="https://www.php.cn/zh-tw/course/1106.html">PHP程式碼整潔之道</a> <div class="wzrthreerb"> <div>46776 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="1106"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/858.html" title="SESSION實作登入與驗證" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/6253dc6d2078e420.png" alt="SESSION實作登入與驗證"/> </a> <div class="wzrthree-right"> <a target="_blank" title="SESSION實作登入與驗證" href="https://www.php.cn/zh-tw/course/858.html">SESSION實作登入與驗證</a> <div class="wzrthreerb"> <div>95372 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="858"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> <ul class="two" style="display: none;"> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/812.html" title="最新ThinkPHP 5.1全球首發影片教學(60天成就PHP大牛線上訓練課程)" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg" alt="最新ThinkPHP 5.1全球首發影片教學(60天成就PHP大牛線上訓練課程)"/> </a> <div class="wzrthree-right"> <a target="_blank" title="最新ThinkPHP 5.1全球首發影片教學(60天成就PHP大牛線上訓練課程)" href="https://www.php.cn/zh-tw/course/812.html">最新ThinkPHP 5.1全球首發影片教學(60天成就PHP大牛線上訓練課程)</a> <div class="wzrthreerb"> <div >1420111次學習</div> <div class="courseICollection" data-id="812"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/286.html" title="JAVA 初級入門影片教學" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a2bacfd9379.png" alt="JAVA 初級入門影片教學"/> </a> <div class="wzrthree-right"> <a target="_blank" title="JAVA 初級入門影片教學" href="https://www.php.cn/zh-tw/course/286.html">JAVA 初級入門影片教學</a> <div class="wzrthreerb"> <div >2505753次學習</div> <div class="courseICollection" data-id="286"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/504.html" title="小甲魚零基礎入門學習Python影片教學" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a67ce3a6655.png" alt="小甲魚零基礎入門學習Python影片教學"/> </a> <div class="wzrthree-right"> <a target="_blank" title="小甲魚零基礎入門學習Python影片教學" href="https://www.php.cn/zh-tw/course/504.html">小甲魚零基礎入門學習Python影片教學</a> <div class="wzrthreerb"> <div >505482次學習</div> <div class="courseICollection" data-id="504"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/901.html" title="Web前端開發極速入門" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/64be28a53a4f6310.png" alt="Web前端開發極速入門"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Web前端開發極速入門" href="https://www.php.cn/zh-tw/course/901.html">Web前端開發極速入門</a> <div class="wzrthreerb"> <div >215523次學習</div> <div class="courseICollection" data-id="901"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/234.html" title="零基礎精通 PS 影片教學" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62611f57ed0d4840.jpg" alt="零基礎精通 PS 影片教學"/> </a> <div class="wzrthree-right"> <a target="_blank" title="零基礎精通 PS 影片教學" href="https://www.php.cn/zh-tw/course/234.html">零基礎精通 PS 影片教學</a> <div class="wzrthreerb"> <div >884106次學習</div> <div class="courseICollection" data-id="234"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> <ul class="three" style="display: none;"> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/1648.html" title="【web前端】Node.js快速入門" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662b5d34ba7c0227.png" alt="【web前端】Node.js快速入門"/> </a> <div class="wzrthree-right"> <a target="_blank" title="【web前端】Node.js快速入門" href="https://www.php.cn/zh-tw/course/1648.html">【web前端】Node.js快速入門</a> <div class="wzrthreerb"> <div >7008次學習</div> <div class="courseICollection" data-id="1648"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/1647.html" title="國外Web開發全端課程全集" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/6628cc96e310c937.png" alt="國外Web開發全端課程全集"/> </a> <div class="wzrthree-right"> <a target="_blank" title="國外Web開發全端課程全集" href="https://www.php.cn/zh-tw/course/1647.html">國外Web開發全端課程全集</a> <div class="wzrthreerb"> <div >5445次學習</div> <div class="courseICollection" data-id="1647"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/1646.html" title="Go語言實戰之 GraphQL" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662221173504a436.png" alt="Go語言實戰之 GraphQL"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Go語言實戰之 GraphQL" href="https://www.php.cn/zh-tw/course/1646.html">Go語言實戰之 GraphQL</a> <div class="wzrthreerb"> <div >4590次學習</div> <div class="courseICollection" data-id="1646"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/1645.html" title="550W粉絲大佬手把手從零學JavaScript" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662077e163124646.png" alt="550W粉絲大佬手把手從零學JavaScript"/> </a> <div class="wzrthree-right"> <a target="_blank" title="550W粉絲大佬手把手從零學JavaScript" href="https://www.php.cn/zh-tw/course/1645.html">550W粉絲大佬手把手從零學JavaScript</a> <div class="wzrthreerb"> <div >659次學習</div> <div class="courseICollection" data-id="1645"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="https://www.php.cn/zh-tw/course/1644.html" title="python大神Mosh,零基礎小白6小時完全入門" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/6616418ca80b8916.png" alt="python大神Mosh,零基礎小白6小時完全入門"/> </a> <div class="wzrthree-right"> <a target="_blank" title="python大神Mosh,零基礎小白6小時完全入門" href="https://www.php.cn/zh-tw/course/1644.html">python大神Mosh,零基礎小白6小時完全入門</a> <div class="wzrthreerb"> <div >23201次學習</div> <div class="courseICollection" data-id="1644"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> </div> <script> var mySwiper = new Swiper('.swiper2', { autoplay: false,//可选选项,自动滑动 slidesPerView : 'auto', }) $('.wzrthreeTab>div').click(function(e){ $('.wzrthreeTab>div').removeClass('check') $(this).addClass('check') $('.wzrthreelist>ul').css('display','none') $('.'+e.currentTarget.dataset.id).show() }) </script> </div> <div class="wzrFour"> <div class="wzrfour-title"> <div>最新下載</div> <a href="https://www.php.cn/zh-tw/xiazai">更多> </a> </div> <script> $(document).ready(function(){ var sjyx_banSwiper = new Swiper(".sjyx_banSwiperwz",{ speed:1000, autoplay:{ delay:3500, disableOnInteraction: false, }, pagination:{ el:'.sjyx_banSwiperwz .swiper-pagination', clickable :false, }, loop:true }) }) </script> <div class="wzrfourList swiper3"> <div class="wzrfourlTab swiper-wrapper"> <div class="check swiper-slide" data-id="onef">網站特效 <div></div></div> <div class="swiper-slide" data-id="twof">網站源碼<div></div></div> <div class="swiper-slide" data-id="threef">網站素材<div></div></div> <div class="swiper-slide" data-id="fourf">前端模板<div></div></div> </div> <ul class="onef"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="jQuery企業留言表單聯絡程式碼" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8071">[表單按鈕] jQuery企業留言表單聯絡程式碼</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="HTML5 MP3音樂盒播放特效" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8070">[播放器特效] HTML5 MP3音樂盒播放特效</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="HTML5酷炫粒子動畫導覽選單特效" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8069">[選單導航] HTML5酷炫粒子動畫導覽選單特效</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="jQuery可視化表單拖曳編輯程式碼" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8068">[表單按鈕] jQuery可視化表單拖曳編輯程式碼</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="VUE.JS仿酷狗音樂播放器代碼" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8067">[播放器特效] VUE.JS仿酷狗音樂播放器代碼</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="經典html5推箱子小遊戲" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8066">[html5特效] 經典html5推箱子小遊戲</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="jQuery滾動添加或減少圖片特效" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8065">[圖片特效] jQuery滾動添加或減少圖片特效</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="CSS3個人相簿封面懸停放大特效" href="https://www.php.cn/zh-tw/toolset/js-special-effects/8064">[相簿特效] CSS3個人相簿封面懸停放大特效</a> </div> </li> </ul> <ul class="twof" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8328" title="家居裝潢清潔維修服務公司網站模板" target="_blank">[前端模板] 家居裝潢清潔維修服務公司網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8327" title="清新配色個人求職履歷引導頁模板" target="_blank">[前端模板] 清新配色個人求職履歷引導頁模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8326" title="設計師創意求職履歷網頁模板" target="_blank">[前端模板] 設計師創意求職履歷網頁模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8325" title="現代工程建築公司網站模板" target="_blank">[前端模板] 現代工程建築公司網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8324" title="教育服務機構響應式HTML5模板" target="_blank">[前端模板] 教育服務機構響應式HTML5模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8323" title="網上電子書店商城網站模板" target="_blank">[前端模板] 網上電子書店商城網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8322" title="IT技術解決互聯網公司網站模板" target="_blank">[前端模板] IT技術解決互聯網公司網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8321" title="紫色風格外匯交易服務網站模板" target="_blank">[前端模板] 紫色風格外匯交易服務網站模板</a> </div> </li> </ul> <ul class="threef" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3078" target="_blank" title="可愛的夏天元素向量素材(EPS+PNG)">[PNG素材] 可愛的夏天元素向量素材(EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3077" target="_blank" title="四個紅色的 2023 畢業徽章的向量素材(AI+EPS+PNG)">[PNG素材] 四個紅色的 2023 畢業徽章的向量素材(AI+EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3076" target="_blank" title="唱歌的小鳥和裝滿花朵的推車設計春天banner向量素材(AI+EPS)">[banner圖] 唱歌的小鳥和裝滿花朵的推車設計春天banner向量素材(AI+EPS)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3075" target="_blank" title="金色的畢業帽向量素材(EPS+PNG)">[PNG素材] 金色的畢業帽向量素材(EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3074" target="_blank" title="黑白風格的山脈圖示向量素材(EPS+PNG)">[PNG素材] 黑白風格的山脈圖示向量素材(EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3073" target="_blank" title="不同顏色披風和不同姿勢的超級英雄剪影向量素材(EPS+PNG)">[PNG素材] 不同顏色披風和不同姿勢的超級英雄剪影向量素材(EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3072" target="_blank" title="扁平風格的植樹節banner向量素材(AI+EPS)">[banner圖] 扁平風格的植樹節banner向量素材(AI+EPS)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-materials/3071" target="_blank" title="九種漫畫風格的爆炸聊天氣泡向量素材(EPS+PNG)">[PNG素材] 九種漫畫風格的爆炸聊天氣泡向量素材(EPS+PNG)</a> </div> </li> </ul> <ul class="fourf" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8328" target="_blank" title="家居裝潢清潔維修服務公司網站模板">[前端模板] 家居裝潢清潔維修服務公司網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8327" target="_blank" title="清新配色個人求職履歷引導頁模板">[前端模板] 清新配色個人求職履歷引導頁模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8326" target="_blank" title="設計師創意求職履歷網頁模板">[前端模板] 設計師創意求職履歷網頁模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8325" target="_blank" title="現代工程建築公司網站模板">[前端模板] 現代工程建築公司網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8324" target="_blank" title="教育服務機構響應式HTML5模板">[前端模板] 教育服務機構響應式HTML5模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8323" target="_blank" title="網上電子書店商城網站模板">[前端模板] 網上電子書店商城網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8322" target="_blank" title="IT技術解決互聯網公司網站模板">[前端模板] IT技術解決互聯網公司網站模板</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="https://www.php.cn/zh-tw/toolset/website-source-code/8321" target="_blank" title="紫色風格外匯交易服務網站模板">[前端模板] 紫色風格外匯交易服務網站模板</a> </div> </li> </ul> </div> <script> var mySwiper = new Swiper('.swiper3', { autoplay: false,//可选选项,自动滑动 slidesPerView : 'auto', }) $('.wzrfourlTab>div').click(function(e){ $('.wzrfourlTab>div').removeClass('check') $(this).addClass('check') $('.wzrfourList>ul').css('display','none') $('.'+e.currentTarget.dataset.id).show() }) </script> </div> </div> </div> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>公益線上PHP培訓,幫助PHP學習者快速成長!</p> </div> <div class="footermid"> <a href="https://www.php.cn/zh-tw/about/us.html">關於我們</a> <a href="https://www.php.cn/zh-tw/about/disclaimer.html">免責聲明</a> <a href="https://www.php.cn/zh-tw/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1732354124"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all'/> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> </body> </html>