[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не работает авторизация
2fed
Код не работает вроде всё правильно...но ничего не выдаёт ни ошибки - ни чего! просто страничка обновляется....

<?
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());

Спустя 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 час, 20 минут, 57 секунд (13.05.2011 - 18:35) XCross написал(а):
Там код подправил..ошибку нашел еще одну unsure.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.