2015-01-14 66 views
1

我有一個記住我的登錄表單複選框,它將用戶電子郵件設置爲一個cookie,然後我想在他們下次登錄時自動填寫用戶名。另外,當我使用firbug它顯示了login.php頁面所在目錄中cookie的路徑。 index.phplogin.php目錄不在同一個目錄中。PHP記住我Cookie問題

所以我有登錄表單index.php頁面。當用戶提交表單它調用login.php具有這種片的代碼:

if (isset($_POST['email'])) { 
     if (isset($_POST['remember'])) { 
      setcookie("email", $_POST['email'], time() + 9999999); 
      $_COOKIE['email'] = $userEmail; 
     } 
    } 

,然後在index.php代碼我有這樣的代碼:

$userEmail = $_COOKIE['email']; 

,然後我使用$userEmail變量自動填充在這樣的用戶名字段:

<div class="form-group <?php if(isset($userEmail)) { echo $addClass; }?>" > 
    <input type="email" name="email" id="email" class="form-control input-lg" placeholder="Email Address" value="<?php if(isset($userEmail)) { echo $userEmail; } ?>"> 
</div> 

我可以看到,該cookie被設置,但是當我嘗試呼應的cookie(電子郵件地址)這二一無所有。

我知道我可能沒有以最好的方式做到這一點,但它曾經工作,現在它停止工作。任何建議,我做錯了什麼?

編輯:當我使用Firebug我看到這個Cookies標籤:

  • 名稱:電子郵件
  • 值:電子郵件地址
  • 路徑:這是比當前頁面我不同的路徑「關於

m如果我var_dump($_COOKIE['email'])它表明NULL

+3

停止工作** **如何?輸錯了電子郵件地址?沒有郵箱地址?完成任何基本的調試,比如看看cookie是否被設置?它有什麼價值? –

+0

對不起,我會更新我的問題,但是,是的,它將cookie設置爲登錄時輸入的用戶電子郵件地址。我可以看到cookie已設置,但它不會在輸入字段中顯示電子郵件地址迴應cookie。 – iamthestreets

+0

爲什麼你有'$ _COOKIE ['email'] = $ userEmail;'?如果它做了任何事情,它會用一個不存在的變量覆蓋你的值。 – jeroen

回答

0
if (isset($_POST['email'])) { 
     if (isset($_POST['remember'])) { 
      setcookie("email", $_POST['email'], time() + 9999999); 
      $_COOKIE['email'] = $userEmail; 
     } 
    } 

看線$_COOKIE['email'] = $userEmail;這應該是$userEmail = $_COOKIE['email'];,因爲在那一點$userEmail還沒有給出一個值,所以你基本上設置$_COOKIE['email']爲空值。

要麼,或者你需要設置$_COOKIE['email'] = $_POST['email'];

+0

對不起,這沒有改變任何信息 – iamthestreets

+0

$ _POST ['email']被設置爲null或空字符串值, $ userEmail被設置爲NULL或空字符串,isset()函數只檢查被調用的變量是否在函數調用的作用域中定義。如果你想檢查空字符串。使用empty($ var) –

+0

因此,當我從login.php中刪除重定向並在login.php頁面中回顯cookie時,它會回覆電子郵件地址,但是一旦我在另一個頁面上,它就不會響應Cookie – iamthestreets

0

我想:

if(isset($userEmail))

應該是:

if(isset($userEmail) && !empty($userEmail)) 
+0

對不起這沒有奏效 – iamthestreets

0

感謝所有的答案,但這種改變已經固定問題。它將cookie的路徑設置爲login.php頁面所在的目錄,因此我必須爲所有目錄設置cookie的路徑。

我改變了這個:

if (isset($_POST['email'])) { 
    if (isset($_POST['remember'])) { 
     setcookie("email", $_POST['email'], time() + 9999999); 
     $_COOKIE['email'] = $userEmail; 
    } 
} 

這樣:

if (isset($_POST['email'])) { 
     if (isset($_POST['remember'])) { 
      $userEmail = $_POST['email']; 
      setcookie("email", $userEmail, time() + 9999999, "/"); 
     } 
    } 

我加"/"setcookie