成员系统代码总是将我重定向到"电子邮件已注册页面"
这是我在处理时使用的代码,用于检查电子邮件是否为用户名
是否已被采取
请帮忙!!!
<?php
$db_host = "localhost";
$db_user = "ms_admin";
$db_pass = "secretpassword";
$db_name = "member_system";
$connection = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(mysqli_connect_errno())
die("Databse connection failed." . mysqli_connect_error()
. " (" . mysqli_connect_errno() . ")" );
?>
<?php
function check_email($e_mail)
{
$query = "SELECT email FROM members ";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
}
?>
<?php
$full_name = ucwords($_POST["full_name"]);
$email = strtolower($_POST["email"]);
$password = md5($_POST["password"]);
check_email($email);
?>
我改变了那些:
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
自:
if($num_rows>0) header("Location: registration_unsuccessful.php");
else header("Location: registration_successful.php");
似乎 ($num_rows>0) 总是返回 FALSE :(
请帮忙,,谢谢。。。。
check_email() 中缺少$connection变量,请global $connection;
像
function check_email($e_mail){
global $connection;
$query = "SELECT email FROM members ";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
}
check_email($email);
或
function check_email($e_mail, $connection){
$query = "SELECT email FROM members ";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
}
check_email($email, $connection);
虽然我喜欢第一:)
问题出在重定向用户之前的测试中:
// if the rows are > 0 then it means the email already exists
// which means we should redirect to the unsuccessful registration page
if($num_rows>0) header("Location: registration_unsuccessful.php");
else echo header("Location: registration_successful.php");
// else, we redirect to successful registration page (meaning the email does not exists in DB)
正如@Mihai提到的,您忘记连接查询字符串。
尝试以下代码
<?php
function check_email($e_mail)
{
$query = "SELECT email FROM members";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_unsuccessful.php");
else echo header("Location: registration_successful.php")
}
?>
<?php
$full_name = ucwords($_POST["full_name"]);
$email = strtolower($_POST["email"]);
$password = md5($_POST["password"]);
check_email($email);
?>
使用
$query = "SELECT email FROM members ";
$query .= "WHERE email='".$e_mail."'";
您错过了成员之后的空间,将其复制粘贴到您的代码中。
或使用简单的解决方案
$query = "SELECT email FROM members WHERE email='".$e_mail."'";
更新
mysqli_store_result($connection);
$num_rows= mysqli_num_rows($user_query);
if($num_rows>0)
原因 ->使用store_result缓冲结果。