我通过电子邮件发送链接:
$to = $email;
$subject = "Reset your password";
$txt = "Hello " . $user . ", <br><br>Click here to reset your password <a href='http://example.com/reset-password?email=" . $email . "'>Reset Password</a>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= "From: webmaster@example.com";
if(mail($to,$subject,$txt,$headers))
{
$returnArray['error_message'] = "Email has been sent.";
}
else
{
$returnArray['error_message'] = "There is an issue with sending an email";
}
现在我将电子邮件作为$ _GET传递,但我试图将其作为$ _POST,我尝试使用这样的javascript:
<script type="text/javascript">
function DoPost(userEmail){
$.post("http://example.com/reset-password/", { email: userEmail } );
}
</script>
然后在我的链接上有这个:
$txt = "Hello " . $user . ", <br><br>Click here to reset your password <a href='javascript:DoPost(" . $email . ");'>Reset Password</a>";
然后我收到了电子邮件,结果是这样的:
<a rel="nofollow">Reset Password</a>
该链接未显示在电子邮件中,是否可以执行我要执行的操作,在电子邮件中创建帖子链接?
答案 0 :(得分:0)
您应该使用form
html标记将其换行,而不是使用带有get参数的a href
链接:
$txt = "Hello " . $user . ", <br><br>Click here to reset your password
<form action='http://example.com/reset-password' method='post'>
<input type='hidden' name='email' value='".$email."'>
<button type='submit' value='Submit'>Reset Password</button>
</form>";
答案 1 :(得分:0)
大多数电子邮件客户端不支持表单提交或任何形式的Javascript。而且你应该总是假设人们默认阻止来自电子邮件的脚本/图像。点击电子邮件中的链接通常会打开用户的网络浏览器并将其重定向到该页面 - 这样您就可以附加?foo=bar
的查询字符串,并通过$_GET
访问这些参数。< / p>
如果您绝对必须在$_POST
中检索这些参数,无论出于何种原因,您都可以将用户重定向到通过Javascript自动提交为POST的表单(并预先填充一些隐藏的输入以使您的参数通过通过)。