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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Extazy
Отправлено: 10 Января, 2010 - 22:39:41
Post Id


Посетитель


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


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




Здравствуйте.
Помогите, пожалуйста, в форму авторизации на сайте добавить сессию.. что-то у меня всё путается.. не получается разобраться..

PHP:
скопировать код в буфер обмена
  1.             <?PHP
  2.             if($_POST['login'] & $_POST['pass'])
  3.             {
  4.                 $login=$_POST['login'];
  5.                 $pass=$_POST['pass'];
  6.  
  7.                 require("db.php");
  8.  
  9.                 @mysql_connect($server,$dbuser,$dbpassword) or die("Ошибка: ".mysql_error());
  10.                 @mysql_select_db($database_name) or die("Введено неправильное название базы данных.");
  11.  
  12.                 $sql = mysql_query("SELECT * FROM users WHERE login='$login' AND pass='$pass'");
  13.                 if(mysql_num_rows($sql)==1)
  14.                 {
  15.                     $im = mysql_query("SELECT name FROM users WHERE login='$login'");
  16.                     print "Привет, ".mysql_result ($im, 0)."!";
  17.                 }
  18.                 else
  19.                 {
  20.                     echo "Введённые данные неверны!";
  21.                 }
  22.             }
  23.             else
  24.             {
  25.                 echo "Авторизация:
  26.            <br /><form name=\"input\" action=\"index.php\" method=\"post\">
  27.            <br /><input type=\"text\" name=\"login\" onclick=\"this.value=''\" value=\"Введите логин\" />
  28.            <br /><input type=\"text\" name=\"pass\" onclick=\"this.value=''\" value=\"Введите пароль\" />
  29.            <input type=\"submit\" value=\"Войти\" /></form>";
  30.                 }
  31.             ?>


Заранее буду оч благодарен!
(Добавление)
PHP:
скопировать код в буфер обмена
  1. =========основная форма========
  2. if (IsLogged())
  3.         return "Привет, ".mysql_result ($im, 0)."!" .logout_form();
  4. else
  5.         return "Авторизуйтесь <br /><br />" . login_form();
  6.  
  7. =========авторизация=========
  8. function login_form()
  9. {
  10.         return "<form name=\"input\" action=\"login.php\" method=\"post\">
  11.            <br /><input type=\"text\" name=\"login\" onclick=\"this.value=''\" value=\"Введите логин\" />
  12.            <br /><input type=\"text\" name=\"pass\" onclick=\"this.value=''\" value=\"Введите пароль\" />
  13.            <input type=\"submit\" value=\"Войти\" /></form>";
  14. }
  15.  
  16. ========Выход=============
  17. function logout_form()
  18. {
  19.         return "<form action='login.php?logout=1' method='get'>
  20.                 <input type='hidden' name='logout' value='1'>
  21.                 <input type='submit' value='Выйти'>
  22.                 </form>";
  23. }
 
 Top
Ammy
Отправлено: 10 Января, 2010 - 22:48:21
Post Id



Частый гость


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


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




Вы не добавляли сессий.
Сессия начинается с использования session_start(); в начале файла (после тег <?php);

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. // .. код программы
  5.  
  6. ?>
  7.  
  8.  
 
 Top
Extazy
Отправлено: 10 Января, 2010 - 22:48:49
Post Id


Посетитель


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


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




не могу никак сессию связать с mysql..
 
 Top
JustUserR
Отправлено: 10 Января, 2010 - 22:49:22
Post Id



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


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


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




Extazy Добавьте в начало session_start а после успешной авторизации добавить зашифрованный пароль в сессионную переменную - и при следующих входах проверяйте его начилие и давайте соответствующий доступ


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Extazy
Отправлено: 10 Января, 2010 - 22:49:51
Post Id


Посетитель


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


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




Ammy, да я знаю.. просто мне никак не подобраться к написанию етой сессии...
щас буду выписывать свои мысли
 
 Top
Ammy
Отправлено: 10 Января, 2010 - 22:54:20
Post Id



Частый гость


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


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




Раз знаете, то почему в коде, который вы представили, нет ни намёка на использование натуральных сессий, а не вымышленных? JustUserR всё подобно описал.
 
 Top
Extazy
Отправлено: 10 Января, 2010 - 23:00:48
Post Id


Посетитель


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


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




вот немного доработал.. Растерялся

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         session_start();
  3.  
  4. function IsLogged()
  5. {
  6.         if (isset($_GET['logout']) and $_GET['logout']==1)
  7.                 { $_SESSION['login']=0; return 0; }
  8.  
  9.         elseif (isset($_POST['login']) and $_POST['login']!='' and isset($_POST['pass']) and $_POST['pass']!='')
  10.                 { $_SESSION['login']=1; return 1; }
  11.  
  12.         elseif (isset($_SESSION['login']) and $_SESSION['login']==1)
  13.                 return 1;
  14.  
  15.         else
  16.                 return 0;
  17. }
  18.  
  19.  
  20. if(IsLogged())
  21.     return
  22.     {
  23.         $login=$_POST['login'];
  24.         $pass=$_POST['pass'];
  25.  
  26.         require("db.php");
  27.  
  28.         @mysql_connect($server,$dbuser,$dbpassword) or die("Ошибка: ".mysql_error());
  29.         @mysql_select_db($database_name) or die("Введено неправильное название базы данных.");
  30.  
  31.         $sql = mysql_query("SELECT * FROM users WHERE login='$login' AND pass='$pass'");
  32.         if(mysql_num_rows($sql)==1)
  33.         {
  34.             print "Вы авторизованы".logout_form();
  35.         }
  36.         else
  37.         {
  38.           print "Введены неправильные данные";
  39.         }
  40.     }
  41.     else
  42.         return "Авторизуйтесь<br />".login_form();
  43.  
  44. function login_form()
  45. {
  46.         return "<form name=\"input\" action=\"index.php\" method=\"post\">
  47.            <br /><input type=\"text\" name=\"login\" onclick=\"this.value=''\" value=\"Введите логин\" />
  48.            <br /><input type=\"text\" name=\"pass\" onclick=\"this.value=''\" value=\"Введите пароль\" />
  49.            <input type=\"submit\" value=\"Войти\" /></form>";
  50. }
  51.  
  52. function logout_form()
  53. {
  54.         return "<form action='SessionLogin.php?logout=1' method='get'>
  55.                 <input type='hidden' name='logout' value='1'>
  56.                 <input type='submit' value='Выйти'>
  57.                 </form>";
  58. }
  59. ?>

