Помогите пожалуйста сделать авторизацию

nonename

Новичок
Помогите пожалуйста сделать авторизацию

Пытаюсь сделать свою авторизацию, но не могу разобраться с функцией пересылки пользователя. Вот скрипт:
<?php

$message = " ";

if ($_POST["go"] == "GO")

{

$login = $_POST["login"];
$pass = $_POST["pass"];

$link = mysql_connect("localhost", "root");// &#234;&#238;&#237;&#229;&#234;&#242;&#232;&#236;&#241;&#255; &#234; &#196;&#193;
if (! $link)
die ("&#205;&#229; &#236;&#238;&#227;&#243; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#232;&#242;&#252;&#241;&#255; &#234; &#193;&#196;!");
$database = "phpmm";
mysql_select_db($database) or die ("&#205;&#229; &#236;&#238;&#227;&#243; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#232;&#242;&#252;&#241;&#255; &#234; $database!");// &#226;&#251;&#225;&#232;&#240;&#224;&#229;&#236; &#196;&#193;
$result = mysql_query("SELECT * FROM users");
while ($a_row = mysql_fetch_array($result))//mysql_fetch_row &#244;&#243;&#237;&#234;&#246;&#232;&#255; &#228;&#235;&#255; &#239;&#238;&#235;&#243;&#247;&#229;&#237;&#232;&#255; &#239;&#238;&#235;&#229;&#233; &#242;&#224;&#225;&#235;&#232;&#246;&#251;
{
if ( $a_row[login] == $login and $a_row[pass] == $pass )
{
header( "Location: user.php");
exit;
}
}
mysql_close ($link);

}

?>

<html>

<head>

<title></title>
</head>

<body>

<?php
if ($message != "")
{
print "<b>$message</b>";
}
?>

<form action = "" method = "post">
<pre>
&#203;&#238;&#227;&#232;&#237;: <input type = 'text' name = 'login'>
&#207;&#224;&#240;&#238;&#235;&#252;: <input type = 'password' name = 'pass'><input type="submit" name="go" value="GO">
</pre>
</form>

</body>

</html>

А вот, что пишет Denwer:

Warning: Cannot modify header information - headers already sent by (output started at o:\home\test.ru\www\romaxv1.0\index.php:20) in o:\home\test.ru\www\romaxv1.0\index.php on line 22

Помогите, пожалуйста.
 

Dreammaker

***=Ф=***
в ошибке хорошо написано, что сессия уже ранее стартовала...
вот посмотри в FAQ подобное рассмотрено:
http://phpfaq.ru/headers
А весь код тут никто читать полностью не будет ошибку нужно локализировать...
 

nonename

Новичок
http://phpfaq.ru/headers - прочитал. Но ничего не помогает. А может у меня код просто не правильный? Кому не трудно посмотрите пожалуйста. Хочу сделать скрипт и разместить его бесплатно для всех в интернете.
 

Andreika

"PHP for nubies" reader
nonename
а мож не надо в интернете.. да еще и для всех и бесплатно? вдруг кто скачает :(

PHP:
$result = mysql_query("SELECT * FROM users");
вот это (и while ниже) особенно понравилось! про SELECT... WHERE .. не слышал?

а смысла делать только
PHP:
header( "Location: user.php");
вообще не вижу...

а по теме - в 20ой строке скрипт что-то выводить пытается... т.к. в 20ой у тебя
PHP:
if ( $a_row[login] == $login and $a_row[pass] == $pass )
то на 90% он выводит Use of undefined constant login - assumed 'login' , а надо чтобы не выводил
 

nonename

Новичок
Andreika Функция выводит весь массив данных таблицы, а потом я к нему обращаюсь с помощи $a_row[].

вот это (и while ниже) особенно понравилось! про SELECT... WHERE .. не слышал? - хорошо попробую так.
 

nonename

Новичок
Andreika Я вспомнил. Я уже так пытался делать, но программа, какой пароль я не вводил меня сразу пересылает на user.php. Вот фрагмент старого кода :

mysql_select_db($database) or die ("&#205;&#229; &#236;&#238;&#227;&#243; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#232;&#242;&#252;&#241;&#255; &#234; $database!");// &#226;&#251;&#225;&#232;&#240;&#224;&#229;&#236; &#196;&#193;
$result = mysql_query("SELECT id, login, pass * FROM users WHERE
login='$login' and pass='$pass'", $link);

if ( $login == $login2 and $pass == $pass2 )
{
header( "Location: user.php");
exit;
}

а мож не надо в интернете.. да еще и для всех и бесплатно? -
ты меня убидил :) Буду брать деньги

-~{}~ 25.10.05 04:42:

Nimous Я занаю. А еще лучше использовать двойное хэширование, как в ipb :)

-~{}~ 25.10.05 04:53:

А сейчас пишет :Notice: Undefined variable: pass in o:\home\test.ru\www\romaxv1.0\index.php on line 13

Notice: Undefined variable: login in o:\home\test.ru\www\romaxv1.0\index.php on line 15

