За последние 24 часа нас посетили 22136 программистов и 1144 робота. Сейчас ищут 824 программиста ...

Готовое решение: пример авторизации COOKIE/SESSION

Тема в разделе "Решения, алгоритмы", создана пользователем Vladson, 4 сен 2006.

  1. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Сразу оговорюсь скрипт носит демонстрационный характер я не несу никакой ответственности за то что он делает...
    (это на тот случай если кто захочет вдруг заюзать его на своём сайте)

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

    PHP:
    1. <?php
    2. /*
    3.     С уважением Vladson.
    4.     [url=http://dkflbk.nm.ru/]http://dkflbk.nm.ru/[/url]
    5.     E-Mail:dkflbk@nm.ru
    6. */
    7. // URL скрипта
    8. $url = 'http://localhost/test/cookie.php';
    9. // Время жизни кукиша
    10. $duration = 1200;
    11.  
    12. // Список пользователей и паролей
    13. $members = array(
    14.     'Vladson'=>'123456'
    15. );
    16.  
    17. if ( isset($_POST['login']) && isset($_POST['username']) && isset($_POST['password']) ) {
    18.     $username = get_magic_quotes_gpc() ? stripslashes($_POST['username']) : $_POST['username'];
    19.     $password = get_magic_quotes_gpc() ? stripslashes($_POST['password']) : $_POST['password'];
    20.     if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    21.         setcookie('username', $username, time()+$duration);
    22.         setcookie('password', $password, time()+$duration);
    23.     }
    24.     header('Location: ' . $url);
    25.     exit;
    26. } elseif ( isset($_POST['logout']) ) {
    27.     setcookie('username');
    28.     setcookie('password');
    29.     header('Location: ' . $url);
    30.     exit;
    31. }
    32.  
    33. $registred_user = false;
    34. if ( isset($_COOKIE['username']) && isset($_COOKIE['password']) ) {
    35.     $username = get_magic_quotes_gpc() ? stripslashes($_COOKIE['username']) : $_COOKIE['username'];
    36.     $password = get_magic_quotes_gpc() ? stripslashes($_COOKIE['password']) : $_COOKIE['password'];
    37.     if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    38.         $registred_user = $username;
    39.     }
    40. }
    41.  
    42. ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
    43. <!--
    44.     С уважением Vladson.
    45.     [url=http://dkflbk.nm.ru/]http://dkflbk.nm.ru/[/url]
    46.     E-Mail:dkflbk@nm.ru
    47. -->
    48. <html>
    49.   <head>
    50.     <title>test</title>
    51.     <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    52.   </head>
    53.   <body>
    54.     <form action="<?=$url?>" method="post">
    55.       <p>
    56. <?if(!$registred_user):?>
    57.         Username:
    58.         <br>
    59.         <input type="text" name="username" value="Vladson">
    60.         <br>
    61.         Password:
    62.         <br>
    63.         <input type="password" name="password" value="123456">
    64.         <br>
    65.         <input type="hidden" name="login" value="true">
    66.         <input type="submit" value="Login">
    67. <?endif?>
    68. <?if($registred_user):?>
    69.         <input type="hidden" name="logout" value="true">
    70.         <input type="submit" value="Logout">
    71. <?endif?>
    72.       </p>
    73.     </form>
    74.   </body>
    75. </html>
    Специально для всех, выкладываю скрипт который работает так-же но с Сессиями.

    PHP:
    1. <?php
    2. /*
    3.    С уважением Vladson.
    4.    [url=http://dkflbk.nm.ru/]http://dkflbk.nm.ru/[/url]
    5.    E-Mail:dkflbk@nm.ru
    6. */
    7. // URL скрипта
    8. $url = 'http://localhost/test/session.php';
    9. // Время жизни кукиша
    10. $duration = 1200;
    11.  
    12. // Список пользователей и паролей
    13. $members = array(
    14.    'Vladson'=>'123456'
    15. );
    16.  
    17. if ( isset($_POST['login']) && isset($_POST['username']) && isset($_POST['password']) ) {
    18.    $username = get_magic_quotes_gpc() ? stripslashes($_POST['username']) : $_POST['username'];
    19.    $password = get_magic_quotes_gpc() ? stripslashes($_POST['password']) : $_POST['password'];
    20.    if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    21.       $_SESSION['username'] = $username;
    22.       $_SESSION['password'] = $password;
    23.    }
    24.    header('Location: ' . $url);
    25.    exit;
    26. } elseif ( isset($_POST['logout']) ) {
    27.    unset($_SESSION['username']);
    28.    unset($_SESSION['password']);
    29.    header('Location: ' . $url);
    30.    exit;
    31. }
    32.  
    33. $registred_user = false;
    34. if ( isset($_SESSION['username']) && isset($_SESSION['password']) ) {
    35.    $username = get_magic_quotes_gpc() ? stripslashes($_SESSION['username']) : $_SESSION['username'];
    36.    $password = get_magic_quotes_gpc() ? stripslashes($_SESSION['password']) : $_SESSION['password'];
    37.    if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    38.       $registred_user = $username;
    39.    }
    40. }
    41.  
    42. ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
    43. <!--
    44.    С уважением Vladson.
    45.    [url=http://dkflbk.nm.ru/]http://dkflbk.nm.ru/[/url]
    46.    E-Mail:dkflbk@nm.ru
    47. -->
    48. <html>
    49.   <head>
    50.     <title>test</title>
    51.     <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    52.   </head>
    53.   <body>
    54.     <form action="<?=$url?>" method="post">
    55.       <p>
    56. <?if(!$registred_user):?>
    57.         Username:
    58.         <br>
    59.         <input type="text" name="username" value="Vladson">
    60.         <br>
    61.         Password:
    62.         <br>
    63.         <input type="password" name="password" value="123456">
    64.         <br>
    65.         <input type="hidden" name="login" value="true">
    66.         <input type="submit" value="Login">
    67. <?endif?>
    68. <?if($registred_user):?>
    69.         <input type="hidden" name="logout" value="true">
    70.         <input type="submit" value="Logout">
    71. <?endif?>
    72.       </p>
    73.     </form>
    74.   </body>
    75. </html>
     
  2. Dean

    Dean Активный пользователь

    С нами с:
    23 янв 2007
    Сообщения:
    1
    Симпатии:
    0
    Адрес:
    Оттуда
    Вопрос по поводу код на первой странице: вариант с сессиями. Как сделать, чтобы сессия закрывалась при закрытии браузера. После начала сессии заходим Vladson'ом, после чего не разлогиниваясь закрываем браузер. После чего открываем его снова и вводим адрес. При входе на страницу мы все равно под именем вышеупомянутого.
    Пробовал писать в коде:
    session_set_cookie_params('0');
    ini_set(session.cookie_lifetime, 0);

    Не помогло.
     
  3. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  4. Битник

    Битник Активный пользователь

    С нами с:
    9 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    С сессиями код выдает ошибку.
     
  5. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Битник, пробелы перед "<?php" надо убрать.
     
  6. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Vladson попробовала просто сменить статического пользователя на пользователя из БД:
    PHP:
    1. <?
    2. ...
    3. $database = mysql_connect ("$host","$user","$pass");
    4. mysql_select_db("$database",$db);
    5. $list = mysql_query ("SELECT user,pass FROM users_data",$database);
    6. $myrow = mysql_fetch_array($list);
    7. $user = $myrow['user'];
    8. $pass = $myrow['pass'];
    9. $members = array('$user'=>'$pass');
    10. ...
    11. ?>
    по идее там все пользователи которые в базе, или нет?
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    По идее (смотрю не в код а в принцип его работы) это должно работать (и при малом количестве юзеров будет работать отлично)

    Но всё-же лучше изменить сам подход, не брать все результаты из базы и сравнивать их, а просто проверять есть ли в базе такая запись (как это делается почти во всех готовых движках)
     
  8. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Переменные в строках с одинарными кавычками просто текст.

    Код (Text):
    1. $members = array("$user" => "$pass");
    или, что правильно и адекватно:
    Код (Text):
    1. $members = array($user => $pass);
     
  9. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Vladson ты хорошо подметил
    , но даже с одним пользователем не работает :)

    lexa а разве там не текст должен быть с именем и паролем?
     
  10. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    Sofia
    В случае, если переменная внутри одинарных кавычек, то, так сказать, ее значение не подставится.
    То есть в итоге получится массив вроде:
    Код (Text):
    1.  
    2. Array {
    3.   '$user' => '$pass',
    4.   '$user' => '$pass',
    5.   '$user' => '$pass'
    6. }
    , а не, как ожидалось:
    Код (Text):
    1.  
    2. Array {
    3.   'decoder' => '123',
    4.   'Sofia' => '456',
    5.   'lexa' => '789'
    6. }
     
  11. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    decoder дело в том, что не работает никак? у меня как раз пароли без кодировки md5,
    (Пример MySQL):
    [sql]--
    -- Структура таблицы `users_data`
    --

    CREATE TABLE `users_data` (
    `id` int(11) NOT NULL auto_increment,
    `user` varchar(255) NOT NULL,
    `password` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

    --
    -- Дамп данных таблицы `users_data`
    --

    INSERT INTO `users_data` VALUES (1, 'Sofia', '198603');
    [/sql]
    использую двойные ковычки, и всеравно не работает.
     
  12. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    ну хотя б так-то должно:
    PHP:
    1.  
    2. <?php
    3.  
    4. $name = isset($_GET['name']) ? $_GET['name'] : ''; // Просто для тестирования/примера...
    5.  
    6. $sql ="SELECT user, password FROM users_data";
    7. $result = mysql_query($sql) or die($sql . ': ' . mysql_error()); // Покажет ошибку, если есть такая
    8. while ($row = mysql_fetch_assoc($result)) {
    9.   $members[$row['user']] = $row['password'];
    10. }
    11.  
    12. if (array_key_exists($name, $members)) {
    13.   echo 'TRUE';
    14. } else {
    15.   echo 'FALSE';
    16. }
    17.  
    18. ?>
    19.  
    З.Ы. Для начала можешь взглянуть на содержимое своего массива $members с помощью print_r($members);
     
  13. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    decoder :) работает. я вот так сделала для эксперимента:

    PHP:
    1. <?php
    2. include ("db_.php");
    3. $name = isset($_GET['name']) ? $_GET['name'] : ''; // Просто для тестирования/примера...
    4. $sql ="SELECT user,password FROM users_data";
    5. $result = mysql_query($sql) or die($sql . ': ' . mysql_error()); // Покажет ошибку, если есть такая
    6. while ($row = mysql_fetch_assoc($result)) {
    7. $members[$row['user']] = $row['password'];
    8. }
    9. if (in_array($name, $members)) {
    10. echo 'TRUE';
    11. } else {
    12.  /* Использую метод Vladson ([url=http://php.ru/forum]http://php.ru/forum[/url]) */
    13. if ( isset($_POST['login']) && isset($_POST['username']) && isset($_POST['password']) ) {
    14.    $username = get_magic_quotes_gpc() ? stripslashes($_POST['username']) : $_POST['username'];
    15.    $password = get_magic_quotes_gpc() ? stripslashes($_POST['password']) : $_POST['password'];
    16.    if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    17.        $_SESSION['username'] = $username;
    18.        $_SESSION['password'] = $password;
    19.    }
    20.    header('Location: ' . $url);
    21.    exit;
    22.  } elseif ( isset($_POST['logout']) ) {
    23.    unset($_SESSION['username']);
    24.    unset($_SESSION['password']);
    25.    header('Location: ' . $url);
    26.    exit;
    27.  }
    28.  
    29.  $registred_user = false;
    30.  if ( isset($_SESSION['username']) && isset($_SESSION['password']) ) {
    31.    $username = get_magic_quotes_gpc() ? stripslashes($_SESSION['username']) : $_SESSION['username'];
    32.    $password = get_magic_quotes_gpc() ? stripslashes($_SESSION['password']) : $_SESSION['password'];
    33.    if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    34.        $registred_user = $username;
    35.    }
    36.  }
    37.  
    38.  ?>
    39.  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
    40.  <!--
    41.    С уважением Vladson.
    42.    [url=http://dkflbk.nm.ru/]http://dkflbk.nm.ru/[/url]
    43.    E-Mail:dkflbk@nm.ru
    44.  -->
    45.  <html>
    46.    <head>
    47.      <title>test</title>
    48.      <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    49.    </head>
    50.    <body>
    51.      <form action="<?=$url?>" method="post">
    52.        <p>
    53.  <?if(!$registred_user):?>
    54.          Username:
    55.          <br>
    56.          <input type="text" name="username" value="ФИО">
    57.          <br>
    58.          Password:
    59.          <br>
    60.          <input type="password" name="password" value="">
    61.          <br>
    62.          <input type="hidden" name="login" value="true">
    63.          <input type="submit" value="Login">
    64.  <?endif?>
    65.  <?if($registred_user):?>
    66.          <input type="hidden" name="logout" value="true">
    67.          <input type="submit" value="Logout">
    68.  <?endif?>
    69.        </p>
    70.      </form>
    71.    </body>
    72.  </html>
    73.  <?php
    74.  echo 'авторизация';
    75.  }?>
     
  14. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    Да, прошу прощения, там у меня должно быть тоже не in_array(), a array_key_exists...
    Сейчас поправлю...
     
  15. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Ну если передать по гет-у юзера, который есть в базе, то будет Тру.
     
  16. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    decoder я вобщем вот так вот сделала:
    PHP:
    1. <?
    2. if($_SESSION['username']) {
    3.     echo "Hello ";
    4.     echo ($_SESSION['username']);
    5.     ?>
    6.     <form action="<?=$url?>" method="post">
    7.     <input type="hidden" name="logout" value="true">
    8.     <input type="submit" value="Logout">
    9.     </form>
    10.     <?
    11.     }
    12.     else {
    13.     echo "Необходима авторизация";
    14.     ?>
    15.     <form action="<?=$url?>" method="post">
    16.     Username:
    17.          <br>
    18.          <input type="text" name="username" value="Vladson">
    19.          <br>
    20.          Password:
    21.          <br>
    22.          <input type="password" name="password" value="123456">
    23.          <br>
    24.          <input type="hidden" name="login" value="true">
    25.          <input type="submit" value="Login">
    26.     </form>
    27.     <?
    28.     }
    29.     ?>
    для меня так привычнее. Я вот только не совсем правильно понимаю как работают сессии, но ... они же куда-то записываются?
     
  17. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    а session_start(); ?
     
  18. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    а, это выше кусочек кода всего.
    PHP:
    конечно в самом верху :) сразу после <?
    Кстати, эксперименты провожу на своем домашнем комптютере, если интересно, то вот его адрес http://78.36.101.203
     
  19. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    Там, кстати, специально комментарий стоит:
     
  20. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    незнаю уже как и быть, не могу разобраться. Вот мой полный код:
    PHP:
    1.  
    2. <?php
    3.  $host="localhost";
    4. $user="*";
    5. $pass="*";
    6. $database="*";
    7. $url = 'http://*/test.php';
    8.  $db = mysql_connect ("$host","$user","$pass");
    9. mysql_select_db("$database",$db);
    10.  $name = isset($_GET['name']) ? $_GET['name'] : ''; // Просто для тестирования/примера...
    11.  $sql ="SELECT login,pass FROM users";
    12.  $result = mysql_query($sql) or die($sql . ': ' . mysql_error()); // Покажет ошибку, если есть такая
    13.  while ($row = mysql_fetch_assoc($result)) {
    14.  $members[$row['login']] = $row['pass'];
    15.  }
    16.  if (in_array($name, $members)) {
    17.  echo 'TRUE';
    18.  } else {
    19.   /* Использую метод Vladson ([url=http://php.ru/forum]http://php.ru/forum[/url]) */
    20.  if ( isset($_POST['login']) && isset($_POST['username']) && isset($_POST['password']) ) {
    21.    $username = get_magic_quotes_gpc() ? stripslashes($_POST['username']) : $_POST['username'];
    22.    $password = get_magic_quotes_gpc() ? stripslashes($_POST['password']) : $_POST['password'];
    23.    if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    24.        $_SESSION['username'] = $username;
    25.        $_SESSION['password'] = $password;
    26.    }
    27.    header('Location: ' . $url);
    28.    exit;
    29.   } elseif ( isset($_POST['logout']) ) {
    30.    unset($_SESSION['username']);
    31.    unset($_SESSION['password']);
    32.    header('Location: ' . $url);
    33.    exit;
    34.   }
    35.    
    36.   $registred_user = false;
    37.   if ( isset($_SESSION['username']) && isset($_SESSION['password']) ) {
    38.    $username = get_magic_quotes_gpc() ? stripslashes($_SESSION['username']) : $_SESSION['username'];
    39.    $password = get_magic_quotes_gpc() ? stripslashes($_SESSION['password']) : $_SESSION['password'];
    40.    if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    41.        $registred_user = $username;
    42.    }
    43.   }
    44.    
    45.   }
    46.  
    47.  if($_SESSION['username']) {
    48.      echo "Hello ";
    49.      echo ($_SESSION['username']);
    50.      ?>
    51.      <form action="<?=$url?>" method="post">
    52.      <input type="hidden" name="logout" value="true">
    53.      <input type="submit" value="Logout">
    54.      </form>
    55.      <?
    56.      mysql_query("SET NAMES cp1251");
    57.      $result2 = mysql_query("SELECT * FROM users",$db);
    58.      $row2 = mysql_fetch_array($result2);
    59.      $f=$row2["f"];
    60.      $i=$row2["i"];
    61.      $o=$row2["o"];
    62.      echo "ФИО : $f $i $o";
    63.      }
    64.      else {
    65.      echo "Необходима авторизация";
    66.      ?>
    67.      <form action="<?=$url?>" method="post">
    68.      Username:
    69.          <br>
    70.          <input type="text" name="username" value="Vladson">
    71.          <br>
    72.          Password:
    73.          <br>
    74.          <input type="password" name="password" value="123456">
    75.          <br>
    76.          <input type="hidden" name="login" value="true">
    77.          <input type="submit" value="Login">
    78.      </form>
    79.      <?
    80.      }
    81.      ?>
    82.  
    задача следующуя: чтоб писал ФИО того, кому принадлежит аккаунт. а этого я добиться не могу.. подскажите пожалуйста, как тут работать по сессиям? как сделать чтоб писался ФИО того, кому принадлежит аккаунт?
     
  21. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    это не код, а фарш. для начала приведите код в нормальный вид?
     
  22. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    440Hz
    я наоборот собрала в один файл то, что было раскидано на кучу мелких. Помойму вполне читабельно.. или Вы знаете другой php? :)
     
  23. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    знаю.

    PHP:
    1.  
    2. <?php
    3.  
    4.  
    5. $host="localhost";
    6. $user="*";
    7. $pass="*";
    8. $database="*";
    9.  
    10. $url = 'http://*/test.php';
    11.  
    12. $db = mysql_connect ("$host","$user","$pass") or die("Can't connect!");
    13. mysql_select_db("$database",$db) or die("Can't select DB!");
    14.  
    15. $name = isset($_GET['name']) ? $_GET['name'] : ''; // Просто для тестирования/примера...
    16.  
    17. $sql ="SELECT login,pass FROM users";
    18. $result = mysql_query($sql) or die($sql . ': ' . mysql_error()); // Покажет ошибку, если есть такая
    19.  
    20. while ($row = mysql_fetch_assoc($result)) {
    21.     $members[$row['login']] = $row['pass'];
    22. }
    23.  
    24. if (in_array($name, $members)) {
    25.     echo 'TRUE';
    26. } else {
    27.     /* Использую метод Vladson ([url=http://php.ru/forum]http://php.ru/forum[/url]) */
    28.     if ( isset($_POST['login']) && isset($_POST['username']) && isset($_POST['password']) ) {
    29.        
    30.         $username = get_magic_quotes_gpc() ? stripslashes($_POST['username']) : $_POST['username'];
    31.         $password = get_magic_quotes_gpc() ? stripslashes($_POST['password']) : $_POST['password'];
    32.  
    33.         if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    34.             $_SESSION['username'] = $username;
    35.             $_SESSION['password'] = $password;
    36.         }
    37.         header('Location: ' . $url);
    38.         exit;
    39.     } elseif ( isset($_POST['logout']) ) {
    40.         unset($_SESSION['username']);
    41.         unset($_SESSION['password']);
    42.         header('Location: ' . $url);
    43.         exit;
    44.     }
    45.  
    46.     $registred_user = false;
    47.     if ( isset($_SESSION['username']) && isset($_SESSION['password']) ) {
    48.        
    49.         $username = get_magic_quotes_gpc() ? stripslashes($_SESSION['username']) : $_SESSION['username'];
    50.         $password = get_magic_quotes_gpc() ? stripslashes($_SESSION['password']) : $_SESSION['password'];
    51.  
    52.         if ( array_key_exists($username, $members) && $members[$username] === $password ) {
    53.             $registred_user = $username;
    54.         }
    55.     }
    56.  
    57. }
    58.  
    59. if($_SESSION['username']) {
    60.     mysql_query("SET NAMES cp1251");
    61.     $result2 = mysql_query("SELECT * FROM users",$db);
    62.     $row2 = mysql_fetch_array($result2);
    63.     $f=$row2["f"];
    64.     $i=$row2["i"];
    65.     $o=$row2["o"];
    66.  
    67.     $HTML = <<< ENDHTML
    68.         Hello: $_SESSION['username']
    69.         <form action="$url" method="post">
    70.         <input type="hidden" name="logout" value="true">
    71.         <input type="submit" value="Logout">
    72.         </form>
    73.         ФИО : $f $i $o
    74. ENDHTML;
    75.  
    76. } else {
    77.  
    78.     $HTML = <<< ENDHTML
    79.     Необходима авторизация
    80.     <form action="$url" method="post">
    81.     Username:
    82.     <br>
    83.     <input type="text" name="username" value="Vladson">
    84.     <br>
    85.     Password:
    86.     <br>
    87.     <input type="password" name="password" value="123456">
    88.     <br>
    89.     <input type="hidden" name="login" value="true">
    90.     <input type="submit" value="Login">
    91.     </form>
    92. ENDHTML;
    93.  
    94. }
    95.  
    96. print $HTML;
    97.  
    98. ?>
     
  24. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    чтобы я добавил:

    1. обработка получаемых данных (GET/POST/COOKIE) через класс, где завернута обработка magic_quotes()
    2. получение данных из БД тоже в класс с обработкой ошибок.
    3. сессию - тоже сделал бы надстройку.

    тогда кода было бы раз в 5 меньше, а валить все в кучу - иметь геморой. изначально! надо учиться лдаже на маленьких задачах сразу правильно подходить к написанию.
     
  25. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    так код Ваш не рабочий :)

    я думаю что может лучше выборку по сессии сделать?
    PHP:
    1. $result2 = mysql_query("SELECT * FROM users WHERE login = '$username'",$db);
    тогда все работает.

    Конечно Ваш код интересный, но... доводить до ума надо еще...
    спасибо...