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

PHP确认电子邮件链接将我带到错误的页面,php,email,activation,Php,Email,Activation,我有一个php脚本:) 基本上,注册用户会收到一封电子邮件,然后点击激活链接。当他们点击激活链接时,就会进入activate.php页面,一切都完成了。 他们收到的电子邮件中的链接看起来有问题 您好用户名,下面是您的登录信息: 用户名:计算密码:计算下一步是单击此链接激活您的帐户:单击此处 您可以在上面的最后一行中看到,该网站的名称已加入到activate.php页面,该链接应将它们带到该页面。所以我猜我的错误不是很严重,我只是缺少了正斜杠之类的东西。 无论如何,我认为问题来自下面的代码。我把代

我有一个php脚本:) 基本上,注册用户会收到一封电子邮件,然后点击激活链接。当他们点击激活链接时,就会进入activate.php页面,一切都完成了。 他们收到的电子邮件中的链接看起来有问题

您好用户名,下面是您的登录信息:

用户名:计算
密码:计算

下一步是单击此链接激活您的帐户:单击此处

您可以在上面的最后一行中看到,该网站的名称已加入到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] = "";
?>

如果有人能对此有所了解,那就太好了。我想我会提到我正在使用PHP5.3 我认为问题来自我自己 href=“.$siteUrl.”activate.php?username=“.$signup[username]。”>单击此处”; $subject=$title


但是我需要一些有效的输入:)来自某个知道的人。

我注意到当你分配你使用的链接时。$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=“你好”。$signup[fname]。,
”。 “准备好开始获得你应得的打击。现在,这是您的登录信息:

”。 “用户名:”.$signup[username]。“
”。 “密码:“.$signup[密码]。”

”。 “下一步是单击此链接激活您的帐户:”;
您不应该对双斜杠有问题,但如果您对双斜杠有问题,您可以使用:

$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>";
$message=“你好”。$signup[fname]。,
”。 “准备好开始获得你应得的打击。现在,这是您的登录信息:

”。 “用户名:”.$signup[username]。“
”。 “密码:“.$signup[密码]。”

”。 “下一步是单击此链接激活您的帐户:”;
您的邮件中需要在“a”和“href”之间留一个空格


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

因为它位于字符串的内部,您需要对其进行转义或使用单引号

这里有一个固定版本:

$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>";
$message=“你好”。$signup[fname]。,
”。 “准备好开始获得您应得的点击量。现在是您的登录信息:

”。 “用户名:”.$signup[username]。“
”。 “密码:“.$signup[密码]。”

”。 “下一步是单击此链接激活您的帐户: ";
出于安全目的,您是否对密码进行哈希运算?您可能不希望发送明文密码。您可能需要添加令牌激活,例如:example.com/activate.php/?token=dhwudf983nsdfwuen&user=nwenwsli2nf82ndj,并让其检查用户和令牌,然后您就会知道是用户实际单击了链接感谢您的输入,稍后我将为此创建单独的线程。因为就像你说的,安全方面是非常蹩脚的。所以你可以自由地参与进来。问候奈吉。菲利普·怀特豪斯,谢谢你的回复。我尝试了你的代码,但发现了这个错误。解析错误:语法错误,第157行的D:\hosting\7560507\html\fast\traffic1\reg.php中出现意外的T_ENCAPSED_和_空格,第157行是您提供的最后一行代码。您好,Chris,这是我在这里粘贴代码时的错误。在“a”和“href”之间有一个空格,我已经纠正了这一点,让其他人看到。谢谢Nige。嗨,Devon,我刚刚试过你说的话,但当我尝试实现这一点时遇到的问题是,当我做了两次斜杠后,我的代码就被注释掉了。您是否可以使用我上面的代码并实现最后几行,这样我就可以进行复制和粘贴。干杯,谢谢德文郡,现在是凌晨2点40分。我疯了,在这件事解决之前拒绝睡觉。你修好了。谢谢Nige@user1906671:谢谢,我很高兴能帮上忙,请记住勾选我的答案作为解决方案,以便其他人知道答案。