2015-01-14 4 views
1

У меня есть форма входа в систему с пометкой меня, которая устанавливает адрес электронной почты пользователя в файле cookie, который затем я хочу автоматически заполнить имя пользователя при следующем входе в систему. Кроме того, когда я использую firbug он показывает путь к файлу cookie в каталоге, где находится страница login.php. index.php не находится в том же каталоге, что и каталог login.php.PHP Запомнить меня Cookie Issue

У меня есть 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> 

Я могу видеть, что куки устанавливаются, но когда я пытаюсь повторить печенье (адрес электронной почты), то ди ничего не дает.

Я знаю, что я, вероятно, не делаю этого наилучшим образом, но он работал, и теперь он перестает работать. Любые предложения о том, что я делаю неправильно?

EDIT: Когда я использую Firebug я вижу это на вкладке Cookies:

  • Имя: Электронный адрес
  • Значение: адрес электронной почты
  • Путь: это другой путь, чем на текущей странице я «м на

var_dump($_COOKIE['email']) Когда я это показать NULL

+3

перестал работать ** КАК **? неправильный адрес электронной почты? нет адреса электронной почты? Проделали какую-либо базовую отладку, например, посмотрели, установлен ли cookie? Какое значение в нем было установлено? –

+0

Извините, я обновлю свой вопрос, но да, он устанавливает 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 или empty string, $ userEmail устанавливается в NULL или пустую строку, функция isset() проверяет, не указана ли данная переменная в области вызова функции. если вы хотите проверить пустые строки. use empty ($ var) –

+0

Итак, когда я удаляю перенаправление из 'login.php' и эхо cookie на странице login.php, он echos адрес электронной почты, но как только я нахожусь на другой странице, он не повторяет 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

Смежные вопросы