从数据库中选择数据

时间:2019-02-25 17:17:00

标签: php

我目前正在使用注册/登录系统。您可以注册的部分已完全正常工作并完成。登录部分快要完成了,还剩下一个问题:

我正在编写一个代码,检查在<input>中键入的密码是否等于SQL数据库的密码。这是我尝试过的:

if($password == "SELECT password FROM users WHERE username = '$username'")

这不起作用,因为程序将密码与“ SELECT .....”而不是数据库本身中的密码进行比较。

有人知道我如何制作该程序,以便将其与数据库中的密码进行比较,而不与文本“ SELECT password ...”进行比较吗?

谢谢

3 个答案:

答案 0 :(得分:2)

您仅使用字符串,您需要将该字符串发送到mysql查询,并返回行;

这有点复杂,可以使用加密密码

$sql = 'SELECT * FROM users WHERE email="'.$link->real_escape_string($_POST['email']).'"';
$set = $link->query($sql); $num = $set->num_rows; list($id,$email,$pwd,$token ) = $set->fetch_row();

if ($num == 0) {
    echo json_encode([0,'ERROR: This user doesn&apos;t exist']); die(); 
} else if  ( $pwd != '#'.md5($_POST['password'].$token) ) {
    echo json_encode([0,'ERROR: Wrong password']); die();
} else {
    setcookie("UserID", $id, time()+3600,'/');  /* expire in 1 hour */
    setcookie("token", $token, time()+3600,'/');
    echo json_encode([1,'SUCCESS: Logged in successfully']); die();
}

答案 1 :(得分:0)

要回答这个特定问题,您应该使用类似以下内容的东西:

if(isset($_POST['user_name') && isset($_POST['user_pass'])){
    $user_name = $_POST['user_name'];
    $user_pass = $_POST['user_pass'];

,对于PHP,您将要使用form method="POST"

<p>User Name</p><input type="text" name="user_name" />

答案 2 :(得分:0)

亲爱的,您的查询是错误的。 同样,您没有显示代码,但是正在使用 PDO(PHP门户数据对象)

根据下面的代码调整数据库名称,用户名和密码。以下是您的操作方法。让我知道我还有什么可以为您做的...

更新的php代码

<?php

    $db = new PDO (
    'mysql:host=localhost;dbname=Testing_db;charset=utf8', 
    'root', // username

    '' // password
);

// assuming the username and password is coming from a form input

$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);


if ($username == ''){
echo "username is empty";
exit();
}


if ($password == ''){
echo "Password is empty";
exit();
}



$result = $db->prepare('SELECT * FROM users where username = :username and password = :password');

        $result->execute(array(
            ':username' => $username, ':password' => $password));

$count = $result->rowCount();
$row = $result->fetch();

if( $count == 1 ) {
echo "login sucessful";
// Redirect me to a Dasboard.php to display the login user
//echo "<script>window.location='dashboard.php'</script>";


$username = htmlspecialchars($row['username']);
echo "userame: $username </br>";



}
else {

echo "<font color=red>Either Username or Password is Wrong</font>";
}


?>

更新的代码。

按如下所示创建数据库并将其插入。尝试使用插入的用户帐户。命名php文件,例如 login.php 。请使用上面的我的php代码

尝试一下,它将起作用

create table users (id int primary key auto_increment, username varchar(30), password varchar(30));
insert into users(username,password)values('test','test123');

这是您的表格

<form method="post" action="login.php">
username: <input type="text" name="username" id="username"><br>
password: <input type="text" name="password" id="password"><br>
<input type="submit" value="submit">
</form>