1

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

下面是表单动作的代码,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。真的不知道怎么了……

4

3 回答 3

6

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

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

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

  • 无引号的数组语法仅在此上下文中有效,在普通 PHP 代码中无效。

  • 正如@Aarolama Bluenk 指出的那样,urlencode()建议这样做:

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

如果还没有这样做,清理电子邮件地址也是明智之举。

于 2013-02-26T02:42:01.623 回答
2

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

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

我还"?&"简单地替换了 URL 的一部分"?"

也可以看看:http_build_query()

或者,您可以过滤电子邮件地址:

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

使用它,$email可以是:

  • null- 值未通过
  • false- 这不是一个有效的电子邮件
  • 电子邮件地址作为字符串
于 2013-02-26T02:49:00.797 回答
1

或尝试,我认为也可以

<?php  

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

?>
于 2013-02-26T02:46:39.540 回答