|
|
|
| Товарищи, я еще пока чайник в php. Решил вот состряпать один сайт (сайт helpdesk). Не хочется брать ничего из готовых (да и выбор не особо велик). Встала проблема с авторизацией. Имеется вот такой код
...
@mysql_connect($hostname,$username,$password) OR DIE("Нет соединения с базой данных");
mysql_select_db($dbName) or die(mysql_error());
$log = $_POST['login'];
$pass = $_POST['pwd'];
$query = "select count(*) from users where login = '$log' and pwd = '$pass'";
$result = mysql_query($query);
...
Скрипт отрабтывается, ошибок не возникает.
Вопрос: Ну и что дальше мне с этим делать??? | |
|
|
|
|
|
|
|
для: vipeople
(21.08.2009 в 14:31)
| | Да, и еще когда пытаюсь вывести переменную $result, то получаю следующее Resource id #3 | |
|
|
|
|
|
|
|
для: vipeople
(21.08.2009 в 14:57)
| | В итоге вот что получилось:
<?php
/* Этот скрипт получает переменные из index.html */
/* Переменные для соединения с базой данных */
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "helpdesk";
/* Таблица MySQL, в которой хранятся данные */
$userstable = "users";
/* создать соединение */
@mysql_connect($hostname,$username,$password) OR DIE("Нет соединения с базой данных");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());
$log = $_POST['login'];
$pass = $_POST['pwd'];
/* составить запроса на получение и сравнение пользователя с таблицей */
$query = "select count(*) from $userstable where login = '$log' and pwd = '$pass'";
$result = mysql_query($query);
while ($f = mysql_fetch_array($result, MYSQL_ASSOC))
{
if ($f["login"]==$_POST['login'] && $f["pwd"]==$_POST['pwd'])
{
header("Location: ../../zayavka.htm");
}
else echo"Введен неверный пароль или логин!";
}
?>
Какой бы логин\пароль не был бы введен (даже если верные) пишет "Введен неверный пароль или логин!" | |
|
|
|
|
|
|
|
для: vipeople
(21.08.2009 в 14:31)
| | Мне одному кажется, что этот код – дырка от бублика?
Во-первых, данные от пользователя вообще никак не обрабатываются.
Во-вторых, зачем @ перед mysql_connect ?
В-третьих, название таблицы и столбцов лучше брать в обратные кавычки «`»
А дальше вам там уж снизу чего-то посоветовали…
Еще лучше - открыть глаза и посмотреть несколько тем ниже, уже третья тема подряд про авторизацию. Там и основы посмотрите и как защититься увидите. | |
|
|
|
|
|
|
|
для: neadekvat
(21.08.2009 в 15:23)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: virtus1k
(21.08.2009 в 15:28)
| | <?php
/* Этот скрипт получает переменные из index.html */
/* Переменные для соединения с базой данных */
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "helpdesk";
/* Таблица MySQL, в которой хранятся данные */
$userstable = "users";
/* создать соединение */
@mysql_connect($hostname,$username,$password) OR DIE("Нет соединения с базой данных");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());
$log = $_POST['login'];
$pass = $_POST['pwd'];
/* составить запроса на получение и сравнение пользователя с таблицей */
$query = "select count(*) from $userstable where login = '$log' and pwd = '$pass'";
$result = mysql_query($query);
$row = mysql_fetch_row($result );
if ($row['0']==1)
header("Location: ../../zayavka.htm");
else echo "Введен неверный Логин или пароль!";
?>
Вот что получлось в итоге.
Всем спасибо. | |
|
|
|
|
|
|
|
для: vipeople
(21.08.2009 в 16:01)
| | Оставьте на последок тут адресок вашего хелп-деска.
Загляним, посмотрим, как работает.
Меня больше всего прикалывает, что «заявка.хтмл» будет открываться и без всяких логинов, был бы только адрес известен.. | |
|
|
|
|
|
|
|
для: neadekvat
(21.08.2009 в 18:40)
| | Нет, это так, для примера. Там все будет работать посредством сессий. | |
|
|
|