2017-04-11 58 views
-1

創建文本文件,不存儲任何內容。Cookie記錄[PHP]

<?php 
$cookie = $_COOKIE['PHPSESSID']; 
$file = fopen('cookie.txt', 'a'); 
fwrite($file, $cookie . "\n\n"); 
?> 

編輯:

找到了解決辦法

<?php 
session_start(); 
$cookie = $_COOKIE['PHPSESSID']; 
file_put_contents("cookie.txt", $cookie, FILE_APPEND); 
?> 

什麼是第一套代碼中的錯誤?

回答

1

有幾個問題。

1)會話ID假定你有一個會話正在運行。我沒有看到session_start();,所以我會認爲cookie永遠不會被設置。

2)$_COOKIE['PHPSESSID']是非常不可靠的。使用session_id()不是與session_start()

+0

我做不太明白你設定會話的意思。 –

+0

您正在訪問一個稱爲PHPSESSID的變量,它是Php會話ID的簡寫形式,只有在會話正在運行時纔會設置此ID(會話是一種特殊標記的瀏覽器設置,它像Cookie一樣),您正試圖訪問會話ID運行 – Forbs

0

此代碼是正確的組合,問題是cookie的值是零,因爲會議沒有設置,用戶應該首先去的是具有內置的cookie值發起會話開始一個PHP頁面會議

<?php 
session_start(); 

而且添加代碼來檢查,如果這庫克is_null

+0

cookie的會話不同於'session' –

+0

我不確定你是什麼意思,但是OP提到的名爲PHPSESSID的cookie是PHP會話 – SirNarsh

0

找到了解決辦法:

<?php 
session_start(); 
$cookie = $_COOKIE['PHPSESSID']; 
file_put_contents("cookie.txt", $cookie, FILE_APPEND); 
?> 
+0

設置的主要問題是session_start(); 。 file_put _contents和fwrite應該可以工作。你應該注意的另一個問題是session_start會設置cookie,但是$ _COOKIE ['PHPSESSID']仍然是空的,直到用戶再次刷新,以便瀏覽器發送cookie。理想情況下session_start應該在這個頁面之前的另一個頁面中保存會話 – SirNarsh

+0

file_put_contents似乎更有效,變量更少,行數更少,更直觀(至少在我看來)我錯了嗎?哪一種更好的做法? –

+0

file_put_contents對於這個特定場景是更有效的,你是對的,代碼少了,但我只是說這不是問題。 – SirNarsh