2015-12-18 42 views
2

我試圖弄清楚setcookie()如何在PHP中工作,所以我讓我爲測試目的的簡單腳本。腳本唯一要做的就是要求一個用戶名,然後爲它創建一個cookie。當你再次輸入相同的用戶名時,它應該歡迎你回來。如果這是您第一次輸入該用戶名,則應首次歡迎您。這是我做的:php setcookie()不能正常工作

這是表格;

<!DOCTYPE html> 
<html lang="nl"> 
<head> 
<title>XXL Computer winkel</title> 
</head> 
<body> 
<h3>php lab 12</h3> 
<table border=0 cellpadding=0 cellspacing=0 > 
<form name="orderform" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> 
<tr> 
<td>gebruikersnaam</td> 
<td><input type="text" name="user" /></td> 
<td><input type="submit" name="send" value="inloggen" /> </td> 
</tr> 
</form> 
</table> 
<?php 

include ("cookiefuncties.php"); 

welkom(); 

?> 
</body> 
</html> 

cookiefuncties.php看起來是這樣的:

<?php 

function welkom() 
{ 

if(isset($_POST['user'])) 
{ 
    $cookie_value = $_POST['user']; 
    $cookie_name = "gebruikersnaam"; 
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); 
} 
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] === ($_POST['user'])) 
    { 

     echo "Welcome back " . $_COOKIE[$cookie_name] . "!"; 
    } 
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] != ($_POST['user'])) 
    { 

     echo "Welcome " . $_COOKIE[$cookie_name] . "This is your first visit"; 
    } 
} 

?> 

問題是,Cookie是總是「一個名字後期。因此,我需要刷新頁面,並始終歡迎用戶回來,而不是說它是第一次訪問。我知道有一個選項可以「強制」刷新,但我不知道該如何解決。

問候, 倫納特

PS。不介意間距。我還是不知道如何在這個網站上右:-(

+0

你有你必須檢查該用戶設置cookie之前更改每個用戶在每個請求的cookie名稱餅乾的存在 – siddhesh

+0

我是不是在幹什麼克已經?如果我使用其他名稱登錄並刷新,我將獲得新名稱。這只是我希望它在沒有刷新的情況下工作 – Lennart

+0

您的scenerio類似於follow第1個用戶輸入名稱並點擊提交您必須檢查用戶名是否已經輸入並顯示相應的消息? – siddhesh

回答

2

你必須保持一個cookie爲每個用戶,只要設定爲每個新用戶的價值true一個cookie試試這個代碼在你cookiefuncties.php

<?php 

function welkom() { 

    if(isset($_POST['user'])) { 
     $cookie_name = $_POST['user']; 
     setcookie($cookie_name, true, time() + (86400 * 30), "/"); 
     if(isset($_COOKIE[$cookie_name]) && true == $_COOKIE[$cookie_name]) { 
      echo "Welcome back " . $_POST['user'] . "!"; 
     } else { 
      echo "Welcome " . $_POST['user'] . "This is your first visit"; 
     } 
    } 
} 

?> 
+1

謝謝你的迴應!這工作:-)一件事。如果一個名字(例如Giel)第一次被設置,我也會得到注意:未定義的索引:第8行中的C:\ xampp \ htdocs \ unit4 \ cookiefuncties.php中的Giel – Lennart

+0

@Lennart你是對的。 :-)我沒有啓用警告,所以我沒有得到這個。我更新了代碼。請再試一次。 –

+0

工程就像一個魅力!感謝您的寶貴幫助! :-) – Lennart

1

設置每個用戶的cookie的唯一名稱,並檢查它存在與否。

if(isset($_POST['user']) and !empty($_POST['user'])) 
    { 

     $user = $_POST['user']; 
     // set the unique cookie name 
     $cookie_name = "gebruikersnaam_$user";  
     $setCookie = true; 

     if(isset($_COOKIE[$cookie_name]) and $_COOKIE[$cookie_name] = $user) 
     { 
      echo "Welcome Back ".$user; 
     }else 
     { 
      echo "This is your first visit $user"; 
     } 

     setcookie($cookie_name, $user, time() + (86400 * 30), "/"); 

    } 
+0

謝謝你的答覆!如果我粘貼在我的功能,我會得到錯誤。因爲$ user需要提交表單。然而,我在我的劇本中添加了一行; $ _COOKIE [$ cookie_name] = $ cookie_value;這使得它現在可以直接提交後發佈名稱。問題仍然是它總是「歡迎名字回來」,即使它是第一次輸入。 – Lennart