За последние 24 часа нас посетили 12474 программиста и 656 роботов. Сейчас ищут 336 программистов ...

неправильная сессия :)

Тема в разделе "PHP для новичков", создана пользователем selivanov, 11 апр 2018.

  1. selivanov

    selivanov Новичок

    С нами с:
    1 фев 2017
    Сообщения:
    123
    Симпатии:
    4
    есть подключение к баз данных все работает с этим проблем нету
    из формы передаем данные на проверку в бд если совпадают то данные пишем в сессий
    и выводим "Верные данные" иначе "Неверные данные".
    как правильно написать условие чтобы стр.secret1 реагировала правильно -а то я написал условие которое не знаю почему но не работает
    Код (Text):
    1. index.php
    2.  
    3. <?php
    4. //Если форма авторизации отправлена...
    5. if (!empty($_REQUEST['password']) and !empty($_REQUEST['login'])) {
    6. //Пишем логин и пароль из формы в переменные (для удобства работы):
    7.     $login = $_REQUEST['login'];
    8.     $password = $_REQUEST['password'];
    9.  
    10.     /*
    11.     Формируем и отсылаем SQL запрос:
    12.     ВЫБРАТЬ ИЗ таблицы users2 ГДЕ поле_логин = $login И поле_пароль = $password.
    13.     */
    14.     $mysqli = new mysqli("localhost", "root", "", "auth");
    15.     if (mysqli_connect_errno()) {
    16.         printf("Ошибка соединения: %s\n", mysqli_connect_error());
    17.         exit();
    18.     }
    19.  
    20.     $query = 'SELECT*FROM users2 WHERE login="' . $login . '" AND password="' . $password . '"';
    21.     $result = mysqli_query($mysqli, $query); //ответ базы запишем в переменную $result.
    22.     $user = mysqli_fetch_assoc($result); //преобразуем ответ из БД в нормальный массив PHP
    23.  
    24.     /*$dsn = "mysql:host=localhost;dbname=auth;charset=utf8";
    25.     $dbh = new PDO($dsn, 'root', '');
    26.     $stmt = $dbh->query('SELECT * FROM users2 WHERE login="' . $login . '" AND password="' . $password . '"');
    27.     $user = $stmt->fetchAll(PDO::FETCH_ASSOC);*/
    28.  
    29.  
    30. //Если база данных вернула не пустой ответ - значит пара логин-пароль правильная
    31.     if (!empty($user)) {
    32.  
    33. //Стартуем сессию:
    34.         session_start();
    35.  
    36. //Пишем в сессию информацию о том, что мы авторизовались:
    37.         $_SESSION['auth'] = true;
    38.  
    39. //Пишем в сессию логин и пароль пользователя (их мы берем из переменной $user!):
    40.         $_SESSION['login'] = $user['login'];
    41.         $_SESSION['password'] = $user['password'];
    42.  
    43.  
    44.  
    45.         echo 'Верные данные';
    46.     } else {
    47. //Пользователь неверно ввел логин или пароль, выполним какой-то код.
    48.         echo 'Неверные данные';
    49.     }
    50. }
    51.  
    52. ?>
    53.  
    54. <!-- Это форма авторизации: -->
    55. <form action='index.php' method='POST'>
    56.     <input name='login'>
    57.     <input name='password' type='password'>
    58.     <input type='submit' value='Отправить'>
    59. </form>
    60. <!-- Конец формы авторизации. -->
    61.  
    62. <a href="secret1.php" target="_blank">Стр-1</a><br />
    63.  
    64. //=====================================
    65. secret.php
    66.  
    67. <?php
    68. session_start();
    69.  
    70. if($_SESSION['auth'] !== true)
    71. {
    72.     echo 'Неправильный логин или пароль';
    73. }
    74. /*if(!empty($_SESSION['login']) && !empty($_SESSION['password'])){
    75.     echo 'Неправильный логин или пароль';
    76. //header('Location: на страницу с авторизацией');
    77.     die();
    78. }*/
    79.  
    80. ?>
    81.  
    82.  
    83. <!doctype html>
    84. <html lang="en">
    85. <head>
    86.     <meta charset="UTF-8">
    87.     <meta name="viewport"
    88.           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    89.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
    90.     <title>Document</title>
    91. </head>
    92. <body>
    93. <h1>Если ты авторизован то ты меня читаешь</h1>
    94. </body>
    95. </html>
    --- Добавлено ---
    есть подключение к баз данных все работает с этим проблем нету
    из формы передаем данные на проверку в бд если совпадают то данные пишем в сессий
    и выводим "Верные данные" иначе "Неверные данные".
    как правильно написать условие чтобы стр.secret1 реагировала правильно -а то я написал условие которое не знаю почему но не работает
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.530
    Симпатии:
    1.277
    Адрес:
    Лень
    не скрипт а дичь, за кой два раза подключаться разными расширениями ?
    --- Добавлено ---
    и в индексе что то главное для сессии отсутствует
     
  3. selivanov

    selivanov Новичок

    С нами с:
    1 фев 2017
    Сообщения:
    123
    Симпатии:
    4
    ну ну если такой умный покажи как делать
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.530
    Симпатии:
    1.277
    Адрес:
    Лень
    и не глупый!
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    докажи или слабо?:)
     
    selivanov нравится это.
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.530
    Симпатии:
    1.277
    Адрес:
    Лень
    на слабо не берут )
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.778
    Симпатии:
    1.158
    Адрес:
    там-сям
    ничоси. это тебе невероятно повезло. обычно когда нуб склеивает код из кусочков, то не работает вообще
    н и ч е г о

    if (!empty($user)) {
    session_start();

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