проверка пароля ?

voland

Guest
проверка пароля ?

Есть форма в которой пользователю предлагаеться ввести имя и пароль
PHP:
<form action=auth.php3?login=$login&password=$password method=get>
<table border=0 width=500 align=center cellspacing=1 cellpadding=3 bgcolor=000080>
<tr><td><font face=verdana size=2><a href=newmember.php3>Регистрация</a></font></td></tr>
<tr><td><font face=verdana size=2 color=de0000>Введите логин</font></td></tr>
<tr><td><input typy=text name=login size=25></td></tr>
<tr><td><font face=verdana size=2 color=de0000>Введите пароль</font></td></tr>
<tr><td><input typy=text name=password size=25></td></tr>
<tr><td><input type=submit value=Войти></td></tr>
</form>
Но при регистрации логин и пароль храняться в БД, как сделать проверку логина и пароля через БД ??

З.Ы. БД - MySql
 

ruslan

Guest
В auth.php3 коннектишся к базе и из пришедших переменных делаешь запрос (например "select count(*) from ... where login='$login' and password='$password'"), предварительно приведя пришедшие переменные к нужному типу и проверив на всякие приколы типа $login = " ' or 1=1"...

Потом, получив count(*) == 1 в результате запроса, считаешь, что пользователь вошел, если нет выводишь сообщение об ошибке или пересылаешь его на disney.com :) ...

Вроде все.
 

voland

Guest
Автор оригинала: ruslan
В auth.php3 коннектишся к базе и из пришедших переменных делаешь запрос (например "select count(*) from ... where login='$login' and password='$password'"), предварительно приведя пришедшие переменные к нужному типу и проверив на всякие приколы типа $login = " ' or 1=1"...

Потом, получив count(*) == 1 в результате запроса, считаешь, что пользователь вошел, если нет выводишь сообщение об ошибке или пересылаешь его на disney.com :) ...

Вроде все.
select count(*) from ... where login='$login' and password='$password'

login и password - это наскоко я понял названия полей в форме, а вот откуда я возьму $login и $password?
Или это те переменные которые я вынул из БД, если это переменные которые я вынул из БД, то как я их выну, ведь до нажатия кнопки я не знаю логин этого человека!!!
 

Rat

Guest
Было ж написано, что $login и $password - пришедшие переменные - переменные, которые пришли из формы после нажатия субмита.
 

voland

Guest
Автор оригинала: Rat
Было ж написано, что $login и $password - пришедшие переменные - переменные, которые пришли из формы после нажатия субмита.
А что такое тогда login и password?
 

ruslan

Guest
поля в БД куда ты при регистрации заносишь имя и пароль своих пользователей
 

ruslan

Guest
>> Но при регистрации логин и пароль храняться в БД
не зная структуру твоей базы я просто предположил, что они (поля в бд: login и password) называются созвучно с твоими переменными из формы (переменные: $login и $password)
 

voland

Guest
Вообщем до меня дошло как сделать запрос, токо я не пойму как его связать с нажатием кнопки отправить?

З.Ы. Простите меня тупого :)
 

ruslan

Guest
:) Ладно, по шагам:
1. пользователь заполняет форму
2. нажимает кнопку submit (или "Войти")
3. данные пересылаются скрипту auth.php3 (по action твоей формы)
4. скрипт auth.php3 коннектится к БД и выполняет запрос select ... (с данными из твоей формы)
5. на основании выполнения запроса ты, например, пересылаешь пользователя дальше, либо выводишь сообщение об ошибке

Вроде все :) Удачи!
 

voland

Guest
Автор оригинала: ruslan
:) Ладно, по шагам:
1. пользователь заполняет форму
2. нажимает кнопку submit (или "Войти")
3. данные пересылаются скрипту auth.php3 (по action твоей формы)
4. скрипт auth.php3 коннектится к БД и выполняет запрос select ... (с данными из твоей формы)
5. на основании выполнения запроса ты, например, пересылаешь пользователя дальше, либо выводишь сообщение об ошибке

