如何修复$ _GET错误?

时间:2013-02-26 02:40:55

标签: php get

我将表单数据从一个页面传递到另一个页面。

以下是表单操作的代码,verify.php:

<?php  

header("Location: http://domain.com/rd/r.php?&email=<?php echo $_GET['email']; ?>"); 

?>

但是,我不断收到以下错误:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/thanksfo/public_html/LP/x/verify.php on line 3

知道怎么解决吗?它表示意外的空格或t_encapsed。真的不知道出了什么问题...

3 个答案:

答案 0 :(得分:6)

双引号字符串的正确语法是:

header("Location: http://domain.com/rd/r.php?&email=$_GET[email]");

您不能在字符串中包含<?php代码,特别是结尾?>会破坏您的语法。

  • 数组语法sans引号仅在此上下文中有效,而不是在纯PHP代码中。

  • 正如@Aarolama Bluenk指出的那样,urlencode()是可取的:

    $formatted = urlencode($_GET['email']);
    header("Location: http://domain.com/rd/r.php?&email=$formatted");

如果尚未这样做,sanitize电子邮件地址也是明智的。

答案 1 :(得分:2)

正如其他人所指出的,在字符串中使用<?php ?>语法是行不通的。最重要的是,您还应确保生成的URL有效:

header("Location: http://domain.com/rd/r.php?" . http_build_query(array(
    'email' => $_GET['email'],
)));

我还用"?&"

替换了网址的"?"部分

另请参阅:http_build_query()

您可以选择filter电子邮件地址:

$email = filter_input(INPUT_GET, 'email', FILTER_VALIDATE_EMAIL);

使用此功能,$email可以是:

  • null - 未传递值
  • false - 这不是有效的电子邮件
  • 电子邮件地址为字符串

答案 2 :(得分:1)

或尝试,我认为也可以工作

<?php  

header("Location: http://domain.com/rd/r.php?&email=".$_GET['email']); 

?>