Не сохраняются сессии

Khvosticov Sergey
Сообщения: 201
Зарегистрирован: 31 дек 2009
Прошу помочь доделать функцию Запомнить меня , и закрыть баги если такие есть ....

login.php

Код: Выделить всё

<?
if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
print <<<HERE
<center>
<table style='margin:auto' width='15%' class='regform'>
</center>
        <TBODY>
        <TR>
<form action="testreg.php" method="post">
<td><font size='2'>Логин : </font></td>
<td>
 
<input name="login" type="text" size="15" maxlength="25"
</td></tr>
HERE;
 
       
if (isset($_SESSION['login']))
{
 
echo ' value="'.$_SESSION['login'].'">';
}
 
 
print <<<HERE
<tr><td><font size='2'>Пароль:</font></td>
<td>
 
<input name="password" type="password" size="15" maxlength="25"
</td>
</tr>
 
HERE;
 
       
if (isset($_SESSION['password']))
{
 
echo ' value="'.$_SESSION['password'].'">';
}
       
print <<<HERE
</table>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль --> 
<center>
<input name="save" type="checkbox" class="checkbox" value='1'><font size='1'>Запомнить меня</font></center>
<center>
<table class='regform' style='margin:auto'>
<tr>
<td>
<input type="submit" name="submit" value="Вход">
</td>
<td>
<input type="reset" name="submit" value="Очистить поля"></center></table>
</td>
</table>
</form>
HERE;
}
 else
{
print <<<HERE
 <center><font size='2'>Внимание! Вы уже авторизованы как <b>$_SESSION[login]</b> <br> <center><a href='index.php'>Вернуться на главную</a></font></center>
HERE;
}
 ?>


testreg.php

Код: Выделить всё

<?php
session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
 
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
 
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); //останавливаем выполнение сценариев
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
 
$password = stripslashes($password);
$password = htmlspecialchars($password);
 
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
 
 
// дописываем новое********************************************
 
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
 
 
 
$password = md5($password);//шифруем пароль
$password = strrev($password);// для надежности добавим реверс
$password = $password."b3p6f";
//можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать методом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.
 
//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.
 
 
$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password'",$db); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{
//если пользователя с введенным логином и паролем не существует,то записываем ip пользователя и с датой ошибки
 
$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0]) {
//проверяем, есть ли пользователь в таблице "oshibka"
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
 
$col = $myrow52[0] + 1;//Если есть,то приплюсовываем количесво
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");
}
 
else {
//если за последние 15 минут ошибок не было, то вставляем новую запись в таблицу "oshibka"
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
}
 
exit ("Извините, введённый вами логин или пароль неверный."); //останавливаем выполнение сценариев
 
}
else {
 
          //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
          $_SESSION['password']=$myrow['password'];
                  $_SESSION['login']=$myrow['login'];
          $_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
                 
//Далее мы запоминаем данные в куки, для последующего входа.
//ВНИМАНИЕ!!! ДЕЛАЙТЕ ЭТО НА ВАШЕ УСМОТРЕНИЕ, ТАК КАК ДАННЫЕ ХРАНЯТСЯ В КУКАХ БЕЗ ШИФРОВКИ
 
if (isset($_POST['save'])){
//Если пользователь хочет, чтобы его данные сохранились для последующего входа, то сохраняем в куках его браузера
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);}
}       
         
echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
 
//перенаправляем пользователя на главную страничку, там ему и сообщим об удачном входе
 
?>
Были времена я срывался и падал вниз, но всегда успевал ухватиться за карниз...

Вернуться в «Другие вопросы»