2013-09-01 171 views
1

出於某種原因,我似乎無法在我的一個PHP文件中設置cookie。所有的代碼工作正常,除了拒絕設置cookie。我用不同的參數放置了不同版本的cookie設置,但它似乎沒有什麼區別。最重要的是,我可以在相同目錄中的單獨PHP文件中使用同一行代碼來設置cookie。我試過在不同的地方放置setcookie(),我仍然得到相同的結果。我錯過了什麼嗎?PHP:無法設置Cookie

<?php 
$table_name="lfgs"; 
$name=$_POST['name']; 
$event="["; 
$level=$_POST['level']; 
$comments=$_POST['comments']; 
$hours=$_POST['hours']*60*60; 
$minutes=$_POST['minutes']*60; 
$time=$hours+$minutes+time(); 

setcookie("remember", $name, $time, 'www.domain.com', '/'); 

if(isset($_POST['event'])){ 
    if (is_array($_POST['event'])) { 
     foreach($_POST['event'] as $value){ 
      $event = $event . "\"" . $value . "\","; 
     } 
    } else { 
     $value = $_POST['event']; 
     $event = $event . "\"" . $value . "\"]"; 
    } 
} else { 
    $event = ""; 
} 

if($event[strlen($event)-1] == ',') { 
    $event = substr_replace($event ,"]",-1); 
} 

$con=mysqli_connect("domain.com","username","password","database"); 

$req="INSERT INTO $table_name(name, event, level, comments, time) VALUES ('$name', '$event', '$level', '$comments', '$time')"; 
mysqli_query($con,$req); 

mysqli_close($con); 

foreach($_COOKIE as $c) { 
    echo $c . "<br />"; 
} 
?> 

編輯:這是整個文件中的所有代碼。

+0

您是否嘗試過在Chrome或Firefox中使用開發人員工具中的Cookie? –

+0

該cookie不會出現。就像電話被忽略了一樣。 Chrome的開發工具表示沒有cookie。 – Kyle

回答

1

按照PHP參考,使用setcookie功能正確的方法是

bool setcookie (string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]]) 

你不是swaped的$路徑和$域參數?

嘗試

setcookie("remember", $name, $time, '/', 'www.domain.com'); 
+0

這樣做。它一定爲時已晚。 – Kyle

0

你確定php解釋器不會在setcookie()調用之前發送字符嗎?該函數發送一個HTTP標題,所以它必須在頁面上的任何打印之前出現。

+0

除非$ _POST變量可能影響它,否則您看到的是整個頁面的所有代碼。 – Kyle

1

嘗試

setcookie("remember", $name, '/', $time); 
+0

我沒有嘗試的變體,但仍然無濟於事。 – Kyle

1

我dont't明白你想要做什麼,但它會不會工作你的方式。 永遠記得:你在服務器端上使用PHP工作。 所以要設置一個cookie然後測試它是否工作,您需要總是兩個步驟(因爲您在服務器端): 第一步是設置cookie。 然後在下一個請求,你可以檢查你的cookie是否包含在全局$ _COOKIE數組中。如果是,那麼確定,如果不是,那麼客戶/用戶不允許設置cookie。

如果你需要在「一步」中完成,你應該使用JavaScript。類似這樣的: 在提交表單時,設置cookie,然後傳播提交操作(將數據發送到服務器)。 JQuery支持設置和讀取cookie的一個很好的解決方案。

0

根據我的經驗,如果您在頁面上有任何活動會話,它將不允許您創建PHP cookie。開始一個新的空白頁面並以此方式進行測試。

你應該可以在新的通用頁面上設置一個cookie。然後回到開始會話的其他頁面。在會話頁面中回覆該設置cookie的詳細信息,您將獲得存儲值,沒有問題。

您可以調用cookie,但似乎無法在活動會話頁面中創建它們。至少,我不能用我當前的系統設置/配置。