singlepost

login << На главную или назад  

такой код:

<?php
session_start();
if(!isset($_POST['enter']))
{
?>
<form method='post' action=''>
Авторизация<BR>
Имя:<input type='text' name='name' value=''><BR>
пароль:<input type='password' name='pass'><BR>
<input name='enter' type='submit' value='Войти'>
<?php
}

else
{
if ($_POST['name']!='' and $_POST['pass']!='')
{
$safe_name=mysql_escape_string($_POST['name']);
$safe_name=mysql_escape_string($_POST['pass']);

$safe_pass=md5($safe_pass);

require_once('connect.php');

$sql="SELECT name,pass FROM USERS WHERE
name='".$safe_name."' and pass='".$safe_pass."'";

$result=mysql_query($sql);
if (mysql_num_rows($result))
die ("Неверный Логин или Пароль <a href='index.php'> назад </a>");
else
{
$line=mysql_fetch_row($result);
$_SESSION['autorized']=true;
$_SESSION['name']=$_POST['name'];
$_SESSION['role']=$line[2];
echo "авторизация прошла успешно! <br><a href=index.php> вернуться</a>";
}
}
else
{
die("хрень какая-то <a href='index.php'>назад</a>");
}
}

?>

взято из книжки "PHP-Это просто"
получается что если введены ну хоть какие-нить данные, то авторизация проходит успешно, и только если поля совсем пустые тогда ругается.
Подскажите где поправить?

8 ответов в теме “login”

  1. 8
    Nikolay Wade ответил:

    сохранить куки не думали сделать???

  2. 7
    Прохор Руднев ответил:

    ипать…

    ажно трЫ раза равно нулю :)
    но теперь все работает :)
    Спасибо Большое!

  3. 6
    Юрий Степанов ответил:

    Прохор, смари че у тебя написано
    $safe_name=mysql_escape_string($_POST['name']);
    $safe_name=mysql_escape_string($_POST['pass']);

    а надо то

    $safe_name=mysql_escape_string($_POST['name']);
    $safe_pass=mysql_escape_string($_POST['pass']);

    =)

  4. 5
    Юрий Степанов ответил:

    кроме того, обрати внимание, что в таблице USERS должны быть записаны какие-нить name и pass (pass в виде md5-хеша), чтобы можно было авторизоваться!

  5. 4
    Юрий Степанов ответил:

    <?php
    session_start();
    if(!isset($_POST['enter']))
    {
    ?>
    <form method='post' action=''>
    Авторизация<BR>
    Имя:<input type='text' name='name' value=''><BR>
    пароль:<input type='password' name='pass'><BR>
    <input name='enter' type='submit' value='Войти'>
    <?php
    }

    else
    {
    if ($_POST['name']!='' and $_POST['pass']!='')
    {
    $safe_name=mysql_escape_string($_POST['name']);
    $safe_pass=mysql_escape_string($_POST['pass']);

    $safe_pass=md5($safe_pass);

    require_once('connect.php');

    $sql="SELECT name,pass FROM USERS WHERE
    name='".$safe_name."' and pass='".$safe_pass."'";

    $result=mysql_query($sql);
    if (mysql_num_rows($result)===0)
    die ("Неверный Логин или Пароль <a href='index.php'> назад </a>");
    else
    {
    $line=mysql_fetch_row($result);
    $_SESSION['autorized']=true;
    $_SESSION['name']=$_POST['name'];
    $_SESSION['role']=$line[2];
    echo "авторизация прошла успешно! <br><a href=index.php> вернуться</a>";
    }
    }
    else
    {
    die("хрень какая-то <a href='index.php'>назад</a>");
    }
    }

    ?>

  6. 3
    Прохор Руднев ответил:

    похоже что условия и в самом деле не хватает.
    либо полное соглашательство с любым логином,
    либо полное отрицалово.
    блин…

  7. 2
    Владимир Гревцев ответил:

    if (mysql_num_rows($result))

    а мне кажется что if(mysql_num_rows($result) >=1) { авторизация пройдена }
    то бишь в num_rows не хватает условия что ли….имхо

  8. 1
    Юрий Степанов ответил:

    мне кажецца что вместо
    if (mysql_num_rows($result))
    надо отрицание
    if (!mysql_num_rows($result))

    ну а в USERS должны быть данные какие-то, чтобы под ними можно было авторизоваться

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.