Долгое время не могу понять, почему не считываются куки сайта. Пишутся, но не читаются. Вот код Код (PHP): <?php session_start(); SetCookie('login', $login, time() +60, "/"); SetCookie('password', $pass, time() +60, "/"); require ('connect.php'); $login = @$_COOKIE['login']; $password = @$_COOKIE['password']; $do = $_GET['do']; $page = $_GET['page']; if($page == ''){ $page='main'; } $r_email = $_POST['mail_reg']; $r_pass1 = $_POST['pass1_reg']; $r_pass2 = $_POST['pass2_reg']; $r_login = $_POST['login_reg']; $r_name = $_POST['name_reg']; $r_firstname = $_POST['firstname_reg']; $r_city = $_POST['city_reg']; $r_school = $_POST['school_reg']; $r_class = $_POST['class_reg']; $r_about = $_POST['about_reg']; $number = $_GET['number']; ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="Неофициальный сайт Гиманзии №2 им. И.П.Павлова г.Рязань." /> <meta name="keywords" content="Рязань, школа, №, 2, гимназия, сайт, неофициальный, имени, им, Павлова, Ордена, знак, почета, рязань, соборная, духовное, училище, gymnasyon, gymnasium, #, Pavlov, ryazan, rzn, рзн, sobornaya" /> <meta name="author" content="Маслов Павел, Ходакова евгения, Байзер Маргарита" /> <title> Неофициальный сайт Гиманзии №2 г.Рязань </title> <link href="css/style.css" rel="stylesheet" type="text/css" media="screen" /> </head> <body> <center> <ul id="navigation" class="nav-main"> <li>[url="index.php"]Главная[/url]</li> <li>[url="index.php?page=news"]Новости[/url]</li> <!-- <li class="list"><a>Разделы</a> <ul class="nav-sub"> <li>[url="#"]Спорт[/url]</li> <li>[url="#"]Точные науки[/url]</li> <li>[url="#"]Гуманитарные науки[/url]</li> <li>[url="#"]Естественные науки[/url]</li> <li>[url="#"]Иностранные языки[/url]</li> </ul> </li>--> <li>[url="index.php?page=samupr"]Школьное самоуправление[/url]</li> <li>[url="index.php?page=alma_matter"]Alma Matter[/url]</li> <li class="list"><a>О нас</a> <ul class="nav-sub"> <li>[url="index.php?page=school"]О школе[/url]</li> <li>[url="index.php?page=developers"]Разработчики[/url]</li> </ul></li> <li class="list"><a>Учителя</a> <ul class="nav-sub"> <li>[url="index.php?page=director"]Директор[/url]</li> <li>[url="index.php?page=teachers_middle"]Учителя средней и старшей школы[/url]</li> <li>[url="index.php?page=teachers_young"]Учителя младшей школы[/url]</li> <li>[url="index.php?page=gpd"]Группа продленного дня[/url]</li> </ul></li> </ul> </center> <br /> <div class="wrapper"> <div class="rigth_column"><?php if (!empty($login)) { echo '[url="index.php?t=' . $t . '&do=exit"]Выйти[/url]'; if ($login == 'admin') { echo '<br />[url="index.php?t=admin"]Админка[/url]';} echo '<br />[url="index.php?t=comments"]Оставить комментарий[/url]'; } else { $login = $_POST['login']; $password = md5($_POST['password']); if (isset($login) && isset($password)) { if (!empty($login) && !empty($password) && $login != "" && $password != "") { $login_query1 = mysql_query("SELECT * FROM `users` WHERE `login` = '$login'"); $login_array1 = mysql_fetch_array($login_query1); if (!empty($login_array1)) { $pass_query = mysql_query("SELECT * FROM `users` WHERE `login` = '$login '"); while ($pass_array = mysql_fetch_array($pass_query)) { $pass = $pass_array['password']; $id = $pass_array['id']; } if ($pass == $password) { $_SESSION["login"] = $login; $_SESSION["password"] = $password; SetCookie('login', $login, time() +60, "/"); SetCookie('password', $pass, time() +60, "/"); echo '[url="index.php?t=' . $page . '&do=exit"]Exit[/url]'; $is = 's'; if ($login == 'admin') { echo '<br />[url="index.php?t=admin"]Админка[/url]';} echo '<br />[url="index.php?t=comments"]Оставить комментарий[/url]'; } else { echo 'Неверныйs пароль или логин'; } } else { echo 'Неверный пароль или логин'; } } else { echo 'Неверный пароль или логин'; } } if (empty($is)) { echo '<center><h3 style="margin: 1px;">вход</h3></center><br /> <form method="POST"> <label>Логин: </label><input name="login" type="text" /><br /> <label>Пароль:</label><input name="password" type="password" /><br /> <center><input type="submit" value="Войти" /></center> </form><br /> [url="index.php?t=reg"]Регистрация[/url]'; } } $ar = mysql_query("SELECT * FROM `news` ORDER BY `id` DESC LIMIT 2"); while ($mqrow = mysql_fetch_array($ar)) { $id_sn = $mqrow['id']; $t_s1 = htmlspecialchars_decode($mqrow['name']); $m_s1 = htmlspecialchars_decode($mqrow['text']); //разбиваем на массив $arar_str = explode(" ", $m_s1); //берем первые 10 элементов $arar = array_slice($arar_str, 0, 10); //превращаем в строку $n1_str = implode(" ", $arar); // Если необходимо добавить многоточие if (count($arar_str) > 10) { $n1_str .= '...'; } $date = htmlspecialchars_decode($mqrow['dat']); echo '<div id="short_news"><center><h3>'; echo $t_s1; echo '</h3></center>'.$m_s1.'<br /><right><b>Дата:</b> '; echo $date . '</right><br /> [url="index.php?page=news#'.$id_sn.'"]>[/url]</div><hr />';} ?> </div> <div style="clear: left;" ></div><div style="clear: rigth;" ></div> <div class="main_content"> <?php if($page !== 'news' && $page!=='reg'){ $page_query = mysql_query("SELECT * FROM `content` WHERE `title`='$page'"); while ($page_content = mysql_fetch_array($page_query)) { $pages_name = htmlspecialchars_decode($page_content['name']); $content = htmlspecialchars_decode($page_content['text']); echo '<center><h2>'.$pages_name.'</h1></center>'; echo '<p id="pages_content">'.$content.'</p>'; } if($page == 'teachers_middle'){ $teachers_query = mysql_query("SELECT * FROM `teachers` WHERE `classes`='2' ORDER BY `id`"); while ($t_content = mysql_fetch_array($teachers_query)) { $t_r = $t_content['role']; $t_f = $t_content['firstname']; $t_n = $t_content['name']; $t_o = $t_content['otchestvo']; $t_t = $t_content['text']; $t_i = $t_content['img']; echo '<div><img width="200px" src="/images/teachers_middle/'.$t_i.'.JPG" style="float: left; margin: 0 15px 25px 0;" /> <h3>'.$t_f.' '.$t_n.' '.$t_o.'</h3>'.$t_r.'<br />'.$t_t.'<br /></div><div style="clear: left;"></div>'; } } if($page == 'teachers_young'){ $teachers_query = mysql_query("SELECT * FROM `teachers` WHERE `classes`='1' ORDER BY `id`"); while ($t_content = mysql_fetch_array($teachers_query)) { $t_r = $t_content['role']; $t_f = $t_content['firstname']; $t_n = $t_content['name']; $t_o = $t_content['otchestvo']; $t_t = $t_content['text']; $t_i = $t_content['img']; echo '<div><img width="200px" src="/images/teachers_middle/'.$t_i.'.JPG" style="float: left; margin: 0 15px 25px 0;" /><h3>'.$t_f.' '.$t_n.' '.$t_o.'</h3>'.$t_t.'<br /></div><div style="clear: left;"></div>'; } } if($page == 'alma_matter'){ if(isset($number) && $number !== ''){ echo '<iframe src="http://docs.google.com/viewer?url=gymn2edu.ru%2Fnewspaper%2F'.$number.'.pdf&embedded=true" width="750" height="1000" style="border: none;"></iframe><br /><br />'; } echo'<center><h2>Архив</h2></center>'; $alma_query = mysql_query("SELECT * FROM `AlmaMatter` ORDER BY `id` DESC"); while ($a_content = mysql_fetch_array($alma_query)) { $a_id = $a_content['id']; $a_n = $a_content['number']; $a_y = $a_content['years']; echo 'Alma Matter №'.$a_n.' за '.$a_y.' учебный год<a href="/newspaper/'.$a_id.'.pdf" target="_blank" download=""> Скачать</a> или [url="index.php?page=alma_matter&number='.$a_id.'"]Читать[/url] <br />'; } echo'<br />'; } } if($page=='news'){ $news_query = mysql_query("SELECT * FROM `news` ORDER BY `id` DESC"); while ($news_content = mysql_fetch_array($news_query)) { $news_name = htmlspecialchars_decode($news_content['name']); $content = htmlspecialchars_decode($news_content['text']); $date = $news_content['dat']; echo '<center><h2>'.$news_name.'</h1></center>'; echo '<p id="news_content">'.$content.'</p><br />'; echo '<b>Дата новости: '.$date.'</b><hr width="50%"/>'; } } if($page=='reg'){ if($end_reg == '1'){ echo '<h2>Регистрация завершена!</h2>'; } if(!empty($r_email) && !empty($r_firstname) && !empty($r_name) && !empty($r_login) && !empty($r_pass2) && !empty($r_pass1) && !empty($r_city) && !empty($r_school)){ if($r_email !== '' && $r_firstname !== '' && $r_name !== '' && $r_login !== '' && $r_pass2 !== '' && $r_pass1 !== '' && $r_city !== '' && $r_school !== ''){ $zapros1 = mysql_query("SELECT * FROM `users` WHERE `login` = '$r_login'"); $quest1 = mysql_fetch_array($zapros1); if (!empty($quest1)) { echo 'Логин используется!!<br />'; } else { $zapros2 = mysql_query("SELECT * FROM `users` WHERE `email` = '$r_email'"); $quest2 = mysql_fetch_array($zapros2); if (!empty($quest2)) { echo 'Адрес e-mail используется!<br />'; } else { if (preg_match('/^[a-zA-Z0-9]+$/', $r_login)) { $pass1 = md5($pass1); mysql_query("INSERT INTO `users`(`login`, `password`, `email`, `firstname`, `name`, `city`, `school`, `class`, `about`) VALUES ('$r_login', '$r_pass1', '$r_email', '$r_firstname', '$r_name', '$r_city', '$r_school', '$r_class', '$r_about')") or die(mysql_error()); $end_reg = '1'; $login = $r_login; $password = $r_pass1; SetCookie('login', $login, time() +604800, "/"); SetCookie('password', $password, time() +64800, "/"); echo '<h2>Регистрация завершена!</h2>'; } else { echo 'В поле "Логин" допустимы только символы латиницы и знак подчеркивания"<br />'; } } } } else { echo '<center><h2>Регистрация</h2></center><form method="POST"> *Логин:<input type="text" name="login_reg" value="'.$r_login.'" /> <br />*e-mail:<input type="email" name="mail_reg" value="'.$r_email.'" /><br /> *Пароль:<input type="password" name="pass1_reg" value="'.$r_pass1.'" /><br /> *Повторите пароль:<input type="password" name="pass2_reg" value="'.$r_pass2.'" /><br /> *Имя:<input type="text" name="name_reg" value="'.$r_name.'" /><br /> *Фамилия:<input type="text" name="firstname_reg" value="'.$r_firstname.'" /><br /> *Город:<input type="text" name="city_reg" value="'.$r_city.'" /><br /> *Школа:<input type="text" name="school_reg" value="'.$r_school.'" /><br /> Класс:<input type="text" name="class_reg" value="'.$r_class.'" /><br /> О себе:<input type="text" name="about_reg" value="'.$r_about.'" /><br /> <input type="submit" value="Зарегистрироваться" /><br /> Поля отмеченные * обязательны для заполнения!<br /> <b>Что-то не заполнено!</b> </form>'; } } else { echo '<center><h2>Регистрация</h2></center><form method="POST">*Логин:<input type="text" name="login_reg" /> <br />*e-mail:<input type="email" name="mail_reg" /><br /> *Пароль:<input type="password" name="pass1_reg" /><br /> *Повторите пароль:<input type="password" name="pass2_reg" /><br /> *Имя:<input type="text" name="name_reg" /><br /> *Фамилия:<input type="text" name="firstname_reg" /><br /> *Город:<input type="text" name="city_reg" /><br /> *Школа:<input type="text" name="school_reg" /><br /> Класс:<input type="text" name="class_reg" /><br /> О себе:<input type="text" name="about_reg" /><br /> <input type="submit" value="Зарегистрироваться" /><br /> Поля отмеченные * обязательны для заполнения! </form>'; } } ?> </div> </div><div style="clear: left;" ></div><div style="clear: both;" ></div> <br /><br /> <div class="footer"> <center>Техподдержка: [url="mailto:paul.i.may1999@gmail.com"]paul.i.may1999@gmail.com[/url]<br /> ©Гимназия №2, 2014г</center> </div> </body> </html> Добавлено спустя 1 минуту 22 секунды: З.Ы. Да, я извращенец и пишу все в одном файле. Ибо лень сразу раскидывать.
Re: Помощь с куками Как обычно непонимание простых вещей происходит из-за недостатка базовых знаний о Веб. Браузер и php-скрипт ведут диалог с помощью запросов (request) и ответов (response). И в запросе и в ответе содержатся "заголовки" (header). Заголовки есть всегда, даже если ты их не указывал. Например в заголовке ответа прописано какого типа и в какой кодировке твоя страничка. Куки хранятся браузером. Функция setcookie() готовит специальный заголовок ответа в котором прописано что ты хочешь сохранить в браузере. По окончании работы скрипта ответ вместе с заголовками отправляется с сервера на браузер. При следующем запросе браузер отошлет свои куки назад на сервер. PHP автоматически разберёт заголовки с куками и поместит их в переменную $_COOKIE. То есть, setsookie НЕ сохраняет ничего в $_COOKIE. Всё несколько сложнее. браузер делает запрос страницы ==> cкрипт вызывает setcookie(), готовит заголовки и текст страницы ==> браузер запоминает куки, делает следующий запрос с cookie в заголовках ==> скрипт получает куки в переменную $_COOKIE, готовит следующий ответ …
Но без каких бы то ни было гарантий того, что браузер их примет и сохранит. Это важно. То есть, если ты отослал куки, не факт, что браузер их вернет обратно. Учитывай это, планируя логику приложения.
хэш который во время авторизации сохранялся бы в файл и каждый раз куками проверялся базой данных. я правильно понял механизм проверки хеша?
почти все популярные движки блогов и форумов идентифицируют пользователя через куки. качни любой и ковыряй потихоньку. это будет хорошей школой.
номер в одной куке, в другой - логин+пароль+IP+agent+соль. Никогда так не делал, это просто предположение.
ой, да, забыл указать ключевой момент DDDDD смотрел второй фильм про пипца - финал, развязка, все дела.
Да нормально они работают) В браузере сохранаются на определенное время потом йокаются и все типа временных данных.