任何人想试试为什么此电子邮件激活不起作用?基本上,我发送两个URL查询变量,将激活密钥和电子邮件存储为响应。我将它们解压缩为list()
并将它们用作db查询。所有的db对象在测试时运行良好,但是当我从电子邮件运行脚本时,它会打印出回显语句:“该帐户现在处于活动状态......”但是当我检查数据库时,它没有更新这些东西我告诉它即激活密钥,状态和userid。电子邮件激活脚本的问题
下面是一个奇怪的部分:当我在数据库中只有一个用户时,代码就会按照它应该执行的操作。但只要我尝试添加另一个用户,它就不会按照指示更新新记录。所以我的问题是:为什么这个代码只在数据库中有一个用户时才有效,而当有多个用户时呢?这没有任何意义。非常感谢这里的帮助。
include $_SERVER['DOCUMENT_ROOT']. '/video_dating/includes/Database.php';
list($queryString,$email) = explode('&', $_SERVER['QUERY_STRING']);
print_r($email);
$dbname = new Database();
$dbname->Query('select activationkey, id, email from users');
$userinfo = $dbname->Getdata();
foreach ($userinfo as $users)
{
if ($queryString == $users['activationkey'])
{
$dbname->Query("update users set activationkey='', status='activated', userid='1' where email='$email'");
echo "Thank you for registering. Your account is now active. Please login any time.";
}
else
echo "Sorry, your account was not activated.";
}
嘿,非常感谢您的快速回复。实际上,它听起来可能在语义上具有误导性,但用户标识实际上与用户拥有的帐户类型相关联(1为基本,2为标准,3为高级),因此它不会自动增加。激活后,他们会自动获得“基本账户”。我确实有一个id字段auto_increment ...是的,我一定会增加安全措施,但首先我想让这个东西正常工作。那么我的更新查询怎么样:我是否还需要在字符串中引用$ email,以便更新正确的记录? – bill 2011-02-02 17:45:11
起初,我认为你应该检查你是否真的从QUERY_STRING中获得了所需的值。我认为你应该用'&`而不是`&`爆炸。在HTML中使用`&`来编码`&`,如果它使用例如对于URIs,但在QUERY_STRING里面,它会是'&` – 2011-02-02 18:42:45