Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с авторизацией ((
 
 автор: vipeople   (21.08.2009 в 14:31)   письмо автору
 
 

Товарищи, я еще пока чайник в 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:57)   письмо автору
 
   для: vipeople   (21.08.2009 в 14:31)
 

Да, и еще когда пытаюсь вывести переменную $result, то получаю следующее Resource id #3

  Ответить  
 
 автор: vipeople   (21.08.2009 в 15:36)   письмо автору
 
   для: 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"Введен неверный пароль или логин!";
}
?>

Какой бы логин\пароль не был бы введен (даже если верные) пишет "Введен неверный пароль или логин!"

  Ответить  
 
 автор: neadekvat   (21.08.2009 в 15:23)   письмо автору
 
   для: vipeople   (21.08.2009 в 14:31)
 

Мне одному кажется, что этот код – дырка от бублика?
Во-первых, данные от пользователя вообще никак не обрабатываются.
Во-вторых, зачем @ перед mysql_connect ?
В-третьих, название таблицы и столбцов лучше брать в обратные кавычки «`»

А дальше вам там уж снизу чего-то посоветовали…

Еще лучше - открыть глаза и посмотреть несколько тем ниже, уже третья тема подряд про авторизацию. Там и основы посмотрите и как защититься увидите.

  Ответить  
 
 автор: virtus1k   (21.08.2009 в 15:28)   письмо автору
 
   для: neadekvat   (21.08.2009 в 15:23)
 

[поправлено модератором]

  Ответить  
 
 автор: vipeople   (21.08.2009 в 16:01)   письмо автору
 
   для: 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 "Введен неверный Логин или пароль!";

?>

Вот что получлось в итоге.

Всем спасибо.

  Ответить  
 
 автор: neadekvat   (21.08.2009 в 18:40)   письмо автору
 
   для: vipeople   (21.08.2009 в 16:01)
 

Оставьте на последок тут адресок вашего хелп-деска.
Загляним, посмотрим, как работает.

Меня больше всего прикалывает, что «заявка.хтмл» будет открываться и без всяких логинов, был бы только адрес известен..

  Ответить  
 
 автор: vipeople   (16.11.2009 в 11:59)   письмо автору
 
   для: neadekvat   (21.08.2009 в 18:40)
 

Нет, это так, для примера. Там все будет работать посредством сессий.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования