Написал код, входа на сайт: 1.На сервере создаётся страница (Адресация всегда идёт на index.php - он один на сайте). 1.1.Определяет отправленную переменную через GET (site.com/Вход (выглядит), site.com/index.php&id=Вход (на самом деле) ) 1.2.Выполняет нужные скрипты, чтобы создать страницу и отправляет её пользователю. Проблемы выше нету, а вот со входом есть. 2.После заполнения формы отправляется на страницу с авторизацией Сама форма: HTML: <form action = "login/login.php" method="post" autocomplete="on"> <tr><td> <p><h2>Вход:</h2></p> </td></tr> <tr><td> <p>E-mail: </p> <input name="e-mail_login" type="text" autocomplete="on" size="30" maxlength="25" value=""> </td></tr> <tr><td> <p>Пароль: </p> <input <?php echo "$error[1]"?> name="password" type="password" autocomplete="on" size="30" maxlength="25" value=""> </td></tr> <tr><td> <table> <tr><td> <input name="submit" type="submit" value="Войти"> </td><td> <a href=Восстановить_пароль>Забыл пароль?</a> </td></tr> </table> </form> Куда она отправляется ибо login.php (лежащий в /login/) исключение из п.1, адресация идёт на страницу /login/login.php, т.е. ничего другого, только страница, код которой написан ниже. PHP: <?php if ($_POST['submit'] == 'Войти') { if ($_POST['e-mail_login'] !== '' and $_POST['password'] !== '') { $email = $_POST['e-mail']; //БД не обращайте внимания всё работает $z = "SELECT * FROM `users` WHERE `e-mail` = '".$_POST['e-mail_login']."'"; //Создаёт запрос БД $a = mysql_query("$z"); //Отправляет запрос БД $b = mysql_fetch_array( $a ); //Создаёт массив $b // if (password_verify($_POST['password'], "$b[3]")) { //$b[3] - хэш-сумма пароля $array = array_merge(range('A','Z'),range('a','z'),range('0','9')); $c = count($array); for($i=0;$i<24;$i++) {$key .= $array[rand(0,$c)];} //Создание ключа вроде sad93IpbMEKKl7rMBPjalVU4 //БД не обращайте внимания всё работает $request = "update users set keylogin = '".$key."' where id = '".$b[0]."'"; //Обновляет БД: ключ mysql_query($request); // Отправляет этот запрос. // setcookie("TestCookie", $key); echo 'Авторизация выполнена!'; echo "<script>location.href='../index.php'</script>"; } else { echo $b[3]; $error[7] = ('<font color="red"> Неправильный логин или пароль!</font>'); }; } else { $error[0] = ('id="user" required'); $error[1] = ('id="user" required'); $error[7] = ('<font color="red"> Заполните нужные поля!</font>'); echo "<script>location.href='Вход'</script>"; }; }; ?> Авторизация проходит, на короткий момент пишет 'Авторизация выполнена!' и отправляет на главную, но cookie не сохраняет. Где ошибка? Сразу говорю, что не опытен и с cookie на вы. Всё остальное идет хорошо, только с cookie проблема.
Посмотри через fiddler как там куки ведут себя. Ещё в инструментах разработчика google chrome или firebug можно посмотреть как там куки ставятся или нет. Смотри протокол HTTP.
Кука сохраняется. Только не для всего сайта, а для текущей директории. Браузер может хранить отдельные куки для каждой папки! В setcookie надо указать параметр path равный '/' - тогда кука будет действовать на всё.
Благодарю всех, кто помогал, проблема была в .htaccess, загадочном для меня файле. Стал переписывать сайт без него всё работает.
Проблема в твоём непонимании, а не в .htaccess. Сказано тебе: кука привязана к "папке". Ставь куку в корневую папку и всё будет ок. Сейчас ты вместо того, чтобы усвоить этот момент, просто отказался от mod_rewrite, то есть перестал использовать "виртуальные папки". Проблема не решена, а затаилась до следующего раза.
1.Я не обвинят .htaccess, а говорил, что этот файл загадочный для меня, то есть я не знаю, как работает, его язык, не знаю как перенаправлять, как писать. Разбираться с ним у меня времени нету, поэтому решил переписать весь сайт. 2.Также говоря от там, что ошибка была в .htaccess значит, что ошибка не в коде, он бы работал и так, а именно в этом файле. Помните об исключение, о котором я писал, так я соврал, т.к. это исключение не работало именно в .htaccess, почему не знаю. Вместо того, чтобы загрузить это исключение, он загружал index.php в корне, а потом и запись в cookie, но так как страница была не пуста, то cookie логично не записываются. Поставив cookie в корень ничего бы не случилось, так как у меня единственная доступная страница index.php и не важно, где они лежат в корне не в корне, не запустилось бы. Да согласен, что . Но мне главное написать сайт, а без .htaccess сайт не работает, а переписывать .htaccess, я не знаю как. Да ещё, я же говорил . У меня написал сайт чёрт ногу сломает и всё равно бы переписывал, я же учусь. А, что-то добавлять и изменять - это тяжело и проще переписать. Проблему решил следующим образом, переписал весь сайт на более "логичный" язык и приятный на глаз, без .htaccess. Теперь всё также, но без этого файла всё работает, а файлы с cookie вынес в отдельную директорию, чтобы, когда буду ставить мой любимый файл, весь этот процесс был намного для меня гибче и легче. Как говорится "Москва не сразу строилась" и мне сейчас нету смысла использовать коды, которые лучше подошли для этого, я не смогу, уже пытался - это как сразу учится решать интегралы, даже если не знаешь сложения.