-1

这是我整个索引页面的代码,其中包括注册和登录。出于某种原因,寄存器部分工作正常,并且插入正确。然而,登录部分不起作用,因为每当我在 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>

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

4

2 回答 2

1

您使用的是什么版本的 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"]}.";
于 2013-10-22T02:02:35.403 回答
1

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

要让这个工作看起来像你想要的:

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

但正如 John Conde 所提到的,存在重大的安全问题。

于 2013-10-22T01:52:37.373 回答