Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > проблема с авторизацией.


Автор: mr.fox 7.6.2005, 18:20

Короче, у меня первая стадия отупения. Второй день не могу найти ошибку в системе авторизации.. Короче вот ее упрощенный протатип.
----------
Сама форма собственно.:
Код
<form action="login1.php" method="post">
Login &nbsp;<input type="text" name="nick"><br>
Pass&nbsp; <input type="password" name="password"><br>
<input type="submit">
</form>

----------
файл login1.php ::
Код
<?
session_start();
$nick=$_POST['nick'];
$password=$_POST['password'];
function db_connect()
{
   $result = mysql_pconnect('localhost', 'root', '555890'); 
   if (!$result)
      return false;
   if (!mysql_select_db('game'))
      return false;

   return $result;
}
function login($nick, $password)
// check username and password with db
// if yes, return true
// else return false
{
  // connect to db
  $conn = db_connect();
  if (!$conn)
    return false;

  // check if username is unique
  $result = mysql_query("select * from users 
                         where nick=$nick
                        and password = old_password($password)");
  if (!$result)
     return false;
  
  if (mysql_num_rows($result)>0)
     return true;
  else 
     return false;
}

?>
<html>......
<?
if($nick && $password)
    {
        if(login($nick,$password))
            {
                $_SESSION['valid_user']=$nick;
                echo ' You are signed in as '.$_SESSION['valid_user'];
            }
        else
            {
                echo 'You can not be signed in';
            }
        }
else echo 'You didn\'t fill out the forms';
?>


вот код, почему постоянно выводит что не могу авторизировать.. Имена полей сверял 200 раз.. не пойму. короче хелп.

Автор: Mal Hack 7.6.2005, 18:27
Цитата(mr @ 7.6.2005, 19:20)
old_password($password)

А это что?
В догонку: http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=main_panel&article=2849

Автор: mr.fox 7.6.2005, 18:33
я читал там.. old_password это у меня бд с пхп так контачат.. если ставлю просто password() то ошибка лезет.

Автор: Mal Hack 7.6.2005, 18:40
Цитата(mr @ 7.6.2005, 19:33)
я читал там.. old_password это у меня бд с пхп так контачат..

Если ты про:
Цитата
#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

ТО:
Цитата
This is permanent solution. Instead of typing this "SET PASSWORD FOR peter@localhost = OLD_PASSWORD('something');" in the command line client for every single user, do the following:


Find "my.ini" inside windows directory and insert the following lines (First line is just a comment, it can be ommited)

#Use old password encryption method (needed for 4.0 and older clients).
old_passwords

Restart the service for the changes to take place.

А не в коде программы !!!

Автор: mr.fox 7.6.2005, 19:27
вопрос не в этом, и оба способа дают одинаковый результат.
А вопрос по поводу ошибка в моем коде еще открыт.

Автор: Mal Hack 7.6.2005, 19:40
Что значит не в этом, когда ты сравниваешь пароль со стррокой "old_password(пароль)".. Тут никогда равно не будет.

Автор: mr.fox 7.6.2005, 19:50
причем здесь это, я не сравниваю со строкой, old_password('$password') выдает хэш пароля и они сравниваются

Автор: Mal Hack 7.6.2005, 19:53
Цитата(mr @ 7.6.2005, 19:20)
and password = old_password($password)"

Это называется сравнить со строкой.

Автор: Irokez 7.6.2005, 20:04
что за функция old_password в мускуле?? может кавычки забыли вокруг $password?

Автор: mr.fox 7.6.2005, 20:33
ковычки я уже поставил, всеравно не авторизирует
MAL, а вот если поставить md5('$password') или sha1('$password') то тоже будет сравнение со строкой?

Автор: Guest 8.6.2005, 09:03
Цитата
and password = old_password($password)"

А тут не "==" должно быть?..

Автор: Opik 8.6.2005, 09:10
Цитата
А тут не "==" должно быть?..

нет

Автор: mr.fox 8.6.2005, 22:12
ну и чо делать?

Автор: Ищущий! 12.6.2005, 22:45
А мож сессию сначала запустить надо?

Автор: mr.fox 14.6.2005, 03:10
сессия запускается в самой первой строчке, код читаем

Автор: Mal Hack 14.6.2005, 03:21
mr.fox про отладку слышал когда-ть?
Иди пошагово. Проверяя, в какие условия скрипт входит а в какие нет.
Так найдешь где не там тебя выкидывает или куда не входит..
Как минимум могу сказать про
1. register_globals и глобальные массивы.
2. Возможно old_password косяки дает, имеет смысл на SHA1 попробовать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)