Не устанавливаются Куки, где ошибка?

355
11 июня 2017, 19:25

Не работают куки, точнее не устанавливаются даже. Работаю на Денвере. Помогите плиз.

////////////////////////////////////////////////////

<form action="registration/action/login.php" method="post">
Логин:<br/>
<input type="text" class="form-control"  placeholder="Логин" name="login" required="required"/>
  <br/>
Пароль:<br/>
<input type="password" placeholder="Пароль" name="password" required="required"/>
  <br/>
Запомните меня:<br/>
<input type="checkbox" name="member"/>
  <br/>
  <br />
<a href="Index.php?id=return_pas">Восстановить пароль</a>
  <br />
  <br/>
<input type="submit"  name="submit" value="Вход" />
</form>

////////////////////////////////////////////////////////////////////

<?php
include "../../config.php";
// После нажатия кнопки ВХОД:
if (isset($_POST['submit'])) {
  $login = clearData($_POST['login']);
  $password = clearData($_POST['password']);
  //$post = clearData($_POST['member']);
  // Если поля пустые:
  if (empty($login) or empty($password)) {
  $_SESSION['msg_log'] = "</br>Заполните все поля";
  header("Location:../../index.php");   
    }

  // Если не пустые:
  if (!empty($login) and !empty($password)) {
    $password = md5($password);
    $sql = "SELECT id FROM users WHERE login = ('$login') AND password = ('$password') AND activation = '1'";
    $check_data = mysql_query($sql) or die ("Mistake Check_data");
    $result = mysql_fetch_array($check_data);

    if (empty($result['id'])) {
    //если пользователя с введенным логином не существует
        $_SESSION['msg_log'] = "</br>Логин или Пароль неверный. <br> Возможно вы не активировали аккаунт.";
    header("Location:../../index.php");
}
    else {
      if (isset($_POST['member'])) {
        setcookie("login", $login, time()+3600);
        setcookie("password", $password, time()+3600);
      }

      $sess = md5(microtime());
      $sql_update = "UPDATE users SET sess='$sess' WHERE login = '$login'";
      $sql_update = mysql_query($sql_update) or die ("Mistake sql_update"); 
      $_SESSION['sess'] = $sess;
      $_SESSION['login'] = $login; // "это нужно??"
      $_SESSION['msg_log'] = "Ты вошел";
      header("Location:../../index.php");
      }  
    }
}
?>
Answer 1

УРА Товарищи! Решил проблему.

setcookie("login", $login, time()+3600, '/');
setcookie("password", $password, time()+3600, '/');

Не знаю механизма как это сработало, но примерно так:

мы символом `'/'` указали путь к корню нашего домена для сохранения КУКИ. А так бы она сохранялась там же где и файл обработчик (т.е. Индекс_ный файл бы ее не видел, как я понял). Возможно напутал, прочел это на англоязычном STACK и примерно так понял перевод.

3 дня потрачено чтобы вставить 1 символ в нужном месте. Добро пожаловать в Мир Программирования)

Answer 2

Думаю проблема в том что нужно устанавливать cookie глобально для всех url для этого нужно задать дополнительный параметр "/":

    setcookie("login", $login, time()+3600, "/");
    setcookie("password", $password, time()+3600, "/");
READ ALSO
Использование php переменных в mysql

Использование php переменных в mysql

Можно ли в mysql запросе вместо таблицы указать переменную php?

286
PHP цикл для элементов HTML

PHP цикл для элементов HTML

Здравствуйте!

203
вопрос про массив php

вопрос про массив php

Здравствуйте, я выбираю из бд данные и помещаю их в массив кодом:

224
Как сделать, чтоб select работал в регистрации

Как сделать, чтоб select работал в регистрации

Выдает ошибку, что надо поменять? input нету, так как это опции

300