Не видит данные в базе - MySQL

Узнай цену своей работы

Формулировка задачи:

Ребят пытаюсь всего лишь провести вход. Зарегистрировал пользователя скажем с такими данными login = test, password = 12345 и пытаюсь сделать вход вручную. Пишу ссылку http://site.com/login.php?username=test … word=12345 и по коду оно выводит Invalid. Хотя проверил в базе пользователь такой есть, все данные правильно введены, но его не видит. Пробовал другого создать, но результат тот же. Вот мой код, то что за комментировано, пробовал первый раз получить ответ, результат тот же. Ошибки не отображает.
<?php
    error_reporting(E_ALL);
    require_once ("connect.php");
 
    $login = mysqli_real_escape_string($conn,$_GET['username']);
    $password = mysqli_real_escape_string($conn,$_GET['password']);
    $password = md5($password);
    
    $sql = mysqli_query($conn, "SELECT * FROM login WHERE username = '$login' AND password = '$password'");
    
    //if($sql){
    //    $dados = mysqli_num_rows($sql);
    //    echo "$dados";
    //    if($dados > 0){
    //        echo 'Success';
    //    }else{
    //        echo 'Invalid';
    //    }
    //}
    
    $id_user = mysqli_fetch_array($sql);
    if (empty($id_user['id'])){
        echo 'Invalid';
    }
    else {
        echo 'Success';
    }
    
    mysqli_close($conn);
?>

Решение задачи: «Не видит данные в базе»

textual
Листинг программы
// регистрация
 
$pdo = "";
$db_host = "???";
$db_name = "???";
$db_login = "???";
$db_password = "???";
 
try {
    $pdo = new PDO( sprintf( "mysql:host=%s;dbname=%s;charset=utf8", $db_host, $db_name ), $db_login, $db_password );
} catch( PDOException $e ) { $pdo = ""; }
 
if( $pdo == "" )
    die( "no connection..." );
 
$query = $pdo->prepare( "SELECT `id` FROM `login` WHERE `username` = ? LIMIT 1" );
$query->bindParam( 1, $_GET['username'], PDO::PARAM_STR );
 
if( !$query->execute() )
    die( "omg..." );
 
if( $query->rowCount() > 0 )
    die( "user exist..." );
 
$password_hash = password_hash( $_GET['password'], PASSWORD_DEFAULT );
 
$query = DB::GetPDO()->prepare( "INSERT INTO `login` ( `username`, `password` ) VALUES ( ?, ? )" );
$query->bindParam( 1, $_GET['username'], PDO::PARAM_STR );
$query->bindParam( 2, $password_hash, PDO::PARAM_STR );
    
if( !$query->execute() )
    die( "omg..." );
 
$tmpVar_login = htmlspecialchars( $_GET['username'], ENT_QUOTES, 'UTF-8' );
 
echo "<p>User " . $tmpVar_login . " created!</p>";
 
//--------------------------------------------------
 
// вход
$pdo = "";
$db_host = "???";
$db_name = "???";
$db_login = "???";
$db_password = "???";
 
try {
    $pdo = new PDO( sprintf( "mysql:host=%s;dbname=%s;charset=utf8", $db_host, $db_name ), $db_login, $db_password );
} catch( PDOException $e ) { $pdo = ""; }
 
if( $pdo == "" )
    die( "no connection..." );
 
$password_hash = password_hash( $_GET['password'], PASSWORD_DEFAULT );
 
$query = $pdo->prepare( "SELECT * FROM `login` WHERE `username` = ? AND `password` = ? LIMIT 1" );
$query->bindParam( 1, $_GET['username'], PDO::PARAM_STR );
$query->bindParam( 2, $password_hash, PDO::PARAM_STR );
 
if( !$query->execute() )
    die( "omg..." );
 
if( $query->rowCount() == 0 )
    die( "user not found..." );
 
$user = $query->fetchObject();
 
$tmpVar_login = htmlspecialchars( $user->username, ENT_QUOTES, 'UTF-8' );
$tmpVar_password_hash = htmlspecialchars( $user->password, ENT_QUOTES, 'UTF-8' );
 
echo "<p>", $tmpVar_login, "<br>", $tmpVar_password_hash, "</p>";

ИИ поможет Вам:


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

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы