多年来一直在尝试:(
注册后,每个用户都会获得一个随机生成的数字,该数字存储在名为“hash”的表中。
经过多次动荡之后,我已经设置了phpmailer并让整个电子邮件流程正常运行,一切正常,无后顾之忧。
但是我遇到了一个问题,我甚至在这个网站上看到了没有帮助的答案。我只想根据哈希创建一个唯一的激活链接。例如:
用“hash”作为“12345”的用户收到他们的验证邮件,我希望超链接看起来像这样 - www.example.com/verify.php?hash=12345
对于其他用户来说,这就是我目前正在尝试的方式
<?php
$link_address = "verify.php?hash='.$hash.'";
echo "<a href='$link_address'> Activate </a>";
?>
显示“激活”; ?&gt;“中
非常奇怪:(
修改
这是我之前尝试复制的指南 - http://code.tutsplus.com/tutorials/how-to-implement-email-verification-for-new-members--net-3824
它已经过时,默认的mail()函数不适用于我想要的东西,我特别推荐第5步
编辑2
邮件正文生成代码
$body = file_get_contents('C:\wamp\www\Game\examples\contents.html');
BIG EDIT !!
新代码:
<?php
include("connect.php");
$username = $_POST['username'];
$id_get = mysqli_query($con,"SELECT units.id, users.id, users.username FROM units, users WHERE users.username = '$username' AND units.id = users.id");
$gotid = mysqli_fetch_array($id_get);
$id4 = $gotid["id"];
$stuff_get = mysqli_query($con,"SELECT users.id, users.email, users.hash, users.username FROM users WHERE users.username = '$username' AND users.id=$id4");
$gotstuff = mysqli_fetch_array($stuff_get);
$hash2 = $gotstuff['hash'];
$email2 = $gotstuff['email'];
$username2 = $gotstuff['username'];
echo "Your username is ",$username2,"<br>";
echo "Your activation code is ",$hash2,"<br>";
?>
从那里我试图获取提交的用户名(来自注册)并从数据库中获取信息(ID,电子邮件等),然后只需在电子邮件中显示用户名和哈希值。
通常这会非常简单,但我会得到很好的旧“通知:未定义的索引:用户名”!!
编辑
对于一个完全简单的情况。
我希望能够从一个页面到另一个页面获取一个变量,例如。
page1.php中
有一个名为“$ users”的变量
使page2.php
想要回应$ users
但是我不知道如何在page2.php上提供如何使用page1.php专门设置变量$ users!
答案 0 :(得分:0)
由于极端困难,我正走另一条路。我没有激活这种方式,而是改为:
更简单:)
答案 1 :(得分:0)
"verify.php?hash='.$hash.'";
不正确,你不需要熵和点来将变量包含在双引号字符串中。 尝试
"verify.php?hash=$hash";
然后做这样的事情
mail($email, 'Please activate your account', "Hello " . $username. ",\r\nThank you for registering with us. Please visit the link below so we can activate your account:\r\n\r\nhttp://www.example.com/verify.php?hash=" . $hash . "\r\n\r\n-- Example team");
然后在您验证页面使用
S_GET['hash']
并检查它是否对数据库正确。我还会在网址中添加电子邮件,以便您可以相互检查电子邮件和代码,以防万一您提供相同的哈希两次。