电子邮件中的验证链接

时间:2014-10-13 16:00:43

标签: php html

多年来一直在尝试:(

注册后,每个用户都会获得一个随机生成的数字,该数字存储在名为“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!

2 个答案:

答案 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'] 

并检查它是否对数据库正确。我还会在网址中添加电子邮件,以便您可以相互检查电子邮件和代码,以防万一您提供相同的哈希两次。