如果电子邮件匹配使用PHP重定向

时间:2016-04-05 14:21:35

标签: php mysql redirect

我正在尝试处理一个表单,如果用户输入存在于数据库中的电子邮件,则会将其重定向到索引页面,但我似乎无法找出我的代码无效的原因。它不会使用if语句来检查用户。

// Create connection
$conn = mysqli_connect($host, $user, $password, $database, $port);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connection Successful";

$query = "SELECT * FROM FacultyRegistration where email = " . $_POST['email'] ;
    $result = mysqli_query($conn, $query) or die ("There was an error:" . mysqli_error($conn));

    if (mysqli_num_rows($result) > 0) {
        header('Location: index.php');
        exit();
    }
    else{
        header('Location: register.php');
        exit();
    }

    $conn->close();
    ?>

3 个答案:

答案 0 :(得分:0)

您可以使用:

$email = addslashes($_POST['email']);

$query = "SELECT * FROM FacultyRegistration where email = '$email'" ;

您没有将电子邮件放在引号之间。

答案 1 :(得分:0)

您可以更改此代码

if (mysqli_num_rows($result) > 0) 

if (count($result) > 0)

答案 2 :(得分:0)

由于您在发送标头之前发送内容,因此无效。 如果您需要使用header()函数,那么您需要确保没有内容返回给浏览器。

可能会收到Headers already sent警告。

要使其正常工作,请删除此行

echo "Connection Successful";

并将您的查询更改为

$query = "SELECT * FROM `FacultyRegistration` WHERE `email` = '" . $_POST['email'] . "';";

您收到SQL错误,因为@是特殊字符,您需要使用字符串文字转义电子邮件''

最好添加一些转义或预处理语句以避免SQL注入,例如mysqli_real_escape_string()