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 :: Авторизация пользователя

 PHP.SU

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


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

> Описание: Проблеммы с сессией
Anton63
Отправлено: 15 Июля, 2009 - 09:03:17
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июль 2009  


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




Файл 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.  

Если же введены верные данные, то при проверке

он всё равно выводит форму...
Гуру языка ПХП, подскажите, что я делаю не так...
 
 Top
Платинум
Отправлено: 15 Июля, 2009 - 09:45:52
Post Id



Частый гость


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


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




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. Тока что заметил знак = Это присвоение , а знак == это равно!
А в вашем случаи как понял "если равно "==", то"

(Отредактировано автором: 15 Июля, 2009 - 10:30:53)

 
My status
 Top
Anton63
Отправлено: 15 Июля, 2009 - 10:49:49
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июль 2009  


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




Ок... спасибо... домой приду-попробую... завтра отпишусь о результате.

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

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

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


Тысяча чертей... ведь раньше на C программировал... совсем забыл про "==". Ох уж мне эти переходы на другие языки программирования... ::dry.gif::
 
 Top
JustUserR
Отправлено: 15 Июля, 2009 - 12:08:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Цитата:
А вообще я правильной дорогой иду, товарищи? Авторизация на главной странице сайта таким образом делается, через if???
Ну а как же еще? Вообще более "продвинутые" авторизации каждый раз могут запрашивать специальну таблиу в которой указана сессия залогиненного пользователя чтобы под одинм и темс же логином не могло сидеть несколько человек одновременно
Цитата:
Совсем забыл про ==
Я даже не знаю языка высокого уровня где было бы одно равно для сравнения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Roler
Отправлено: 15 Июля, 2009 - 17:54:48
Post Id



Посетитель


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


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




JustUserR
Delphi.
 
 Top
Anton63
Отправлено: 16 Июля, 2009 - 09:29:50
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июль 2009  


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




Пример:
Я нахожусь на файле boot.php в папке boot. Как мне перейти к файлу index.php, который находится папкой выше, при помощи header()?
 
 Top
JustUserR
Отправлено: 16 Июля, 2009 - 11:35:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Вот так вот с помощью относиельных путей Header("Location: ../index.php");


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB