Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизайия с использованием сессий.
 
 автор: frisst   (05.01.2010 в 19:46)   письмо автору
 
 

Доброго времяни суток. Лазил по вашему форуму и нашёл скрипт авторизации с использованием сессий.


<?
  session_start
();
  
//если нажали кнопку
  
if ($_POST[sub])
  {
    require_once(
"config.php");
    
//проверяем данные на sql-inj
    
$login mysql_escape_string($_POST['login']);
    
$passw mysql_escape_string($_POST['passw']);

    
$result mysql_query("select * from users where login='$login'");
    
$data mysql_fetch_assoc($result);
    if (
mysql_num_rows($result)>0)
    {
      if (
$data['passw'] == $passw)
      {
        
//устанавливаем sessie
        
$_SESSION['login'] = $data['login'];
    
$_SESSION['passw'] = $data['passw'];
        echo 
"Доброго времяни суток ".$data['login']."!";
      }
      else echo 
"Не правильный пароль";
    }
  }

  
//если сессия заполнена
  
if ( (isset($_SESSION['login'])) && (isset($_SESSION['passw'])) )
  {
      require_once(
"config.php");
      
//находим в БД пользователя удовлетворяющего сессиям
      
$result mysql_query("select * from users where login='".$_SESSION['login']."' AND passw='".$_SESSION['passw']."'");
      
//если такой пользователь существует
      
if (mysql_num_rows($result) == 1)
      {
        
$data mysql_fetch_assoc($result);
        
//выводим на экран логин юзера
        
echo "<p>Привет <b>".$data['login']."</b>!";
      }
      
//если в БД нету такого пользователя то обнуляем кукисы и переходи к авторизации
      
else
      {
        echo 
"Пожалуйста, авторизуйтесь!";
        unset(
$_SESSION['login']);
        unset(
$_SESSION['passw']);
        echo 
"<head><meta http-equiv='refresh' content='1' url='index.php'></head>";
      }
  }
  else
      echo 
"<form method='post'>
              <table rules='all'>
                <tr><td colspan='2' align='center'><b>Авторизация</b></td></tr>
                <tr><td>Ваш логин</td><td><input type='text' name='login'></td></tr>
                <tr><td>Ваш пароль</td><td><input type='password' name='passw'></td></tr>
                <tr><td colspan='2' align='center'><input type='submit' name='sub' value='Отправить'></td></tr>
              </table>
            </form>"
;
?> 


Но в нём во время авторизации идёт проверка только по паролю:

if ($data['passw'] == $passw)
      {
        //устанавливаем sessie
        $_SESSION['login'] = $data['login'];
    $_SESSION['passw'] = $data['passw'];
        echo "Доброго времяни суток ".$data['login']."!";
      }
      else echo "Не правильный пароль";


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

  Ответить  
 
 автор: neadekvat   (05.01.2010 в 19:51)   письмо автору
 
   для: frisst   (05.01.2010 в 19:46)
 

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

  Ответить  
 
 автор: frisst   (05.01.2010 в 20:22)   письмо автору
 
   для: neadekvat   (05.01.2010 в 19:51)
 

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

  Ответить  
 
 автор: neadekvat   (05.01.2010 в 22:49)   письмо автору
 
   для: frisst   (05.01.2010 в 20:22)
 

А это уже немножко другой вопрос, согласитесь.

  Ответить  
 
 автор: Boeing   (05.01.2010 в 20:57)   письмо автору
 
   для: frisst   (05.01.2010 в 19:46)
 

    
    $result = mysql_query("select * from users where login='$login'"); 
    $data = mysql_fetch_assoc($result); 
    if (mysql_num_rows($result)>0) 
    { 
      if ($data['passw'] == $passw) 
      { 
        //устанавливаем sessie 
        $_SESSION['login'] = $data['login']; 
        $_SESSION['passw'] = $data['passw']; 
        echo "Доброго времяни суток ".$data['login']."!"; 
      } 
      else echo "Не правильный пароль"; 
    }
      else echo "Не правильный логин";
 


чо-то ка-то так=)

  Ответить  
 
 автор: neadekvat   (05.01.2010 в 22:50)   письмо автору
 
   для: Boeing   (05.01.2010 в 20:57)
 

Нет прямого противопостовления - "неправильный" пишется слитно.

  Ответить  
 
 автор: Boeing   (06.01.2010 в 00:51)   письмо автору
 
   для: neadekvat   (05.01.2010 в 22:50)
 

ну, я просто скопипастил))) кстати, противопоставление пишется через А. Проверочное слово - то же простивопостАААвить :) Согласен?:)

  Ответить  
 
 автор: neadekvat   (06.01.2010 в 01:02)   письмо автору
 
   для: Boeing   (06.01.2010 в 00:51)
 

А тут "тоже", уж если употреблять, то слитно))

  Ответить  
 
 автор: IceGhost   (06.01.2010 в 01:09)   письмо автору
 
   для: neadekvat   (06.01.2010 в 01:02)
 

Скоро Boeing и neadekvat будут общаться в Форуме на исключительно правильном, грамотном, Русском языке. :)

  Ответить  
 
 автор: neadekvat   (06.01.2010 в 01:16)   письмо автору
 
   для: IceGhost   (06.01.2010 в 01:09)
 

> на исключительно правильном, грамотном, Русском языке. :)
Более нелогичным выражением является только набор слов, НЕ связанных по смыслу.
Абсолютно грамотно говорить/писать не получиться ни у кого и никогда - это просто нереально =) Но к этому надо стремиться, согласитесь.
Хотя порой просто-напросто лень выписывать все эти "ться" и "тся", поставил "ццо" и счастлив.

  Ответить  
 
 автор: IceGhost   (06.01.2010 в 01:19)   письмо автору
 
   для: neadekvat   (06.01.2010 в 01:16)
 

исключительно правильном, грамотном

В это словосочетание мной был вложен соответствующий смысл. ;)

  Ответить  
 
 автор: Boeing   (06.01.2010 в 01:15)   письмо автору
 
   для: neadekvat   (06.01.2010 в 01:02)
 

Нет:))) я имею ввиду не тоже - сочинительный союз, а то же - местоимение с частицей=)

  Ответить  
 
 автор: neadekvat   (06.01.2010 в 01:17)   письмо автору
 
   для: Boeing   (06.01.2010 в 01:15)
 

Сказать по правде, я вообще не улавливаю логики в использовании "то(же)" в том предложении)

  Ответить  
 
 автор: Boeing   (06.01.2010 в 01:21)   письмо автору
 
   для: neadekvat   (06.01.2010 в 01:17)
 

ну всо я обидел ся=0)

  Ответить  
 
 автор: neadekvat   (06.01.2010 в 01:32)   письмо автору
 
   для: Boeing   (06.01.2010 в 01:21)
 

> обидел ся
Зачем вы себя обидели? о.О

  Ответить  
 
 автор: Boeing   (06.01.2010 в 01:37)   письмо автору
 
   для: neadekvat   (06.01.2010 в 01:32)
 

ну мне просто делать нефиг полвторого ночи, вот я взял и обидел ся=)))

  Ответить  
 
 автор: neadekvat   (06.01.2010 в 01:40)   письмо автору
 
   для: Boeing   (06.01.2010 в 01:37)
 

Ну, почитайте что-нибудь полезное, например.

  Ответить  
 
 автор: Boeing   (06.01.2010 в 01:42)   письмо автору
 
   для: neadekvat   (06.01.2010 в 01:40)
 

пасиб)))

  Ответить  
 
 автор: neadekvat   (06.01.2010 в 02:02)   письмо автору
 
   для: Boeing   (06.01.2010 в 01:42)
 

Обращайся, я еще что-нибудь подберу))

  Ответить  
 
 автор: t3ma   (06.01.2010 в 10:21)   письмо автору
 
   для: frisst   (05.01.2010 в 19:46)
 

сколько раз можно говорить не храните пароль в сессиях

  Ответить  
 
 автор: Trianon   (06.01.2010 в 12:06)   письмо автору
 
   для: t3ma   (06.01.2010 в 10:21)
 

последнее слово лишнее.

  Ответить  
 
 автор: frisst   (06.01.2010 в 12:14)   письмо автору
 
   для: t3ma   (06.01.2010 в 10:21)
 

Да я знаю что это опасно, но для меня нет выхода лучше (или я просто про него не знаю)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования