看板 PHP 關於我們 聯絡資訊
※ 引述《Harifucks (疝氣)》之銘言: : 1. <?php : 2. session_start(); : 3. if (!session_is_registered('A')) { : 4. session_register('A'); 以一本以PHP 5為書名的書來說,這個範例其實不好。 透過$_SESSION來存取session資料,基本上就不需要(不應該)再使用 session_is_registered()或者session_register()了。 : 5. $_SESSION['A'] = 1; : 6. }else{ : 7. $_SESSION['A']++; : 8. } : 9. echo "Session id = ".session_id()."<p>"; : 10. echo "變數值 = ".$_SESSION['A']."<p>"; : 11. echo "<A HREF=\"./18-6.php\"?SID TARGET=newwin>開新視窗</A>"; : 12. ?> : 抱歉這是從PHP5 & MySQL4入門學習指南擷取的範例18-6,其中的第11行我 : 有幾個問題不太懂: : 第一為什麼點選"開新視窗"這個超連結所出來的Session ID和 : 原本的Session ID一樣,哪一部份完成這件事? 這就是session的功用所在。它讓你的程式可以跨request讀取到相同的資料。 你在a.php存入某個資料到session,你的b.php或者第二次呼叫a.php的時候, 都讀得到這個資料。 session_id()回傳的是這個session的唯一識別字串,在同一個session裡面, 這個識別字串都會相同。至於是哪一部分完成這件事,以你看到的狀況來說, 是cookie。PHP會產生session識別字串然後透過cookie送給你的瀏覽器。如果 你的瀏覽器接受這個cookie,這個session識別字串就會透過cookie每次回傳 給你的PHP程式,你的程式就因此能夠取回這個session裡面的資料。 : 第2個問題:"?SID"是什麼,為什麼我把"?SID"拿掉之後網頁的結果還是一樣! SID是PHP內建的一個常數,如果cookie裡面"沒有"session識別字串的話,SID的值 就會是name=ID。name是在cookie或者url裡面用來參照到session識別字串的 名稱,預設值是PHPSESSID。ID就是你的session識別字串。如果cookie裡面"有" session識別字串,SID的值就是空白。SID是用來在使用者不接受cookie的時候 能夠繼續使用session功能的變通辦法。 你拿掉?SID之後的結果還是一樣,那是因為你的瀏覽器有接受PHP傳送的cookie。 在這個狀況下,session識別字串不需要透過url來傳遞也可以正常作用,所以 SID的值是空白字串,拿掉也沒有差別。 : 第3個問題:TARGET是什麼有人可以解釋一下嗎?至少在我1998年買的HTML書籍 : 沒有這個東西! <a>標籤的target屬性很早很早就有了,你買的書裡面沒講到是作者的錯。 : 感謝回答! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.153.37