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
Форумы портала PHP.SU :: Версия для печати :: Авторизация пользователя
Форумы портала PHP.SU » PHP » Программирование на PHP » Авторизация пользователя

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

1. Anton63 - 15 Июля, 2009 - 09:03:17 - перейти к сообщению
Файл index.html
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_SESSION['var'] = 1){
  3. echo "Hello, ".$_SESSION['login'];
  4. }
  5. else{
  6. echo "
  7. <html>
  8. <head>
  9. <title>Главная страница</title>
  10. </head>
  11. <body>
  12. <table border = 2>
  13. <form method='POST' action='login.php'>
  14. <tr><td>
  15. <table>
  16. <tr><td>Логин:</td><td><input type='text' name='login' size='15'></td></tr>
  17. <tr><td>Пароль:</td><td><input type='password' name='pass' size='15'></td></tr>
  18. </table>
  19. </td></tr>
  20. <tr><td align=center><input type='submit' name='ok' value='Вход'></td></tr>
  21. </form>
  22. </table>
  23. </body>
  24. </html>";
  25. }
  26.  


Файл login.php
PHP:
скопировать код в буфер обмена
  1.  
  2. $db=mysql_connect('localhost', 'root', '');
  3. mysql_select_db('top10', $db);
  4.  
  5. // Обезвреживаем переменные
  6. $blogin = htmlspecialchars($_POST[login]);
  7. $bpass = htmlspecialchars($_POST[pass]);
  8.  
  9. //проверяем есть ли пользователь с таким login'ом и pass'ом
  10. $res=mysql_query("SELECT * FROM users WHERE login='$blogin' AND pass='$bpass'", $db);
  11. if(mysql_num_rows($res) != 1){    //такого пользователя нет
  12. echo "Введены не верные логин или пароль";
  13. }
  14. else{    //пользователь найден
  15. $_SESSION['login']=$blogin;    //устанавливаем login & pass
  16. $_SESSION['pass']=$bpass;
  17. $_SESSION['var']=1;
  18. Header("Location: index.html");    // перенаправляем на index.html
  19. }
  20.  


Пытаюсь сделать авторизацию пользователя... Т.е. если пользователь авторизован и для него создана сессия со значением "$_SESSION['var']=1;", то выводится
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "Hello, ".$_SESSION['login'];
  3.  


Если нет, то выводится форма для авторизации. При заполнении формы пользователь проверяет введённые данные и если они верны, то создаётся сессия и в массив записываются его данные:
PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['login']=$blogin;
  3. $_SESSION['pass']=$bpass;
  4. $_SESSION['var']=1;
  5. Header("Location: index.html");
  6.  


После чего он попадает на главную страницу, где получает сообщение
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "Hello, ".$_SESSION['login'];
  3.  


Если в форму ввести неверные данные тогда выводится сообщение
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "Введены не верные логин или пароль";
  3.  

Если же введены верные данные, то при проверке
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_SESSION['var'] = 1)
  3.  

он всё равно выводит форму...
Гуру языка ПХП, подскажите, что я делаю не так...
2. Платинум - 15 Июля, 2009 - 09:45:52 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <? if(!isset($_SESSION['var']))
  3. {
  4. ваша форма
  5. }
  6. else
  7. {
  8. echo "Hello, "$_SESSION['login'];
  9. }
  10.  
  11.  

Это пример переделайте под свой код! ::smile24.gif::
(Добавление)
Anton63 пишет:
if($_SESSION['var'] = 1)

P.S. Тока что заметил знак = Это присвоение , а знак == это равно!
А в вашем случаи как понял "если равно "==", то"
3. Anton63 - 15 Июля, 2009 - 10:49:49 - перейти к сообщению
Ок... спасибо... домой приду-попробую... завтра отпишусь о результате.

А вообще я правильной дорогой иду, товарищи? Авторизация на главной странице сайта таким образом делается, через if???

Платинум пишет:

P.S. Тока что заметил знак = Это присвоение , а знак == это равно!
А в вашем случаи как понял "если равно "==", то"


Тысяча чертей... ведь раньше на C программировал... совсем забыл про "==". Ох уж мне эти переходы на другие языки программирования... ::dry.gif::
4. JustUserR - 15 Июля, 2009 - 12:08:38 - перейти к сообщению
Цитата:
А вообще я правильной дорогой иду, товарищи? Авторизация на главной странице сайта таким образом делается, через if???
Ну а как же еще? Вообще более "продвинутые" авторизации каждый раз могут запрашивать специальну таблиу в которой указана сессия залогиненного пользователя чтобы под одинм и темс же логином не могло сидеть несколько человек одновременно
Цитата:
Совсем забыл про ==
Я даже не знаю языка высокого уровня где было бы одно равно для сравнения
5. Roler - 15 Июля, 2009 - 17:54:48 - перейти к сообщению
JustUserR
Delphi.
6. Anton63 - 16 Июля, 2009 - 09:29:50 - перейти к сообщению
Пример:
Я нахожусь на файле boot.php в папке boot. Как мне перейти к файлу index.php, который находится папкой выше, при помощи header()?
7. JustUserR - 16 Июля, 2009 - 11:35:44 - перейти к сообщению
Вот так вот с помощью относиельных путей Header("Location: ../index.php");

 

Powered by ExBB FM 1.0 RC1