如何将电子邮件值传递给url

时间:2013-12-13 05:14:42

标签: php email

嗨,我又来了同样的问题

 <?php 
  $email="xyz@gmail.com"; 
  $decode=urldecode($email); 
  ?>


<FORM METHOD="get" ACTION="action1.php">
Type your first name: <INPUT TYPE="text" NAME="FirstName"> <br/>
Type your last name: <INPUT TYPE="text" NAME="LastName"> <br/>
Type your email:<INPUT type="hidden" NAME="email" value="<?php $decode; ?>">
<INPUT TYPE="submit" VALUE="Click and See">
</FORM>

我获得了网址重定向:http://example.com/action1.php?FirstName=jon&LastName=Kuri&email=xyz%40abc.com

但我需要http://example.com/action1.php?FirstName=jon&LastName=Kuri&email=xyz@abc.com

因为此处使用电子邮件用于用户名。所以说错了。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:7)

这没有错......你错了。 URL中的保留字符必须编码为有效,或者它们不明确,并且可能在URL中用于其保留的目的。 @是保留字符,必须编码为%40

PHP为您解码。这对你来说是透明的,你甚至不用担心它。

以下是您的参考:http://www.blooberry.com/indexdot/html/topics/urlencoding.htm#whatwhy

答案 1 :(得分:-1)

为什么你甚至首先解码$email。要将字符串传递给URL,建议对它们进行编码,以便特殊字符不会混淆@等保留字符。在PHP中,对URL进行编码和解码就像分别调用urlencode()urldecode()一样简单。 由于您希望将电子邮件传递给URL,因此您应该对其进行编码而不是解码。 我已将您的代码修改为:

<?php 
  $email="xyz@gmail.com"; 
  $encodedEmail=urlencode($email); 
  ?>


<FORM METHOD="get" ACTION="action1.php">
Type your first name: <INPUT TYPE="text" NAME="FirstName"> <br/>
Type your last name: <INPUT TYPE="text" NAME="LastName"> <br/>
Type your email:<INPUT type="hidden" NAME="email" value="<?php $encodedEmail; ?>">
<INPUT TYPE="submit" VALUE="Click and See">
</FORM>

现在,只要您必须使用网址中的电子邮件地址,只需执行以下操作:

$decodedEmail = urldecode($_GET['email']); // It will return xyz@gmail.com as a string, decoded.

希望它能回答你的问题。