Вот полный фрагмент кода:
<?php
$message = " ";
if ($_POST["go"] == "GO")
{
$login2 = $_POST["login2"];
$pass2 = $_POST["pass2"];
$link = mysql_connect("localhost", "root");// &#234;&#238;&#237;&#229;&#234;&#242;&#232;&#236;&#241;&#255; &#234; &#196;&#193;
if (! $link)
die ("&#205;&#229; &#236;&#238;&#227;&#243; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#232;&#242;&#252;&#241;&#255; &#234; &#193;&#196;!");
$database = "phpmm";
mysql_select_db($database) or die ("&#205;&#229; &#236;&#238;&#227;&#243; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#232;&#242;&#252;&#241;&#255; &#234; $database!");// &#226;&#251;&#225;&#232;&#240;&#224;&#229;&#236; &#196;&#193;
$result = mysql_query("SELECT id, login, pass * FROM users WHERE
login='$login' and pass='$pass'", $link);

if ( $login == $login2 and $pass == $pass2 )
{
header( "Location: user.php");
exit;
}
}
mysql_close ($link);
?>

<html>

<head>
<title></title>
</head>

<body>

<?php
if ($message != "")
{
print "<b>$message</b>";
}
?>

<form action = "" method = "post">
<pre>
&#203;&#238;&#227;&#232;&#237;: <input type = 'text' name = 'login2'>
&#207;&#224;&#240;&#238;&#235;&#252;: <input type = 'password' name = 'pass2'><input type="submit" name="go" value="GO">
</pre>
</form>

</body>

</html>
 

Andreika

"PHP for nubies" reader
nonename
домашнее задание :
-объяснить что значит * в [sql]SELECT id, login, pass * FROM users WHERE login='$login' and pass='$pass'[/sql]
- откуда в этом запросе появляются $login и $pass
- зачем с ними же сравнивать $login2 и $pass2 (ниже)
- зачем это запрос нужен и как и где используются его результаты
 

nonename

Новичок
Andreika
-объяснить что значит * в SQL:
В данном случае это просто ошибка

- откуда в этом запросе появляются $login и $pass
Я ввожу эти переменные, чтобы сравнить их с данными введенными пользователями. Если данные совпалдают, то пользователь перенаправляется на user.php.

- зачем это запрос нужен и как и где используются его результаты
Его результаты используются в таблице users (БД phpmm).
Вот она:

CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
login varchar(30),
pass varchar(30),
PRIMARY KEY(id) );
INSERT INTO users(login, pass) VALUES ('admin','123');
 

Andreika

"PHP for nubies" reader
nonename
где вводишь? зачем вводишь? а что тогда такое $login и чем оно отличается от $login2 ?
результаты запроса используются не в таблице,а в скрипте.. где они у тебя в твоем скрипте используются?
 

nonename

Новичок
$result = mysql_query("SELECT id, login, pass * FROM users WHERE
login='$login' and pass='$pass'", $link); - это фрагмент кода из книги. Я подумал, что это означает, что названия ячеек можно приравнять к переменной прямо в запросе.
-Чтобы сравнить данные из таблицы с данными введенными пользователями.
Как правильно сравнить данные из таблицы с данными введенными пользователем?

-~{}~ 25.10.05 08:59:

У кого - нибудь есть ссылки на готовые решения авторизации.
 

Фанат

oncle terrible
Команда форума
так и сравнить, как ты написал.
только тебе надо учитывать
PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.

вот только у тебя поля перечислены странно.
что это такое - id, login, pass *?
может, тебе сначала с базой данных работать научиться, а потом только за авторизацию?

-~{}~ 25.10.05 09:05:

Хочу сделать скрипт и разместить его бесплатно для всех в интернете.
У кого - нибудь есть ссылки на готовые решения авторизации.
ты, это... определился бы?..
так что ты хочешь? Скачать или разместить?
 

kruglov

Новичок
Что мешает жулику сразу зайти на user.php, минуя авторизацию?
 

Andreika

"PHP for nubies" reader
nonename
если ты думаешь, что после $result = mysql_query("SELECT id, login, pass * FROM users WHERE
login='$login' and pass='$pass'", $link); у тебя в $login и $pass будут логин и пароль пользователя, то ты глубоко ошибаешся %)
повырывал непонятных тебе примеров из книги и пытаешся их соплями приклеить друг к другу %)
 

nonename

Новичок
Фанат О том, что их нужно экранировать я знаю и умею это делать. Главная сейчас задача, что бы вообще, что-нибудь работать стало. Скачать или сравнить? Да я просто хотел посмотреть как сделано у других.

Andreika Не получится? Ну а как тогда делать то. Может вернутся к тому с чего писать - mysql_fetch _array?
 

Andreika

"PHP for nubies" reader
nonename
ага, возвращаемся к 1му варианту )
соединение с базой вроде работает, теперь надо запрос сделать правильный... к первому варианту добавить нужное условие, чтобы не тянуть все записи.. давай, сочиняй, пиши )

Фанат
эт вопрос преждевременный.. )
 

nonename

Новичок
Фанат через авторизацию, его туда скрипт перенаправит. он на это имеет право. А mysql_fetch_array не разрешает ничеги делать с элементами ассоциированного массива кроме возможности их напечатать.

А вот запрос:
$result = mysql_query("SELECT pass FROM users WHERE login='$login'");
 
Сверху