(Добавление)
я сумел только так сделать.. по своему примеру из учебника..
может вы подскажете более простой вариант

(Отредактировано автором: 10 Января, 2010 - 23:06:01)

 
 Top
Hunter
Отправлено: 11 Января, 2010 - 00:01:03
Post Id



Частый гость


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


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




Extazy
Extazy пишет:
@mysql_connect($server,$dbuser,$dbpassword) or die("Ошибка: ".mysql_error());
@mysql_select_db($database_name) or die("Введено неправильное название базы данных.");

пользователю вовсе не желательно знать об ошибка сурипта в таких подробностях, более того - даже не рекомендовано), тем более это авторизация)
Подмигивание
(Добавление)
ошибку лучше записать где-нибудь в лог для себя, а пользователю достаточно просто написать что нибудь вроде - "вход сейчас невозможен" Подмигивание
 
 Top
JustUserR
Отправлено: 11 Января, 2010 - 00:29:08
Post Id



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


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


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




Hunter пишет:
Ошибку лучше записать где-нибудь в лог для себя
Действительно нужно оградить пользователь от технических подробностей Улыбка
Extazy Вам же будет полезным знать что проверка типа if(isset($abc)&&($abc=="ABC")) достаточно излишняя так как isset($abc) означает то же самое что и $abc==NULL - то есть если $abc уже равна скажем "ABC" или даже пустой строке "" то она полюбому не NULL и является определенной


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Extazy
Отправлено: 11 Января, 2010 - 09:11:36
Post Id


Посетитель


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


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




видимо у меня тут совсем бред написан.. Растерялся
 
 Top
EuGen Администратор
Отправлено: 11 Января, 2010 - 11:59:57
Post Id


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


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


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




Почитайте про, собственно, сессии, работу с ними. Про работу с БД. (Хотя Вам, видимо, стоит начать с основ).


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


Посетитель


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


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




так ладно.. начал с самого начала..
подскажите, почему в этом коде не работает сессия?

PHP:
скопировать код в буфер обмена
  1.             Авторизация:
  2.             <br /><form name="input" action="index.php" method="post">
  3.             <br /><input type="text" name="login" value="<?PHP $login ?>" />
  4.             <br /><input type="text" name="pass" value="<?PHP $pass ?>" />
  5.             <input type="submit" value="Войти" /></form>
  6.         <?PHP
  7.             session_start();
  8.             $_SESSION['username'] = $login;
  9.             echo 'Привет, '.$_SESSION['username']."<br>";
  10.         ?>


этот код прописан на одной и той же странице index.php

подскажите, пожалуйста
 
 Top
JustUserR
Отправлено: 12 Января, 2010 - 00:21:14
Post Id



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


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


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




Extazy Хотя бы вот так сделайте
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start();
  2. if(!isset($_POST['login']) { ?>
  3. Авторизация:<form name="input" action="<?PHP echo $_SERVER['PHP_SELF'] ?>" method="post">
  4. <input type="text" name="login" value="<?PHP $login ?>" /><input type="text" name="pass" value="<?PHP $pass ?>" /><br>
  5. <input type="submit" value="Войти" />
  6. </form>
  7. <?PHP }
  8. else {        $_SESSION['username'] = $login;
  9.           echo 'Привет, '.$_SESSION['username']."<br>"; }
  10.        ?>


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Extazy
Отправлено: 12 Января, 2010 - 01:51:45
Post Id


Посетитель


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


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




JustUserR, чтото не работает сессия в вашем коде.. обновляю страничку и логин пропадает, снова появляется поле для ввода данных.
(Добавление)
скажите, JustUserR, а вообще это правильно, можно так разрывать php скрипт как вы показали в своём примере? то есть после открывающей фигурной скобки закрываете php, пишете html, потом снова открываете пхп и дописываете скрипт.. это вообще грамматически верно на языке ПХП? Растерялся
 
 Top
Мелкий Супермодератор
Отправлено: 12 Января, 2010 - 12:44:51
Post Id



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


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


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




Extazy пишет:
скажите, JustUserR, а вообще это правильно, можно так разрывать php скрипт как вы показали в своём примере? то есть после открывающей фигурной скобки закрываете php, пишете html, потом снова открываете пхп и дописываете скрипт.. это вообще грамматически верно на языке ПХП?

Да, это грамматически верно. Интерпретатор весь код между ?> и <? интерпретирует в стандартный echo.

Extazy пишет:
обновляю страничку и логин пропадает, снова появляется поле для ввода данных.

Ну да, что в коде написано - то происходит. Если постом не передано значение - то вывести форму.


-----
PostgreSQL DBA
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB