<?
include('connect.php');// подключение к серверу MySql и выбор БД
$userinfo='';
$state='0';
if( (isset($_COOKIE['login'])) && (isset($_COOKIE['pass'])) ) {// если в куках лежит логин и зашифрованый пароля
if (!isset($_GET['exit'])) {// если кнопка выход не была нажата
$login=$_COOKIE['login'];
$pass=$_COOKIE['pass'];
// проверяем наличие пользователя в БД и достаём оттуда пароль
$sql='SELECT id, pass FROM `hacknet8`.`users` WHERE login="'.$login.'"';
$res=mysql_query($sql);
if(mysql_num_rows($res)>0){// если пользователь есть в БД
$userinfo = mysql_fetch_array($res);// в этой переменной лежит пароль из БД
if(strcmp($pass,md5($userinfo['pass'])) == 0) { //проверяем схожесть пароля из БД с паролем из куков
// достаём все данные из БД
$sql='SELECT * FROM `hacknet8`.`users` WHERE login="'.$login.'"';
$res=mysql_query($sql);
$userinfo=mysql_fetch_array($res); // в этой переменной будет лежать вся информация о пользователе из БД
$time=time();
// устанавливаем куки для запоминания статуса пользователя
setcookie("login",$login,$time+1800);
setcookie("pass",$pass,$time+1800);
$state = 1;// статус, если 1, тогда пользователь авторизован
}
}
} else {
//обнуляем куки, если была нажата кнопка выход
setcookie("login");
setcookie("pass");
}
}
if($state != 1) {// если после проверки куков, оказалось, что пользователь не авторизован, то идем дальше
if( (isset($_POST['login'])) && (isset($_POST['pass'])) ){ // если пользователь ввёл логин и пароль
$login = $_POST['login'];
// проверяем наличие пользователя в БД и достаём оттуда пароль
$sql = 'SELECT id, pass FROM `hacknet8`.`users` WHERE login="'.$login.'"';
$res = mysql_query($sql);
if(mysql_num_rows($res)>0) {// если пользователь есть в БД
$userinfo = mysql_fetch_array($res);// в этой переменной лежит пароль из БД и номер пользователя
$pass = $_POST['pass'];
if(strcmp($pass,$userinfo['pass'])==0){
// достаём все данные из БД
$sql='SELECT * FROM `hacknet8`.`users` WHERE login="'.$login.'"';
$res=mysql_query($sql);
$userinfo=mysql_fetch_array($res);// в этой переменной будет лежать вся информация о пользователе из БД
$time=time();
// устанавливаем куки для запоминания статуса пользователя, пароль шифруем
setcookie("login", $login, $time+1800);
setcookie("pass", md5($pass), $time+1800);
$state = 1;// статус, если 1, тогда пользователь авторизован
}
}
}
}
if($state == 1)
{
echo '<font color="gray">You are logged!<br>
Your login: '.$userinfo["login"].'<br>
Your email: '.$userinfo["email"].'<br>
<a href="/index.php?exit=y">Exit</a>';
}
else
{
echo '<input type="text" name="login" size="18" value="Login" class="btn2"><br>
<input type="password" name="pass" size="18" value="******" class="btn2"><br>
<input type="submit" name="login" value="Login" class="btn1"><br>
<a href="reg.php"><font color="gray" size="2">Registration</a> | </font>
<a href="/.html"><font color="gray" size="2">Recover password</a></font>';
}
?>
Спустя 22 минуты, 21 секунда (12.05.2011 - 23:20) Dezigo написал(а):
Напиши в начале файла.
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
Спустя 9 минут, 31 секунда (12.05.2011 - 23:30) 2fed написал(а):
хм...ничего не происходит...
Спустя 5 часов, 15 минут, 39 секунд (13.05.2011 - 04:45) XCross написал(а):
<?php
$session_start();
include 'connect.php';
if($_SESSION['auth'] == 0){
?>
<form action="" method="post">
<?php
if(count($errors) != 0){
?>
<font color="red">
<?php
echo implode('<br>', $errors) .'<br>';
?>
</font>
<?php
}
?>
<input type="text" name="login" size="18" value="Login" class="btn2"><br>
<input type="password" name="pass" size="18" value="" class="btn2"><br>
<input type="submit" name="ok" value="Login" class="btn1"><br>
<a href="reg.php"><font color="gray" size="2">Registration</a> | </font>
<a href="/.html"><font color="gray" size="2">Recover password</a></font>
</form>
<?php
}
if($_SESSION['auth'] == 1){
$login=$_SESSION['login'];
$sql=mysql_query("SELECT * FROM `hacknet8`.`users` WHERE `login`='$login'");
$userinfo=mysql_fetch_array($sql);
?>
<font color="gray">You are logged!</font><br>
Your login: <?=$login?><br>
Your email: <?=$userinfo['email']?><br>
<a href="/index.php?exit=y">Exit</a>
<?php
}
//Если в кукисах есть логин и пароль
if(isset($_COOKIE['login']) && isset($_COOKIE['pass']){
$login=$_COOKIE['login'];
$pass=$_COOKIE['pass'];
$sql=mysql_query("SELECT * FROM `hacknet8`.`users` WHERE `login`='$login' and `pass`='$pass'");
if(mysql_num_rows($sql)!=0){
$_SESSION['auth']=1;
$_SESSION['login']=$login;
}
}
//Если нажата кнопка выхода
if(isset($_GET['exit'])){
setcookie("login");
setcookie("pass");
session_destroy();
}
//Если нажата кнопка входа
if(isset($_POST['ok'])){
if (!isset($_POST['login'])){
$errors[]='Введите логин!';
}
if (!isset($_POST['pass'])){
$errors[]='Введите пароль!';
}
//Если все ввели
if(count($errors)==0){
$login=$_POST['login'];
$pass=md5($_POST['pass']);
$sql=mysql_query("SELECT * FROM `hacknet8`.`users` WHERE `login`='$login' AND `pass`='$pass'");
//Если существует такой юзер
if(mysql_num_rows($sql)!=0){
setcookie("login",$login,$time+1800);
setcookie("pass",$pass,$time+1800);
$_SESSION['auth']=1;
$_SESSION['login']=$login;
}
//Если нет
else{
$errors[]='Неверный логин или пароль!';
}
}
}
Здесь нотайсыбудут. Исправишь.
Конечно, тут нужно еще о защите подумать(SQL-inj, f5, экранирование и прочаяживность)...об этом выше ссылку давал.
Спустя 2 часа, 47 минут, 6 секунд (13.05.2011 - 07:32) inpost написал(а):
2fed
mysql_query($sql) or die(mysql_error());
mysql_query($sql) or die(mysql_error());
Спустя 6 минут (13.05.2011 - 07:38) XCross написал(а):
mysql_query($sql) or die(mysql_error());
Забыл :(
Спустя 5 часов, 42 минуты, 29 секунд (13.05.2011 - 13:21) 2fed написал(а):
огромное спасибо!
про защиту пока не думал... потом займусь этим вплотную...
про защиту пока не думал... потом займусь этим вплотную...
Спустя 1 час, 42 минуты (13.05.2011 - 15:03) 2fed написал(а):
}
if($_SESSION['auth'] == 1){
ругается...
Parse error: syntax error, unexpected '{' in /home/h/hacknet.h19.ru/WWW/index.php on line 91
Спустя 2 часа, 11 минут, 20 секунд (13.05.2011 - 17:14) inpost написал(а):
2fed
Лишняя фигурная скобка, которая перед условием стоит, так как она у тебя дважды закрывается, а должна только 1 раз (предыдущая проверка!
Лишняя фигурная скобка, которая перед условием стоит, так как она у тебя дважды закрывается, а должна только 1 раз (предыдущая проверка!
Спустя 1 час, 20 минут, 57 секунд (13.05.2011 - 18:35) XCross написал(а):
Там код подправил..ошибку нашел еще одну