php和mysql在单击电子邮件激活链接后未激活新用户
我正在用php创建一个注册/登录系统。我的代码可以通过电子邮件向新用户发送激活链接,但用户点击链接,用户未激活。请任何人帮助,代码如下 users.phpphp和mysql在单击电子邮件激活链接后未激活新用户,php,mysql,Php,Mysql,我正在用php创建一个注册/登录系统。我的代码可以通过电子邮件向新用户发送激活链接,但用户点击链接,用户未激活。请任何人帮助,代码如下 users.php function activate($email, $email_code) { $email = mysql_real_escape_string($email); $email_code = mysql_real_escape_string($email_code); if (mysql
function activate($email, $email_code) {
$email = mysql_real_escape_string($email);
$email_code = mysql_real_escape_string($email_code);
if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `user` WHERE `email` = '$email' AND `email_code` = '$emal_code' AND `active` = 0"), 0) == 1) {
if (mysql_query("UPDATE `user` SET `active` = 1 WHERE `email` = '$email'")){
return true;
} else {
return false;
}
}
}
function register_user ($register_data) {
array_walk($register_data, 'array_sanitize');
$register_data['password'] = md5($register_data['password']);
$fields = '`' . implode('`, `', array_keys ($register_data)) . '`';
$data = '\'' . implode('\', \'', $register_data) . '\'';
mysql_query("INSERT INTO `user` ($fields) VALUES ($data)");
email($register_data['email'], 'Activate your account', "Hello " . $register_data['username'] . ",\n\nYou need to activate your account by clicking the link below:\n\nhttp://fredhosting.com/real/activate.php?email=" . $register_data['email'] . "&email_code=" . $register_data['email_code'] . "\n\n - Fredhosting.com");
}
Activate.php
if (isset($_GET['success']) === true && empty($_GET['success']) === true) {
?>
<h2>Thanks, we have activated your account...</h2>
<p>You can now Log in!</p>
<?php
} else if (isset($_GET['email'], $_GET['email_code']) === true) {
$email = trim($_GET['email']);
$email_code = trim($_GET['email_code']);
if (email_exists($email) === false) {
$errors[] = 'Oops, something went wrong and we could not find that email address.';
} else if (activate($email, $email_code) === false) {
$errors[] = 'We had some issues activating your account.';
}
if (empty($errors) === false) {
?>
<h2>Oops...</h2>
<?php
echo output_errors($errors);
} else {
header('Location: activate.php?success');
exit();
}
}
if(isset($\u GET['success'])==true&&empty($\u GET['success'])==true){
?>
谢谢,我们已激活您的帐户。。。
你现在可以登录了
哎呀。。。
错误:
不正确的变量$emal\u代码
但是,在发布代码之前,拼写错误通常会被重新阅读几次
似乎您正在处理关闭的PHP错误,请激活并推荐它们
ini_set('display_errors', '1');
error_reporting(E_ALL);
您的脚本是否产生错误或其他问题?您是否进行过任何类型的调试以缩小问题的范围?我的猜测是,如果您在代码中添加一些简单的var\u dump()
语句进行调试,您将立即发现问题。activate()中的另一个指针
function绝对没有理由首先进行选择。如果您正确处理了所有结果/错误条件(无论如何都应该这样做),您可以直接转到更新并消除多次查询的需要.大家好…谢谢你们的回复…它实际上根本没有产生任何错误,只是没有激活新用户。@user2983998为什么它没有激活用户?在代码执行的什么时候它没有达到您期望的效果?您是否尝试过在MySQL中处理错误,看看是否有问题?正确的代码不应该只是激活检查结果,看看你是否得到了预期的结果。此外,你甚至不应该使用mysql.*
函数编写新代码,因为它们已被弃用。建议使用mysqli
或PDO
。哈哈哈,我认为dat是我的错误。。。我太棒了上帝保佑你无论你在哪里谢谢
ini_set('display_errors', '1');
error_reporting(E_ALL);