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]   

> Без описания
BoJlod9I
Отправлено: 25 Февраля, 2011 - 16:33:22
Post Id


Частый гость


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


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




сделал авторизацию на сессии но она у меня не пашет чего-то =(

форма входа
PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Вход на сайт</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10. <form method="post" action="start.php" >
  11. Логин:<br> <input type="text" size=20 name="user" value=<?PHP echo $_SESSION['user'] ?>><br>
  12. Пароль:<br> <input type="password" size=20 name="password" value=<?PHP echo $_SESSION['password'] ?>><br>
  13. <input type=submit value=Вход>
  14. </form>
  15.  
  16. </body>
  17. </html>


скрипт авторизации


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. require_once ('db.php');
  4.  
  5.  
  6. $sp = $_SESSION['password'];
  7. $squ = mysql_query("SELECT pass FROM users WHERE name='".$_SESSION['user']."'");
  8. $auth = mysql_fetch_array($squ);
  9.         if ($sp == $auth['pass'])
  10.         {
  11.                 header ("location: index.php");
  12.         }
  13.         else
  14.         {
  15.                 echo "Авторизация не прошла!";
  16.         }
  17.  
  18. ?>

(Отредактировано автором: 25 Февраля, 2011 - 16:34:42)

 
 Top
Andruxa
Отправлено: 25 Февраля, 2011 - 16:42:07
Post Id



Частый гость


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


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





Должно быть в самом начале скрипта!
 
 Top
BoJlod9I
Отправлено: 25 Февраля, 2011 - 16:46:42
Post Id


Частый гость


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


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




Andruxa ты имееш ввиду в форме или просто выше require
 
 Top
Andruxa
Отправлено: 25 Февраля, 2011 - 16:49:56
Post Id



Частый гость


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


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




BoJlod9I пишет:
Andruxa ты имееш ввиду в форме или просто выше require

выше require.

Для чего в форме value=<?PHP echo $_SESSION['user'] ?>>, ведь пользователь должен эти поля заполнить.
(Добавление)
Помоему у тебя все немного запутано.
Если по логике. Пользователь ввел данные, нажал на кнопку, данные принял скрипт, проверил в БД на соответствие/несоответствие, если есть такой пользователь, то можно занести в сессию необходимы данные.
Вот как я реальзовал регистрацию у себя, может пригодится
PHP:
скопировать код в буфер обмена
  1.     db_connect();
  2. if (isset($_POST['login']) && isset($_POST['password'])){
  3.     $login = mysql_real_escape_string($_POST['login']);
  4.     $password = ($_POST['password']);    
  5.      $query = "SELECT id, name_users, status, dostup  FROM users WHERE name_users='$login' AND password='$password' LIMIT 1";
  6.     $sql = mysql_query($query) or die(mysql_error());
  7.      if (mysql_num_rows($sql) == 1) {
  8.         while ($row = mysql_fetch_assoc($sql))
  9.         {
  10.         $_SESSION['id'] = $row['id'];
  11.         $_SESSION['login'] = $row['name_users'];
  12.         $_SESSION['status'] = $row['status'];
  13.         $_SESSION['dostup'] = $row['dostup'];
  14.         }
  15.         echo "Успешный вход";
  16.         header ("location: index.php");
  17.            }
  18.     else {
  19.         $error = $error."<LI>Логин или пароль введен не верно!\n";
  20.         echo "<b>ОШИБКА!</b><br>".$error;
  21.     }
  22. }

(Отредактировано автором: 25 Февраля, 2011 - 16:58:44)

 
 Top
BoJlod9I
Отправлено: 25 Февраля, 2011 - 16:58:12
Post Id


Частый гость


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


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




Andruxa а что там не нужно это?
как тогда сделать просто через сессию я хз
(Добавление)
А как тогда должна выглядеть форма и авторизация я чет не понял
 
 Top
Andruxa
Отправлено: 25 Февраля, 2011 - 17:36:27
Post Id



Частый гость


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


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




Вот почитай по сесмиям:
http://www.php.su/articles/?cat=...les&page=070

А вообще для понимания сделай простой пример их 2х файлов.
test1.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ?>
  3. <form action="" method="post" enctype="multipart/form-data">
  4. Имя: <input type="text" name="name" /><input type="submit" name="ok" />
  5. </form>
  6. <a href="test2.php">Сессия</a>
  7. <?PHP
  8. if(isset($_POST['ok'])){
  9. $_SESSION['name']=$_POST['name'];
  10. }
  11. ?>


И файл test2.php с текстом

Т.е у тебя в $_SESSION['name'] будет храниться то что ввел в форму пока браузер не закроешь.
 
 Top
ALEN
Отправлено: 25 Февраля, 2011 - 20:09:16
Post Id



Участник


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


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




Andruxa
Как все геморно, много данных хранится в сессиях и вообще про такую фигню в прошлом посте написал, ломать ее очень быстро можно.

BoJlod9I
Не дублируй темы
 
 Top
JustUserR
Отправлено: 25 Февраля, 2011 - 23:09:26
Post Id



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


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


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




BoJlod9I В действительности предполагаемый вариант решения задачи не отвечает базовым требования безопасности web-приложений, в силу использования конструкций слияния разделенных элементов различного исходного уровня трактования в процессе интерполяции, без проведения предшествующих действий по обеспечению коррекции разделяющих и управляющих вложенных объектов и сопоставления кодовой таблицы, которые могут быть произведены на основании использования функции mysql_real_escape_string


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
evgenijj
Отправлено: 25 Февраля, 2011 - 23:26:30
Post Id



Участник


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


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




В общем-то Andruxa все объяснил -- он допустил лишь одну маленькую неточность

PHP:
скопировать код в буфер обмена
  1. $login = mysql_real_escape_string($_POST['login']);
  2. $password = ($_POST['password']);    
  3. $query = "SELECT id, name_users, status, dostup  FROM users WHERE name_users='$login' AND password='$password' LIMIT 1";

Нелогично -- подразумевая атаку на поле "login", и защищая его с помощью mysql_real_escape_string(), он не ждет атаки на поле "password" -- хотя в mysql запрос подставляет оба значения уже без защиты.
 
 Top
LEONeso
Отправлено: 26 Февраля, 2011 - 01:51:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




Лучше хранить значения логина и пароля в md5, далее выводить это значение и кодировать введенное пользователем данные форм в md5, потом уже их сравнивать меж собой (сессия и бд/переменные).


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
BoJlod9I
Отправлено: 26 Февраля, 2011 - 01:55:31
Post Id


Частый гость


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


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




LEONeso можешь мне асю свою дать!
 
 Top
evgenijj
Отправлено: 26 Февраля, 2011 - 04:24:47
Post Id



Участник


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


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




Ну так, навскидку...
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ( !isset( $_SESSION['name'] ) {
  3.   if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  4.     if ( isset( $_POST['name'] and isset( $_POST['password'] ) {
  5.       $query = "SELECT * FROM users WHERE name='".mysql_escape_string($_POST['name'])."' AND password='".mysql_escape_string($_POST['password'])."' LIMIT 1";
  6.       $res = mysql_query( $query );
  7.       if ( mysql_num_rows( $res ) > 0 ) {
  8.         $user = mysql_fetch_array( $res );
  9.         $_SESSION['name'] = $user['name'];
  10.       }
  11.       header( 'Location: '.$_SERVER['PHP_SELF'] );
  12.     }
  13.   }
  14. }
  15. ?>
  16. <html>
  17. <head>
  18. <title>Наш сайт</title>
  19. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
  20. </head>
  21. <body>
  22. <?PHP
  23. if ( isset( $_SESSION['name'] ) {
  24.   echo '<p>Привет, '.$_SESSION['name'].'</p>';
  25. } else {
  26.   echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'" >';
  27.   echo 'Логин: <input type="text" name="user" value="" /><br/>';
  28.   echo 'Пароль: <input type="password" name="password" value="" /><br/>';
  29.   echo '<input type="submit" value="Вход" />';
  30.   echo '</form>';
  31. }
  32. ?>
  33. </body>
  34. </html>

(Отредактировано автором: 26 Февраля, 2011 - 04:27:38)

 
 Top
ALEN
Отправлено: 26 Февраля, 2011 - 14:18:00
Post Id



Участник


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


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




evgenijj
Ну вот уже хоть использовать можно)))
 
 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