我将表单数据从一个页面传递到另一个页面。
以下是表单操作的代码,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。真的不知道出了什么问题...
答案 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']);
?>