我正在用phpNuke开发一个用户注册模块,我遇到了一个我不知道这是什么的问题。
该函数应该做什么:
- 从用户注册表中获取所有数据,将其放入临时用户的MySql表中。
- 此时,将向站点管理员发送一封 html 电子邮件以供审批。
- 管理员通过 html 电子邮件中的链接批准此操作后,将向用户发送一封电子邮件,告知他们的帐户已获得批准。
$check_num = md5($user_email);
if($creditcard == "1"){ $finishlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=2"; }else{ $finishlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=1"; $rejectlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=0"; } $from_admin = $adminmail; $admin_header = "MIME-Version: 1.0" . "'r'n"; $admin_header .= "Content-type: text/html; charset=UTF-8" ."'r'n"; $admin_header .= "From: $from_admin" . "'r'n"; $admin_msg = "<html><head><title>Membership Request</title></head>" ."<body><b>Membership Request</b><br /><br />" ."<table width='"500'" border='"0'">" ."<tr><td width='"150'">Country/Region :</td><td width='"350'">$region</td></tr>" ."<tr><td width='"150'">Company Name :</td><td width='"350'">$organization</td></tr>" ."<tr><td width='"150'">Email Address :</td><td width='"350'">$user_email</td></tr>" ."<tr><td width='"150'">Name :</td><td width='"350'">$fullname</td></tr>" ."<tr><td width='"150'">Title :</td><td width='"350'">$title</td></tr>" ."<tr><td width='"150'">Telephone :</td><td width='"350'">$phone</td></tr>" ."<tr><td width='"150'">Referral :</td><td width='"350'" valign='"top'">$referral</td></tr>" ."<tr><td width='"150'">Area of interest :</td><td width='"350'">$areaOfInterest</td></tr>" ."<tr><td width='"150'">Sign up for updates :</td><td width='"350'">$newsletter</td></tr>" //."<tr><td width='"150'">Activate Member :</td><td width='"350'"><a href='"$finishlink'">YES</a>/<a href='"$rejectlink'">NO</a></td></tr>" .'<tr><td width="150">Activate Member :</td><td width="350"><a href="'.$finishlink.'">YES</a> <a href="'.$rejectlink.'">NO</a></td></tr>' ."</table></body></html>"; $admin_subj = "Membership Request from ".ucwords($fullname).",".$region; mail($adminmail,$admin_subj,$admin_msg, $admin_header);
上面是发送HTML电子邮件的脚本,它在IIS环境中完美运行,但是当我将其迁移到网络解决方案上的Linux服务器时,$finishlink在$checksum变量中添加了"!"。 这只发生在 Linux 环境中。
从上面可以看到,$finishlink和$rejectlink几乎相同,区别是最后的&adminApproval=value。而这个"未知变量"只发生在$finishlink,$rejectlink很好。
我的电子邮件中的错误示例,终点链接:
http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=f17cde8f32a68d06af5301! bda67653e4&adminApproval=1">YES
拒绝链接:
http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=f17cde8f32a68d06af5301bda67653e4&adminApproval=0">NO
如果有人能够为我指出正确的方向,我将不胜感激!我花了更多我应该花的时间在这上面。
据我所知,您的代码看起来不错,没有理由发生这种情况。
通用的答案是简化代码,直到到达失败的确切点。如果您不通过电子邮件发送正文,而只是在浏览器中显示或保存到文件中,是否正确?