Winultra
@Winultra

Не работает Cookie?

Ребята вообщем проблема такая, тут походу я дурак, тока не пойму в чём.
Подскажите в чём дурак.
function generateCode($length=6) {

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";

    $code = "";

    $clen = strlen($chars) - 1;  
    while (strlen($code) < $length) {

            $code .= $chars[mt_rand(0,$clen)];  
    }

    return $code;

}

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } 
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

if (empty($login) AND empty($password)){exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");}

$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$password = trim($password);
$suffix = "__WinSuffix";
$prefix = "Ultra18_____";
$passwordCod = md5(strrev($prefix.$password.$suffix));
include("../config.php");
$result_user = mysql_query("SELECT id,login,password FROM `users` WHERE `login`='$login' AND `password` = '$passwordCod'"); 
$r_user_panel = mysql_fetch_assoc($result_user);
$passwordBD = $r_user_panel['password'];
$loginBD = $r_user_panel['login'];
$idBD = $r_user_panel['id'];
if($passwordBD === $passwordCod){
$hash = md5(generateCode(10));
mysql_query("UPDATE users SET hash='".$hash."'WHERE id='$idBD'");

setcookie("login" ,$loginBD ,time() + 60*60*24*365);
$_COOKIE['login'] = $loginBD;

setcookie("password" ,$hash ,time() + 60*60*24*365);
$_COOKIE['password'] = $hash;

setcookie("id" ,$idBD ,time() + 60*60*24*365);
$_COOKIE['id'] = $idBD;
$_SESSION['login'] = $loginBD;
$_SESSION['password'] = $hash;
$_SESSION['id'] = $idBD;
}else{
exit("Извините, введённый вами логин или пароль неверный.");
}

вот такой простенький код.
и он не сохраняет Coockie, а сессия работает.
в чём прикол?
  • Вопрос задан
  • 2313 просмотров
Решения вопроса 1
AndruSender
@AndruSender
Привет, при работе с куками не юзается прямой доступ как с сессиями, т.е.
$_COOKIE['id'] = $idBD;зашет в переменную но не в сами КУКИ!!!!

Юзай
setcookie("id", $idBD, time()+3600*24*30);  /* срок действия 1 месяц */

php.net/manual/ru/function.setcookie.php
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
пароль в куках 80 уровень безопасности.

Указывайте страницу и домен.
И новые куки "видно" только после перезагрузки страницы.

Если перед вызовом функции клиенту уже передавался какой-либо вывод (тэги, пустые строки, пробелы, текст и т.п.), setcookie() вызовет отказ и вернет FALSE.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы