PHP确认电子邮件链接将我带到错误的页面

时间:2013-01-12 00:03:02

标签: php email activation

我有一个PHP脚本:) 用户注册基本上会收到一封电子邮件,然后单击激活链接。当他们点击激活链接时,会将他们带到activate.php页面并完成所有操作。 他们收到的电子邮件中的链接问题似乎是

Hello username,现在这里是您的登录信息:

用户名:计算
密码:计算

下一步是点击此链接激活您的帐户:点击此处 < / p>

您可以在上面的最后一行看到,该网站的名称已加入该链接应该带到的activate.php页面。因此,我猜测我的错误并不是那么糟糕,我只是缺少正斜杠或类似的东西。 无论如何,我认为问题来自下面的代码。我尽可能地缩短了代码。

<?

// send email
$myname = $contact_name;
$myemail = $contact_email;

$contactname = $signup[fname];
$contactemail = $signup[email];
$message = "Hello ".$signup[fname].",<BR>".
"Get ready to start getting the hits you deserve. Now here is your login info:<BR>     <BR>".
"username: ".$signup[username]."<BR>".
"password: ".$signup[password]."<BR><BR>".
"<B>The next step is to click on this link to activate your account:<a href=".$siteUrl."activate.php?username=".$signup[username].">CLICK HERE</a></b>";
$subject = $title;

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$myname." <".$myemail.">\r\n";
$headers .= "To: ".$contactemail." <".$contactemail.">\r\n";
$headers .= "Reply-To: ".$myname." <".$myemail.">\r\n";
$headers .= "X-Priority: 1\r\n";
$headers .= "X-MSMail-Priority: High\r\n";
$headers .= "X-Mailer: Just My Server";

mail($contactemail, $subject, $message, $headers);
$signup[username] = "";
?>

如果有人能够对此有所了解,那将是件好事。以为我只会提到我使用的是PHP 5.3 我认为自己的问题来自于 href =“。$ siteUrl。”activate.php?username =“。$ signup [username]。”&gt;点击这里“; $ subject = $ title;

但我需要一些知道的人的有效输入:)。

3 个答案:

答案 0 :(得分:2)

您的消息中需要“a”和“href”之间的空格。

此外,所有现代电子邮件客户端都会自动将URL转换为链接,因此可能根本不需要使用href标记。

答案 1 :(得分:0)

我注意到你分配了你使用过的链接。$ siteUrl。你真的设置了那个变量吗?

此外,由于您将来自外部来源(电子邮件托管网站),因此将您的链接“硬编码”为完整的网站地址也同样合适。例如:

<a href="http://www.yourwebsite.com/yourdirectories/activate.php?username=".$signup[username].">Click Here</a>

因此,您的消息值的值可能是。

$message = "Hello ".$signup[fname].",<BR>".
"Get ready to start getting the hits you deserve. Now here is your login info:<BR>     <BR>".
"username: ".$signup[username]."<BR>".
"password: ".$signup[password]."<BR><BR>".
"<B>The next step is to click on this link to activate your account:<a href='http://www.yourwebsite.comactivate.php?username=".$signup[username]."'>CLICK HERE</a></b>";

你应该没有双斜线的问题,但如果你有问题可以使用:

$message = "Hello ".$signup[fname].",<BR>".
"Get ready to start getting the hits you deserve. Now here is your login info:<BR>     <BR>".
"username: ".$signup[username]."<BR>".
"password: ".$signup[password]."<BR><BR>".
"<B>The next step is to click on this link to activate your account:<a  href='http:/"."/www.yourwebsite.com/activate.php?username=".$signup[username]."'>CLICK HERE</a></b>";

答案 2 :(得分:0)

因为它在字符串里面你需要逃避它们或使用单引号。

这是一个固定版本:

$message = "Hello ".$signup[fname].",<br>".
  "Get ready to start getting the hits you deserve. Now here is your login info:<br>     <br>".
  "username: ".$signup[username]."<br>".
  "password: ".$signup[password]."<br><br>".
  "<b>The next step is to click on this link to activate your account: 
  <a href='".$siteUrl."activate.php?username=".$signup[username].'>CLICK HERE</a></b>";