为什么我的 SELECT * FROM 不起作用?



这是我整个索引页面的代码,其中包括寄存器和登录名。 由于某种原因,寄存器部分工作正常,并且正确插入。 然而,登录部分不起作用,因为每当我在 SELECT * FROM 上调用 $queryrun(mysql_query($query)) 时,它都不起作用。

<?php
require('includes/dbconnect.php');
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$password = $_POST['password'];
$password = md5($password);
$logemail = $_POST['logemail'];
$logpassword = $_POST['logpassword'];
$logpassword = md5($logpassword);
// Register Script
if (isset($firstname) && !empty($firstname) && !empty($lastname) && !empty($email) &&   !empty($password)) {
$query = "INSERT INTO users VALUES('', '$firstname', '$lastname', '$email', '', 'm',   '9', '$password', 'bio'";
  $queryrun = mysql_query($query);  
} else {
echo 'Please fill out all of the form fields';
}
// Login Script
if (!empty($logemail) && !empty($logpassword)){
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password'";

$queryrun = mysql_query($query);
while ($row = mysql_fetch_assoc($queryrun)) {
    $logemail = $row['logemail'];
}
echo $logemail;
$numrows = mysql_num_rows($query);
if ($numrows > 0){
    echo 'User exists';
} else {
    echo 'User does not exist';
}
} else {
}
?>
<html>
<head>
<title></title>
</head>
<body>
<form action="index.php" method="POST">
Firstname: <input type="text" name="firstname" /><br />
Lastname: <input type="text" name="lastname" /><Br />
Email: <input type="text" name="email" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="Submit" />
</form>
<br /><hr />
<br />
Login:<br />
<form action="index.php" method="POST">
Email:<input type="text" name="logemail" /><br />
Password: <input type="password" name="logpassword" /><br />
<input type="submit" value="Log in" /><br />
</form>
</body>
</html>

与数据库的连接很好,因为寄存器部分代码有效,它只是登录代码不返回任何内容并说用户确实注意到存在,而用户确实存在

您的表单字段是$logemail的,而您的 mysql 语句使用 $email .

要使这项工作看起来像您想要的那样:

$query = "SELECT * FROM users WHERE email = '$logemail' AND password = '$logpassword'";

但正如约翰·康德(John Conde)所提到的,存在重大的安全问题。

你使用的是哪个版本的 PHP?此扩展从 PHP 5.5.0 开始被弃用,您确实应该使用 mysqli 或 PDO。

if (!empty($logemail) && !empty($logpassword)){
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password'";

您正在检查$logemail和$logpassword但将$email和$password放入查询字符串中...还可以在 PHP 变量的字符串中使用 {}。它有助于防止字符串串联变得混乱,您可以在字符串中使用关联的数组

echo "This is my string and this is the number {$number}. this is the value in my array: {$arrayvar["something"]}.";

最新更新