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 »   

> Без описания
Prog
Отправлено: 19 Апреля, 2010 - 20:24:13
Post Id



Частый гость


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


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




Вот такое дело , сделал скрипт авторизации , и хочу что бы после того как игрок ввел данные оно его запомнило его имя и пароль .
PHP:
скопировать код в буфер обмена
  1. <form method="post">
  2. <?
  3. $userName=$_REQUEST['userName'];
  4. $pass=$_REQUEST['pass'];
  5. if(empty($userName))
  6. {
  7. print <<<HERE
  8. <table>
  9. <tr>
  10.         <td>User Name</td>
  11.         <td><input type="text" name="userName"></td>
  12. </tr>
  13. <tr>
  14.         <td>Password</td>
  15.         <td><input type="password" name="pass"></td>
  16. </tr>
  17. <tr>
  18.         <td><input type="submit"></td>
  19. </tr>
  20. </table>
  21. HERE;
  22. }else{
  23. include('db_conn.php');
  24. $res=mysql_query("SELECT * FROM users WHERE name='$userName' AND password='$pass';");
  25. if(mysql_num_rows($res)==1)
  26. {
  27. print "Добро пожаловать $userName";
  28. }else{
  29. print "Неправильный логин или пароль";
  30. }
  31. }
  32. ?>
  33. </form>

Ну вот такой скрипт , помогите плз , раньше дело с сессиями не имел , а что и читал о них не понимаю нечего , скажите плз как можно сделать что бы оно запомнило $userName и $pass ?
 
 Top
altermann
Отправлено: 19 Апреля, 2010 - 21:46:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


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




Вначале скрипта надо сессию инициализировать:

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

плюс к этому нужно присвоить значения:
PHP:
скопировать код в буфер обмена
  1. $_SESSION['userName']=$_REQUEST['userName'];
  2. $_SESSION['pass']=$_REQUEST['pass'];


session_register - устаревшая функция, лучше $_SESSION

(Отредактировано автором: 19 Апреля, 2010 - 21:50:57)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
Prog
Отправлено: 19 Апреля, 2010 - 22:32:47
Post Id



Частый гость


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


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




То есть его нужно разбить на 2 файла ?
 
 Top
chaynyk
Отправлено: 19 Апреля, 2010 - 22:43:43
Post Id



Гость


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


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




Да, только не стоит в открытую хранить данные(userName,pass) в сессии.
Цитата:
ProgТо есть его нужно разбить на 2 файла ?

Данные сессии хранять на машине(комп) пользователя.
И еще мой совет, чтоб лекго не ломанули бд. Хотя бы, по простетски:
PHP:
скопировать код в буфер обмена
  1.  
  2. $userName=strip_tags($_REQUEST['userName']);
  3. $pass=strip_tags($_REQUEST['pass']);
  4.  

А потом, запрос в БД

(Отредактировано автором: 19 Апреля, 2010 - 22:51:53)



-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
altermann
Отправлено: 19 Апреля, 2010 - 22:52:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


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




Не обязательно разбивать на 2 файла.

Данные сессии хранятся на сервере, а на компе пользователя хранится идентификатор сессии в куки.


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
chaynyk
Отправлено: 19 Апреля, 2010 - 22:58:30
Post Id



Гость


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


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




altermann пишет:
Не обязательно разбивать на 2 файла.

Данные сессии хранятся на сервере, а на компе пользователя хранится идентификатор сессии в куки.

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


-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
JustUserR
Отправлено: 20 Апреля, 2010 - 13:41:07
Post Id



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


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


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




chaynyk пишет:
$userName=strip_tags($_REQUEST['userName']);
В данном случае гораздо важнее заэкранировать текст а не удалять в нем теги - ведь SQL-инъекцию можно сделать только подставив кавычки или слеши в соответствующих местах (А сами HTML-теги могут повредить разве только в том случае когда эти данные напрямую будут подставлять в генерируемую HTML-страницу) С учетом особенностей кодировок соединения и хранимых данных а также текущей локали - лучше использовать функцию mysql_real_escape_string


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



Частый гость


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


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




chaynyk пишет:
Да, только не стоит в открытую хранить данные(userName,pass) в сессии.
Цитата:
ProgТо есть его нужно разбить на 2 файла ?

Данные сессии хранять на машине(комп) пользователя.
И еще мой совет, чтоб лекго не ломанули бд. Хотя бы, по простетски:
PHP:
скопировать код в буфер обмена
  1.  
  2. $userName=strip_tags($_REQUEST['userName']);
  3. $pass=strip_tags($_REQUEST['pass']);
  4.  

А потом, запрос в БД

Я только учусь работать с БД и врядли кто то ее будет ламать ))) Но все же спасибо за совет )
(Добавление)
Мало что понял из этого , пожалуйста на примере этого скрипта , вставьте что куда и как .
 
 Top
JustUserR
Отправлено: 21 Апреля, 2010 - 13:28:11
Post Id



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


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


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




Prog пишет:
Мало что понял из этого , пожалуйста на примере этого скрипта , вставьте что куда и как
Замените функцию strip_tags на mysql_real_escape_string или скомбирируйте их - ведь при записи в БД необходимо обеспечить экранирование данные с учетом кодировки соединения и текущей локали


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



Частый гость


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


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




JustUserR пишет:
Prog пишет:
Мало что понял из этого , пожалуйста на примере этого скрипта , вставьте что куда и как
Замените функцию strip_tags на mysql_real_escape_string или скомбирируйте их - ведь при записи в БД необходимо обеспечить экранирование данные с учетом кодировки соединения и текущей локали

Из того как защитить БД я понял , я не понял куда вставить сессии , я вообще немогу нечего с ними сделать , потому пожалуйста седлайте что бы после авторизации имя и пас сохранялись в сессии )
 
 Top
altermann
Отправлено: 21 Апреля, 2010 - 20:41:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


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




Во втором посте написано как сохранять переменные в сессии (присваиваешь в массив $_SESSION).


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
Prog
Отправлено: 21 Апреля, 2010 - 21:03:27
Post Id



Частый гость


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


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




выдает ошибку
 
 Top
markus4
Отправлено: 21 Апреля, 2010 - 21:16:27
Post Id



Гость


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


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




Наверное пробел перед объявлением сессии, вот и ошибка.
<? // Первая строка Перед ней НЕ должно быть ни одного пробела!
session_start(); // вторая строка также ни одного пробела.
........ Твой код
$_SESSION['LOGIN']=$login;
$_SESSION['PASS']=$pass;

Забрать значение обратно из сессии можешь на любой странице,
только не забудь на этой странице опять, и без пробелов, с самого начала файла:
<?
session_start();


-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
altermann
Отправлено: 21 Апреля, 2010 - 21:25:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


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




Prog пишет:
выдает ошибку

Какую ошибку?


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
JustUserR
Отправлено: 22 Апреля, 2010 - 13:32:41
Post Id



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


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


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




Prog пишет:
Из того как защитить БД я понял , я не понял куда вставить сессии , я вообще немогу нечего с ними сделать , потому пожалуйста седлайте что бы после авторизации имя и пас сохранялись в сессии )
Идентификатор сессии может передаваться с помощью cookie и с помощью query-переменной PHPSESSID - таким образом даже если у вас вывоится что-то пере выводом HTTP-заголовков и cookie не устанавливаются - то вы можете использовать второй вариант передачи идентификатора или организовать это вручную


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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