За последние 24 часа нас посетили 16753 программиста и 1694 робота. Сейчас ищут 839 программистов ...

Не получается сделать аутентификацию пользователя в php

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

  1. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    ребят, нужна помощь! Сделал аутентификацию пользователя на сервере, но что то работает не так. Создал файл login.php:
    PHP:
    1. <?php //login.php
    2. $hn='localhost';
    3. $db='mybase';
    4. $un='samir';
    5. $pw='samirfx1994';
    6. ?>
    далее к нему обращаются два файла: setupusers.php:


    PHP:
    1. <?php // setupusers.php
    2. require_once 'login.php';
    3. $connection = new mysqli($hn, $un, $pw, $db);
    4. if ($connection->connect_error) die($connection->connect_error);
    5. $query = "CREATE TABLE users (
    6. forename VARCHAR(32) NOT NULL,
    7. surname VARCHAR(32) NOT NULL,
    8. username VARCHAR(32) NOT NULL UNIQUE,
    9. password VARCHAR(32) NOT NULL
    10. )";
    11. $result = $connection->query($query);
    12. if (!$result) die($connection->error);
    13. $salt1 = "qm&h*";
    14. $salt2 = "pg!@";
    15. $forename = 'Bill';
    16. $surname = 'Smith';
    17. $username = 'bsmith';
    18. $password = 'mysecret';
    19. $token = hash('ripemd128', "$salt1$password$salt2");
    20. add_user($connection, $forename, $surname, $username, $token);
    21. $forename = 'Pauline';
    22. $surname = 'Jones';
    23. $username = 'pjones';
    24. $password = 'acrobat';
    25. $token = hash('ripemd128', "$salt1$password$salt2");
    26. add_user($connection, $forename, $surname, $username, $token);
    27. function add_user($connection, $fn, $sn, $un, $pw)
    28. {
    29. $query = "INSERT INTO users VALUES('$fn', '$sn', '$un', '$pw')";
    30. $result = $connection->query($query);
    31. if (!$result) die($connection->error);}
    32. ?>
    и файл authentificate.php:
    PHP:
    1. <?php // authenticate.php
    2. require_once 'login.php';
    3. $connection = new mysqli($hn, $un, $pw, $db);
    4. if ($connection->connect_error) die($connection->connect_error);
    5. if (isset($_SERVER['PHP_AUTH_USER']) &&
    6. isset($_SERVER['PHP_AUTH_PW']))
    7. {
    8. $un_temp = mysql_entities_fix_string($connection,$_SERVER['PHP_AUTH_USER']) ;
    9. $pw_temp = mysql_entities_fix_string($connection,$_SERVER['PHP_AUTH_PW']) ;
    10. $query = "SELECT * FROM users WHERE username='$un_temp'";
    11. $result = $connection->query($query) ;
    12. if (!$result) die($connection->error) ;
    13. elseif ($result->num_rows)
    14. {
    15. $row = $result->fetch_array(MYSQLI_NUM);
    16. $result->close();
    17. $salt1 = "qm&h*";
    18. $salt2 = "pg!@";
    19. $token = hash('ripemd128', "$salt1$pw_temp$salt2");
    20. if ($token == $row[3]) echo "$row[0] $row[1] :
    21. Привет, $row[0] , теперь вы зарегистрированы под именем '$row[2]'";
    22. else die("Неверная комбинация имя пользователя — пароль") ;
    23. }
    24. else die("Неверная комбинация имя пользователя — пароль") ;
    25. }
    26. else
    27. {
    28. header('WWW-Authenticate: Basic realm="Restricted Section"');
    29. header(' HTTP/1.0 401 Unauthorized');
    30. die ("Пожалуйста, введите имя пользователя и пароль");
    31. }
    32. $connection->close();
    33. function mysql_entities_fix_string($connection, $string)
    34. {
    35. return htmlentities(mysql_fix_string($connection, $string));
    36. }
    37. function mysql_fix_string($connection, $string)
    38. {
    39. if (get_magic_quotes_gpc()) $string = stripslashes($string);
    40. return $connection->real_escape_string($string);
    41. }
    42. ?>
    все работает без ошибок, но когда после создания самой базы пытаюсь вызвать ее в командной строке выводит вот что:
    Screenshot_1.png
    или:
    таблицу, которая вся заполнена а пароли нет, очень странно(
    а кгда пытаюсь на серваке в форму заполнять правильные данные, то все равно пишет что неверные имя пользователя и пароль, подскажите в чем ошибка???
    Ощущение такое, что прграмма не заходит в часть кода:
    PHP:
    1. elseif ($result->num_rows)
    2.  
    3. {
    4.  
    5. $row = $result->fetch_array(MYSQLI_NUM);
    6.  
    7. $result->close();
    8.  
    9. $salt1 = "qm&h*";
    10.  
    11. $salt2 = "pg!@";
    12.  
    13. $token = hash('ripemd128', "$salt1$pw_temp$salt2");
    14.  
    15. if ($token == $row[3]) echo "$row[0] $row[1] :
    16.  
    17. Привет, $row[0] , теперь вы зарегистрированы под именем '$row[2]'";
    18.  
    19. else die("Неверная комбинация имя пользователя — пароль") ;
    20.  
    21. }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    все что выложил - это говнокод
     
  3. Samir

    Samir Новичок

    С нами с:
    12 янв 2018
    Сообщения:
    48
    Симпатии:
    1
    забавно)