Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: aвторизация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: help
ЯД
Отправлено: 21 Января, 2008 - 11:17:52
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Янв. 2008  
Откуда: Санкт-Петербург


Помог: 0 раз(а)

[+]


Народ у меня есть HTML форма которая передает login & password этому сценарию. Как мне сделать так что бы этот сценарий проверял введенные login & password и если они есть в моей таблице MySQL направлял на страницу приветствия а если нет то на страницу регистрации!
<?PHP
$hostname="localhost";
$username="yad1";
$password="240286";
$dbName="yad1";
$userstable="users";
$login=$_POST['login'];
$pswd=$_POST['pswd'];
mysql_connect($hostname,$username,$password) or die("Не могу соединиться с базой данных MySQL!");
mysql_select_db($dbName) or die(mysql_error());
$query="SELECT * FROM users WHERE username = 'login' AND password = 'pswd'";

Пожалуйста скажите что не то и что надо добавить!!!!! Растерялся
 
 Top
EuGen Администратор
Отправлено: 21 Января, 2008 - 11:36:04
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. //Пусть reg.php - Ваш скрипт регистрации, home.php - страница приветствия
  3. $hostname="localhost";
  4. $username="yad1";
  5. $password="240286";
  6. $dbName="yad1";
  7. $userstable="users";
  8. $login=$_POST['login'];
  9. $pswd=$_POST['pswd'];
  10. mysql_connect($hostname,$username,$password) or die("Не могу соединиться с базой данных MySQL!");
  11. $query="SELECT * FROM users WHERE username = '".addslashes($login)."' AND password = '".addslashes($pswd)."'";
  12. $result=mysql_query($query);
  13. $redirect=mysql_num_rows($result)?"home.php":"reg.php";
  14. header("Location: ".$redirect);
  15.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Staind
Отправлено: 21 Января, 2008 - 11:46:12
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007  
Откуда: Планета сокровищ


Помог: 0 раз(а)

[+]


лучше так (с приминением mysql_real_escape_string):

PHP:
скопировать код в буфер обмена
  1. //Пусть reg.php - Ваш скрипт регистрации, home.php - страница приветствия
  2. $hostname="localhost";
  3. $username="yad1";
  4. $password="240286";
  5. $dbName="yad1";
  6. $userstable="users";
  7. $login=$_POST['login'];
  8. $pswd=$_POST['pswd'];
  9. mysql_connect($hostname,$username,$password) or die("Не могу соединиться с базой данных MySQL!");
  10. $query="SELECT * FROM users WHERE username = '".mysql_real_escape_string($login)."' AND password = '".mysql_real_escape_string($pswd)."'";
  11. $result=mysql_query($query);
  12. $redirect=mysql_num_rows($result)?"home.php":"reg.php";
  13. header("Location: ".$redirect);
 
 Top
ЯД
Отправлено: 21 Января, 2008 - 12:08:59
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Янв. 2008  
Откуда: Санкт-Петербург


Помог: 0 раз(а)

[+]


Люди спасибо огромное!! Вы даже не знаете как вы мне помогли! Я новичок и с этой авторизацией уже 2 дня колупаюсь! Еще раз СПАСИБО!!
Радость
 
 Top
вщпшы
Отправлено: 21 Марта, 2008 - 09:50:37
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




+1
спасибо! тоже воспользовался инфой
я вот это изменил

CODE (text):
скопировать код в буфер обмена
  1. $login=h$_POST['login'];
  2. $pswd=$_POST['pswd'];


на это на всякий пожарный
CODE (text):
скопировать код в буфер обмена
  1. $login=htmlspecialchars($_POST['login']);
  2. $pswd=htmlspecialchars($_POST['pswd']);

(Отредактировано автором: 21 Марта, 2008 - 11:05:13)

 
 Top
valenok
Отправлено: 21 Марта, 2008 - 13:51:23
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




теперь на всякий пожарный верните обратно
и сделайте как показал staind

а htmlspecialchars применяйте к выводу на экран.


-----
Truly yours, Sasha.
 
My status
 Top
вщпшы
Отправлено: 21 Марта, 2008 - 21:06:11
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




ага понятно спасибо
 
 Top
Kosteg
Отправлено: 21 Апреля, 2008 - 08:40:23
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




valenok, А подскажите пожалуйста, как остальные страницы сайта защитить, используя данную конструкцию.

(Отредактировано автором: 21 Апреля, 2008 - 08:46:11)

 
 Top
SION-ZENIT
Отправлено: 21 Апреля, 2008 - 13:25:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 148
Дата рег-ции: Июль 2007  
Откуда: SPb


Помог: 0 раз(а)




Храните в сессии переменную, которая будет озночать что пользователю можно смотреть страницу и если её нет просто не показывать страницу. Примерно так:
PHP:
скопировать код в буфер обмена
  1. if (!isset($_SESSION['enter'])) die ('Просмотр запрещен');
 
 Top
SergeantPEPPER
Отправлено: 23 Апреля, 2008 - 09:11:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


Помог: 0 раз(а)




Да, вариант с сессией - наверное самый оптимальный (а по-моему даже единственный подходящий).

Я бы сделал немного по-другому:

Как только пользователь был авторизован на сайте, в сессию пишется его логин (или чо нибудь подобное):

CODE (text):
скопировать код в буфер обмена
  1. $_SESSION['login'] = $login;


Логика работы всего сайта такая: на каждой странице сайта в начале проверяется на наличие эта сессионная переменная и если ее нет, то пользователь отсылается на страницу авторизации (например), в противном случае оставляем на странице:

CODE (text):
скопировать код в буфер обмена
  1. if (!isset ($_SESSION['login'])) header ('Location: ./aut.php');
 
 Top
Virgin
Отправлено: 04 Мая, 2008 - 07:55:01
Post Id


Частый гость


Покинул форум
Сообщений всего: 130
Дата рег-ции: Май 2008  


Помог: 0 раз(а)




Не понял Люди! А как сюда еще добавить условие, чтобы проверялось, если введенный пользователь админ то, например, выводил index.php если юзер, то index2.php? На примере такой таблицы?

id | username | password | type|
-------------------------------- ------
1 | user |1234 | user|
-------------------------------- ------
2 | admin |admin |admin|
-------------------------------- --------
 
 Top
Вездеход
Отправлено: 04 Мая, 2008 - 17:46:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




делаеш проверку по типу акка - юзверь или админ.
и в зависимости от этого подгружаеш нужную страницу - через инклуд например.


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
SION-ZENIT
Отправлено: 04 Мая, 2008 - 23:22:04
Post Id


Частый гость


Покинул форум
Сообщений всего: 148
Дата рег-ции: Июль 2007  
Откуда: SPb


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //Подключение к БД и запрос старт сессии
  3. ....
  4. // Само условие
  5. if ($row['type']=='admin')
  6. {
  7. $_SESSION['user']['type']='admin';
  8. header ("Location: index.php");
  9. }
  10. else
  11. {
  12. $_SESSION['user']['type']='user';
  13. header("Location: index2.php");
  14. }
  15. ?>

в файле index.php должна быть проверка сессии наподобии такой:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (isset($_SESSION['user']['type']) && $_SESSION['user']['type']=='admin')
  4. { //вывод страницы }
  5. else
  6. { //вывод ошибки}
  7. ?>
  8.  

(Отредактировано автором: 04 Мая, 2008 - 23:24:00)

 
 Top
Virgin
Отправлено: 06 Мая, 2008 - 07:56:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 130
Дата рег-ции: Май 2008  


Помог: 0 раз(а)




Спасибо попробую...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB