За последние 24 часа нас посетили 69279 программистов и 3580 роботов. Сейчас ищут 2823 программиста ...

сравнить данные php-Mysql

Тема в разделе "PHP для новичков", создана пользователем Владимирvvp, 31 май 2019.

  1. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.907
    Симпатии:
    327
    @Павел Голубцов, то что идентификатор не нужен это правильно. Пользователь чаще всего его вообще не знает. Но вот "проверка", явно указывает на непонимание принципов обработки запросов к базе данных.
     
  2. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    Покажи как надо, но это тоже работает.
     
  3. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.907
    Симпатии:
    327
  4. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    Дичь полная, конкретно на мое предложение решения вопроса комментарии оставляй а не книги кидай по sql.
    Я дал ответ на конкретный вопрос, что тебе не нравится?
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.832
    Симпатии:
    1.335
    Адрес:
    Лень
    Внимательно читай, у тебя дичь полная
    https://php.ru/forum/threads/sravnit-dannye-php-mysql.77084/#post-600719
     
  6. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    SELECT `login`, `pass` FROM `user` WHERE login = '$slogin' AND pass = '$spass'
    он либо найдет эти данные: true
    или не найдет: false
    Дан ответ на вопрос человека!
    Какие задачи вы себе поставили, это знаете только вы, формулируйте вопрос, задачу, будем обсуждать.
    И ответ был похожий оказывается который устроил человека, тема закрыта.
     
    #31 Павел Голубцов, 2 июн 2019
    Последнее редактирование: 2 июн 2019
  7. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    Я долго смотрел смотрел, ладно вмешаюсь. @Павел Голубцов Что хотят сказать профессионалы своего дела:
    Например обычно логин человека известен, это почта, или как на этом форуме логин видно всем. Например логин такой:
    PHP:
    1. $slogin = 'Павел Голубцов';
    Пароль я конечно же не знаю, но вы например в проверке пароля написали такой код:
    PHP:
    1. $result = mysql_query("SELECT `login`, `pass` FROM `user` WHERE login = '$slogin' AND pass = '$spass'");
    Я например прочитав книгу хацкеров для чайников, пишу запрос, где отправляю пароль как случайно генерируемое строку, делаю так чтобы он отправлялся на сервер раз 0,1 секунду. И пишу, что если сервер вернет true то отобразить отправленный пароль. Ухожу пить чай, когда приду у меня возможно будет пароль человека.

    Вот и люди хотят сказать что так не делается. Но, есть одно большое но. Они и не пишут готовый правильный код. Потому что искренне считают что человек должен сам найти и разобраться. Так вот я с этим не согласен. Нужно давать готовый код, ибо это форум для этого и созданный. Если человеку не помочь тут, он пойдет дальше искать окей гугл, и таки наткнется на готовый код, возможно не правильный.

    Но это имхо мое мнение. А такая проверка пользователя да не правильная. Но я дать правильный ответ не смог. Поэтому написал так:

    https://google.gik-team.com/?q=php+правильная+проверка+логина+и+пароля

    попал первой ссылкой сюда:

    https://php.ru/forum/threads/proverka-logina-i-parolja.3666/

    вижу что там тоже бардак, иду дальше:

    https://ru.stackoverflow.com/questions/28785/Проверка-Логина-и-Пароля

    вижу что там древний ответ с устаревшими функциями, и ищу дальше:

    https://habr.com/ru/post/323714/
    https://true-coder.ru/php/pishem-avtorizaciyu-na-php.html

    @MouseZver @Valick товарищи профессионалы вы поняли суть? Человек пошел дальше искать готовый код, и смотрите на что он натыкается. Не ужели так трудно написать правильный готовый код. Особенно если учесть что первые запросы от гугла дают какую то ахинею?
     
  8. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.907
    Симпатии:
    327
    @Павел Голубцов, в обоих случаях $result будет true и не важно будут совпадения логина и пароля или нет, false случиться, только если сам запрос будет с ошибкой. А вот mysqli_num_rows вернёт ноль если совпадений логина и пароля в БД нет или вернёт количество совпадений если они есть, поскольку поле логин должно быть уникальным, то запрос вернёт либо ноль если совпадений нет, либо единицу если логин пароль совпали.
    --- Добавлено ---
    не трудно, но сильно скучно, а если мне станет совсем скучно, то я уйду с форума, и завтра некому будет давать даже наводящие ответы
    я конечно сильно утрирую и я далеко не один на этом форуме но надеюсь суть ясна.
    отвечаю так как считаю нужным и самое главное я уже это говорил, что обучается не тот кто спрашивает на форуме, а тот кто отвечает, поэтому все мои ответы больше расчитаны на таких как ты, а не на таких как ТС
    не пиши больше такое никогда :)
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.832
    Симпатии:
    1.335
    Адрес:
    Лень
    Пишу, на минуту хватает, лень
    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
    4.  
    5. use Aero\Supports\Lerma;
    6.  
    7.  
    8. require 'autoload.php';
    9.  
    10.  
    11.  
    12. if (  )
    13. {
    14.    
    15. }
    16. elseif ( filter_input ( INPUT_SERVER, 'REQUEST_METHOD' ) == 'POST' )
    17. {
    18.    
    19. }
     
  10. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    Приведенный к ассоциативному массиву, к примеру (в других случаях не уверен точно и проверять лень), $result будет при успехе true и противоположно false, это факт.

    Artur_hopf Потому что искренне считают что человек должен сам найти и разобраться.

    Да я так и писал ответ, потому что сам пользуюсь PDO, sql вымер, осталось sqli или PDO, но сами запросы они идентичны.

    Artur_hopf Я например прочитав книгу хацкеров для чайников, пишу запрос, где отправляю пароль как случайно генерируемое строку, делаю так чтобы он отправлялся на сервер раз 0,1 секунду. И пишу, что если сервер вернет true то отобразить отправленный пароль. Ухожу пить чай, когда приду у меня возможно будет пароль человека.

    После 5 попыток не удачных забанить на 5 минут, после 10 на час, и т.д.
    И будешь пить чай лет 100.
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.832
    Симпатии:
    1.335
    Адрес:
    Лень
    если пользователь в бд не найден, что вернет ? true/false ?
     
  12. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    array(0) {
    }
    если найдено:
    array(1){
    и т. д.

    и эти значения соответствуют для условия
    if
    как
    false
    и
    true
     
  13. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @Valick надо почитать книгу про хацкеров :D
     
  14. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.907
    Симпатии:
    327
    @Artur_hopf, надо не только читать, но и понимать что там написано)) Есть у меня и про хацкеров книги))
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.832
    Симпатии:
    1.335
    Адрес:
    Лень
    с какого перепугу у тебя mysqli_query возвращает массив ? спустись на землю и читай документацию внимательно.
    --- Добавлено ---
    у меня сейчас стул расплавится
     
  16. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    С такого в PDO это:
    PDO::FETCH_ASSOC
    в sqli это:
    mysqli_result::fetch_assoc
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.832
    Симпатии:
    1.335
    Адрес:
    Лень
    ...
    --- Добавлено ---
    сказочник
    --- Добавлено ---
    https://www.php.net/manual/ru/mysqli.query.php читай возвращаемые значения
    --- Добавлено ---
    МЫ ВЕДЕМ ДИАЛОГ О ФУНКЦИИ mysqli_query какого рака приписываешь result
    --- Добавлено ---
    я теперь понимаю, почему в программирование рекомендовано брать до 25 лет (включ) людей
     
  18. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    Я писал что не пользуюсь sqli и просто нашел похожее с PDO.
    А в PDO не все скопировалось полностью будет выглядеть так:
    PHP:
    1. $result = $sth -> fetchAll(PDO::FETCH_ASSOC);
    ассоциативный массив.
    А $result тут часть метода query, Class Database.
     
  19. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    на ошибки не проверял, но красиво смотрится :D
    PHP:
    1. <?php
    2. if(isset($_POST['submit'])){
    3.     $servername = "localhost";
    4.     $dbusername = "my_user";
    5.     $dbpassword = "my_password";
    6.     $dbname = "dbname";
    7.  
    8.     $conn = mysqli_connect($servername, $dbusername, $dbpassword, $dbname);
    9.     if(!$conn){
    10.       die("Ошибка соединения: ".mysqli_connect_error());
    11.     }
    12.  
    13.     $slogin = $_POST['log'];
    14.     $spass = $_POST['pasl'];
    15.  
    16.     if(emptu($slogin) || emptu($spass)){
    17.  
    18.       header("Location index.php?error=Отсутствует логин или пароль");
    19.       exit();
    20.     }else{
    21.  
    22.       $sql = "SELECT * FROM user WHERE login=?;";
    23.       $stmt = mysqli_stmt_init($conn);
    24.       if(!mysqli_stmt_prepare($stmt, $sql)){
    25.  
    26.         header("Location index.php?error=Ошибка запроса");
    27.         exit();
    28.       }else{
    29.  
    30.         mysqli_stmt_bind_param($stmt, "s", $slogin);
    31.         mysqli_stmt_execute($stmt);
    32.         $result = mysqli_stmt_get_result($stmt);
    33.  
    34.         if($row = mysqli_fetch_assoc()){
    35.  
    36.           $spassCheck = password_verify($spass, $row['pass']);
    37.           if($spassCheck === false){
    38.             header("Location index.php");
    39.             exit();
    40.           }else if($spassCheck === true){
    41.  
    42.             //миссия выполнена
    43.  
    44.           }
    45.         }
    46.       }
    47.     }
    48. }else{
    49.  
    50.   header("Location index.php");
    51.   exit();
    52. }
    свиснуто отсюда:
     
    #44 Artur_hopf, 2 июн 2019
    Последнее редактирование: 2 июн 2019
  20. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.907
    Симпатии:
    327
    PHP:
    1. <?php
    2. // Включаем отображение ошибок в браузере
    3. ini_set('display_errors', 'On');
    4.  
    5.  
    6. // Параметры подключения к базе данных
    7. define('DB_HOST', 'localhost');
    8. define('DB_USER', 'root');
    9. define('DB_PASSWORD', '');
    10. define('DB_NAME', 'phpforum');
    11.  
    12. // Функция подключения к базе данных
    13. // можно вынести в отдельный файл вместе с параметрами подключения
    14. // и подключать в скриптахпри помощи require_once
    15. function connectDB(){
    16.     $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    17.     if(!$conn){
    18.         echo 'Невозможно подключиться к серверу базы данных <br />';
    19.         die(mysqli_error());
    20.     }else{
    21.         $query = $conn->query('set names utf8');
    22.         if(!$query){
    23.             echo 'Невозможно установить кодировку подключения к базе данных';
    24.             die(mysqli_error());
    25.         }else{
    26.             return $conn;
    27.         }
    28.     }
    29. }
    30.  
    31. // Функция инициализации таблицы
    32. // $rdb - указатель ресурса соединения с базой данных
    33. function iniTable($rdb){
    34.     mysqli_query($rdb, "CREATE TABLE IF NOT EXISTS `user` (
    35.                    `u_id` INT(11) NOT NULL AUTO_INCREMENT ,
    36.                    `u_login` VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    37.                    `u_pass` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    38.                    PRIMARY KEY (`u_id`),
    39.                    UNIQUE KEY `u_login` (`u_login`)) ENGINE = InnoDB;")
    40.         or die ("Ошибка создания таблицы: ".mysqli_error());
    41.        
    42.     mysqli_query($rdb, "TRUNCATE TABLE `user`")
    43.         or die ("Ошибка очистки таблицы: ".mysqli_error());
    44.    
    45.     mysqli_query($rdb, "INSERT INTO `user` (`u_login`, `u_pass`)
    46.                        VALUES
    47.                            ('admin', '".md5('admin')."')")
    48.         or die ("Ошибка добавления данных в таблицу: ".mysqli_error());
    49.     header("Location: ".$_SERVER['PHP_SELF']);
    50. }
    51.  
    52. // Инициализируем переменные сообщений и тела запроса
    53. $message = array();
    54. $query = '';
    55. // Устанавливаем соединение с базой данных
    56. $link = connectDB();
    57. // Обработка переменной инициализации таблицы
    58. if(isset($_GET['ini'])){
    59.     iniTable($link);
    60. }
    61. // Если нажата кнопка вход
    62. if(isset($_GET['go'])){
    63.     $login = (isset($_GET['login']) && !empty($_GET['login']))
    64.                 ? mysqli_real_escape_string($link, $_GET['login'])
    65.                 : false;
    66.     $password = (isset($_GET['password']) && !empty($_GET['password']))
    67.                 ? mysqli_real_escape_string($link, $_GET['password'])
    68.                 : false;
    69.     if($login && $password){
    70.         // Собираем запрос к базе данных
    71.         $query = "SELECT * FROM `user` WHERE `u_login` = '$login' AND `u_pass` = '" . md5($password) . "'";
    72.         $message[] = 'Запрос: ' . $query;
    73.         $result = mysqli_query($link, $query);
    74.         if($result){
    75.             $message[] = '$result = true Запрос успешно обработан';
    76.             if(mysqli_num_rows($result) == 1){
    77.                 $message[] = 'Логин и пароль совпали';
    78.             }else{
    79.                 $message[] = 'Логин и пароль не совпали';
    80.             }
    81.         }else{
    82.             $message[] = '$result = false Ошибка выполнения запроса: ' . mysqli_error($link);
    83.         }
    84.        
    85.     } else {
    86.         $message[] = 'Введите логин и пароль';
    87.     }
    88. }
    89. // Закрываем соединение с базой данных
    90. mysqli_close($link);
    91.  
    92. ?>
    93. <!DOCTYPE html>
    94. <html>
    95. <head>
    96. <meta charset='UTF-8' />
    97. <link rel="stylesheet"
    98.       href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
    99.       integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
    100.       crossorigin="anonymous">
    101. </head>
    102. <body>
    103.   <div class="container">
    104.   <hr />
    105.   <div class="row">
    106.   <div class="col-md">
    107.     <small>
    108.     <h5>Отладочная информация</h5>
    109.     <hr />
    110.     <h6 class ="table-danger">Массив $_GET <?php echo 'count ('.count($_GET).')';?></h6>
    111.     <pre><?php print_r($_GET);?></pre>
    112.     <hr />
    113.     </small>
    114.   </div>
    115.  
    116.   <div class="col-md-9">
    117.    <?php if($message) echo '<div style="color: red"><p>' . implode('</p><p>',$message) . '</p></div>';?>
    118.    <div style="text-align: right"><h1>Авторизация</h1></div>
    119.    <form action="" method="GET">
    120.    <p style="text-align: right">Логин:  <input type="text" name="login" value=""></p>
    121.    <p style="text-align: right">Пароль: <input type="password" name="password" value=""></p>
    122.    <p style="text-align: right"><input type="submit" name="go" value=" Вход "></p>
    123.    </form>
    124.     <hr />
    125.     <div><h5><a href="?ini=1">Создать и заполнить таблицу</a> (логин admin пароль admin)</h5></div>
    126.   </div>
    127.   </div>
    128.   <hr />
    129.   </div>
    130. </body>
    131. </html>
     
  21. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.496
    Симпатии:
    1.725
    @Павел Голубцов, не правильный, к тому же. Если в твоём случае $result не null, это всего лишь означает, что запрос правильный, а не что он вернул результат. К тому же, нет экранирования.
     
  22. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.832
    Симпатии:
    1.335
    Адрес:
    Лень
    я вас сейчас всех ... за говнокод:confused:
    --- Добавлено ---
    set_charset( ... )
    --- Добавлено ---
    Замечание:

    Это предпочтительный способ задания набора символов. Использование для этих целей функции mysqli_query() (например SET NAMES utf8) не рекомендуется.
     
    miketomlin и Valick нравится это.
  23. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.858
    Симпатии:
    656
    Mля, скатились до киберфорума, даже ниже... Ламеры, не научившиеся читать описание ф-ций, толкают свою мыслЮ. Хотя бы тему с начала прочитайте, а то у меня уже дежавю :mad:
     
  24. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.858
    Симпатии:
    656
    Ага, особенно emptu. Тебе сколько раз нужно написать, что результат нужно отдельно проверять, чтобы ты понял? В заголовках нужно вручную urlencode'ть, это тебе даже не контент, где за тебя это может сделать браузер (а может и не сделать). Предопределенные сообщения можно кодировать номерами. А то фиг знает, какая там защита от подкладывания ХЗ какого текста.
    --- Добавлено ---
    Location: /...
    А еще лучше полноформатный абс. адрес. Так этот заголовок будет макс-но совместимым.
     
  25. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.907
    Симпатии:
    327
    PHP:
    1. <?php
    2. ini_set('display_errors', 'On');
    3. header('Content-Type: text/html; charset=utf-8');
    4.  
    5. // Параметры подключения к базе данных
    6. define('DB_HOST', 'localhost');
    7. define('DB_USER', 'mysql');
    8. define('DB_PASSWORD', 'mysql');
    9. define('DB_NAME', 'test');
    10. // Функция подключения к базе данных
    11. // можно вынести в отдельный файл вместе с параметрами подключения
    12. // и подключать в скриптахпри помощи require_once
    13. function connectDB(){
    14.     $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    15.     if(!$conn){
    16.         echo 'Невозможно подключиться к серверу базы данных <br />';
    17.         die(mysqli_error($conn));
    18.     }else{
    19.         $query = $conn->set_charset("utf8");
    20.         if(!$query){
    21.             echo 'Невозможно установить кодировку подключения к базе данных';
    22.             die(mysqli_error($conn));
    23.         }else{
    24.             return $conn;
    25.         }
    26.     }
    27. }
    28. // Функция инициализации таблицы
    29. // $rdb - указатель ресурса соединения с базой данных
    30. function iniTable($rdb){
    31.     mysqli_query($rdb, "CREATE TABLE `user` (
    32.                   `u_id` INT(11) NOT NULL AUTO_INCREMENT ,
    33.                   `u_login` VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    34.                   `u_pass` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    35.                   PRIMARY KEY (`u_id`),
    36.                   UNIQUE KEY `u_login` (`u_login`)) ENGINE = InnoDB;")
    37.         or die ("Ошибка создания таблицы: ".mysqli_error($rdb));
    38.      
    39.     mysqli_query($rdb, "TRUNCATE TABLE `user`")
    40.         or die ("Ошибка очистки таблицы: ".mysqli_error($rdb));
    41.  
    42.     mysqli_query($rdb, "INSERT INTO `user` (`u_login`, `u_pass`)
    43.                       VALUES
    44.                           ('admin', '".md5('admin')."')")
    45.         or die ("Ошибка добавления данных в таблицу: ".mysqli_error($rdb));
    46.     header("Location: ".$_SERVER['PHP_SELF']);
    47. }
    48. // Инициализируем переменные сообщений и тела запроса
    49. $message = array();
    50. $query = '';
    51. // Устанавливаем соединение с базой данных
    52. $link = connectDB();
    53. // Обработка переменной инициализации таблицы
    54. if(isset($_GET['ini'])){
    55.     iniTable($link);
    56. }
    57. // Если нажата кнопка вход
    58. if(isset($_GET['go'])){
    59.     $login = (isset($_GET['login']) && !empty($_GET['login']))
    60.                 ? mysqli_real_escape_string($link, $_GET['login'])
    61.                 : false;
    62.     $password = (isset($_GET['password']) && !empty($_GET['password']))
    63.                 ? mysqli_real_escape_string($link, $_GET['password'])
    64.                 : false;
    65.     if($login && $password){
    66.         // Собираем запрос к базе данных
    67.         $query = "SELECT * FROM `user` WHERE `u_login` = '$login' AND `u_pass` = '" . md5($password) . "'";
    68.         $message[] = 'Запрос: ' . $query;
    69.         $result = mysqli_query($link, $query);
    70.         if($result){
    71.             $message[] = '$result = true Запрос успешно обработан';
    72.             if(mysqli_num_rows($result) == 1){
    73.                 $message[] = 'Логин и пароль совпали';
    74.             }else{
    75.                 $message[] = 'Логин и пароль не совпали';
    76.             }
    77.         }else{
    78.             $message[] = '$result = false Ошибка выполнения запроса: ' . mysqli_error($link);
    79.         }
    80.      
    81.     } else {
    82.         $message[] = 'Введите логин и пароль';
    83.     }
    84. }
    85. // Закрываем соединение с базой данных
    86. mysqli_close($link);
    87. ?>
    88. <!DOCTYPE html>
    89. <html>
    90. <head>
    91. <meta charset='UTF-8' />
    92. <link rel="stylesheet"
    93.       href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
    94.       integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
    95.       crossorigin="anonymous">
    96. </head>
    97. <body>
    98.   <div class="container">
    99.   <hr />
    100.   <div class="row">
    101.   <div class="col-md">
    102.     <small>
    103.     <h5>Отладочная информация</h5>
    104.     <hr />
    105.     <h6 class ="table-danger">Массив $_GET <?php echo 'count ('.count($_GET).')';?></h6>
    106.     <pre><?php print_r($_GET);?></pre>
    107.     <hr />
    108.     </small>
    109.   </div>
    110.   <div class="col-md-9">
    111.    <?php if($message) echo '<div style="color: red"><p>' . implode('</p><p>',$message) . '</p></div>';?>
    112.    <div style="text-align: right"><h1>Авторизация</h1></div>
    113.    <form action="" method="GET">
    114.    <p style="text-align: right">Логин:  <input type="text" name="login" value=""></p>
    115.    <p style="text-align: right">Пароль: <input type="password" name="password" value=""></p>
    116.    <p style="text-align: right"><input type="submit" name="go" value=" Вход "></p>
    117.    </form>
    118.     <hr />
    119.     <div><h5><a href="?ini=1">Создать и заполнить таблицу</a> (логин admin пароль admin)</h5></div>
    120.   </div>
    121.   </div>
    122.   <hr />
    123.   </div>
    124. </body>
    125. </html>