2013-01-12 22 views
0

我有一个PHP脚本:) 基本上用户注册收到一封电子邮件,然后单击激活链接。当他们点击激活链接时,它会将它们带到activate.php页面,并且全部完成。 的问题在他们收到的电子邮件中的链接看起来像PHP确认电子邮件链接是带我到错误的页面

Hello用户名,现在这里是您的登录信息:

用户名:计算
密码:计算

下一个步骤是点击此链接激活你的账号:点击这里

你可以在上面的最后一行看到,网站的名字加入到了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]。”> CLICK HERE“; $ subject = $称号;

但我需要一些一个谁知道一些有效的输入:)

+0

为了安全起见,你散列密码,你也可能要不要发送明文密码,你可能想添加令牌激活,例如:example.com/activate.php/?token=dhwudf983nsdfwuen&user=nwenwsli2nf82ndj,并检查用户和令牌,然后你就会知道这是实际点击的用户链接 – Class

+0

感谢您的输入,我将在稍后创建一个独立的线程。因为像您说的安全方很跛。所以你可以随意加入。关心尼日尔。 – user1906671

回答

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>"; 
+0

嗨德文,我刚刚尝试了你所说的,但当我尝试实现这个时,我遇到的问题是网址从何处开始IE http://只要我做了2个斜线,我的代码就会被注释掉。是否有可能使用我的代码以上,并实现让我们说最后几行,所以我可以做一个复制和粘贴。干杯尼日尔 – user1906671

+0

谢谢德文,它在早上2.40。我遭到了破坏,并拒绝在这个问题得到解决之前上床睡觉。你修好了。谢谢尼日尔 – user1906671

+0

@ user1906671:谢谢,我很乐意提供帮助,请记住将我的答案作为解决方案进行检查,以便其他人知道答案。 –

2

你需要之间的“一”和“HREF”的空间你的信息。

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

+0

嗨克里斯,这是我在这里粘贴代码时不好。 “a”和“href”之间有一段距离,因为我已经纠正了这个问题,以供其他人看到。谢谢尼日。 – user1906671

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>"; 
+0

菲利普怀特豪斯,感谢您的答复我试过你的代码,我得到这个错误。第157行中的D:\ hosting \ 7560507 \ html \ fast \ traffic1 \ reg.php中的解析错误:语法错误,意外的T_ENCAPSED_AND_WHITESPACE行157是您提供的最后一行代码。 – user1906671