【发布时间】:2014-03-12 01:10:48
【问题描述】:
我在 php 中有一个登录表单,我已连接到 phpmyadmin 中的 sql 数据库。我编写的脚本应该从用户那里获取电子邮件和密码变量。然后它应该检查数据库以确保用户已注册。然后要么将用户重定向到他们的帐户,要么通知用户他们的详细信息不匹配并要求他们重试。但是,无论我以何种方式更改代码,即使我通过表单提交的数据是随机信息,它也会始终重定向到帐户页面。
任何帮助或建议都会很棒。谢谢。 这是我的代码
<?php
//require_once 'includes/db_connect.php';//
//require_once 'includes/functions.php';//
$con=mysqli_connect("x","m","z","m");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
session_start(); //starting a PHP session.
if (isset($_SESSION['logged'])){
header("Location:account.html");
exit();
}
$email = $_POST['email'];
$password =($_POST['password']);
$sql = mysqli_query($con,"SELECT * FROM `websiteusers` WHERE email ='" . $email . "' and password ='" . $password . "'") or die (mysqli_error($sql));
$count = mysqli_num_rows($sql);
//$row=mysqli_fetch_array($query);//
if ($count==1){
$_SESSION[logged] = 1;
$_SESSION['email'] = $email;
$_SESSION['password'] =$password;
header("location:account.html"); /* Redirect the browser */
}
else {
echo "Sorry those details are not in the database. Click here <a href=\"memberlogin.html\"</a> to try again.";
}
exit();
?>
【问题讨论】:
-
确保您的会话在两次页面浏览之间被正确销毁。您可能将其保持打开状态,这意味着您的数组中的“已记录”索引始终设置,因此您总是点击帐户。您可能想尝试的一件事是当有人点击登录页面时调用 session_destroy()。
-
@Zarathuztra 感谢您的提示。我将它添加到代码中,但我似乎仍然遇到问题
标签: php sql database forms login