Вроде все :) Удачи!
Насчет того как это делать я знаю, у меня как раз проблемы с пунктом 4 , я даже знаю как переслать, но вот это без книг никак не могу понять! :(((

Большое спасибо за помощь :)
 

ruslan

Guest
<form action=auth.php3 method=get>
Кстати, попробуй объявить форму (ее action) без лишних переменных, они не к чему...

----

Что именно не получается в пункте 4 ???
Запрос к базе? Или что?
 

voland

Guest
Автор оригинала: ruslan
<form action=auth.php3 method=get>
Кстати, попробуй объявить форму (ее action) без лишних переменных, они не к чему...

----

Что именно не получается в пункте 4 ???
Запрос к базе? Или что?
Я не пойму как сделать, чтоб данные которые ввели в поля перешли в запрос
 

ruslan

Guest
Данные пришедшие из формы автоматически регистрируются php (вызови в начале файла auth.php3 функцию phpinfo() и все сам увидишь).

Скорее всего значения полей будут в массиве $HTTP_GET_VARS[...] или в массиве $_GET, где вместо троеточия - название поля формы...
(пример: $login = $HTTP_GET_VARS['login']; )

Пробуй!
 

voland

Guest
Я до сих пор никак не пойму, как проверить что логин и пароль у человека соответствуют тем которые в БД!

Киньте тупому код, так как я никак не могу сообразить :((((
 

ruslan

Guest
извини, но без структуры БД тебе никто ничего не скажет :(, хотя пример запроса к mysql можно в manual'e по php
найти, а уж подставить в него свой запрос - легко.

по запросу... :
select count(*) from ... where login='$login' and password='$password'

попробуй вручную его выполнить и увидишь, что если данные правильные count(*) будет равен 1, т.е. есть одна запись, в которой данные совпали. Если или логин или пароль неправильные результат будет равен нулю...
 

voland

Guest
Автор оригинала: ruslan
извини, но без структуры БД тебе никто ничего не скажет :(, хотя пример запроса к mysql можно в manual'e по php
найти, а уж подставить в него свой запрос - легко.

по запросу... :
select count(*) from ... where login='$login' and password='$password'

попробуй вручную его выполнить и увидишь, что если данные правильные count(*) будет равен 1, т.е. есть одна запись, в которой данные совпали. Если или логин или пароль неправильные результат будет равен нулю...
Структура БД такая:
PHP:
CREATE TABLE users (
  user_id int(10) NOT NULL default '0',
  user_name varchar(50) NOT NULL default '',
  user_password varchar(50) NOT NULL default '',
  user_mail varchar(50) NOT NULL default '',
  user_post smallint(5) NOT NULL default '0',
  PRIMARY KEY  (user_id)
) TYPE=MyISAM;
И потом я незнаю как это сделать вручную :((
 

Rat

Guest
Запрос, написаный Русланом, будет в данном случае выглядеть:
select count(*) from users where user_name='$login' and user_password='$password'

А как этот запрос из ПХП сделать, смотри подробнее в мануале функции:
mysql_connect
mysql_select_db
mysql_query
mysql_close
 

voland

Guest
Вот что я сделал в ходе додумок!
PHP:
<?
require("config.php3");
function auth()
{
$auth="SELECT count(*) FROM `users` WHERE user_name='$login' and user_password='$password'";
}
if ($auth != 1)
{
echo "NO";
} elseif ($auth == 1)
{
echo "YES";
}
?>
Но это не работает, что не так?
 

ruslan

Guest
не уверен, что работает, но как первый шаг можно использовать...

PHP:
<?php

    $login = $HTTP_GET_VARS['login'];
    $password = $HTTP_GET_VARS['password']; 

    /* Connecting, selecting database */
    $link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
        or die("Could not connect");
    print "Connected successfully";
    mysql_select_db("my_database") or die("Could not select database");

    /* Performing SQL query */
    $query = "select count(*) from users
where user_name = '$login' and user_password='$password'";
    $result = mysql_query($query) or die("Query failed");

    /* Printing results in HTML */
    $line = mysql_fetch_array($result, MYSQL_NUM);

    if ($line[0] == 1) 
     {echo 'right you are';}
else
     {echo 'bad username/password';}

    /* Free resultset */
    mysql_free_result($result);
    /* Closing connection */
    mysql_close($link);
?>
 
Сверху