2013-02-26 198 views
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。真的不知道什麼是錯的...

+0

確保'$ _GET ['email']'實際上是定義的;和'?&email = ...'可以簡單地'?email = ...'。 – 2013-02-26 02:46:10

回答

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電子郵件地址,如果沒有這樣做。

+3

我可能'urlencode'該電子郵件。 – Kermit 2013-02-26 02:42:48

+1

'$ _GET [email]'會發出通知,不像在雙引號字符串中使用。 – 2013-02-26 02:50:52

1

或嘗試,我覺得也行

<?php 

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

?> 
2

正如指出的其他人,利用內幕字符串<?php ?>語法將無法正常工作。最重要的是,你也應該確保產生的URL是有效的:

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

我也換成了URL的一部分"?&"用簡單"?"

參見:http_build_query()

或者,您可以filter電子郵件地址:

$email = filter_input(INPUT_GET, 'email', FILTER_VALIDATE_EMAIL); 
使用這種

$email可以是:

  • null - 值不通過
  • false - 它不是一個有效的電子郵件
  • 的電子郵件地址作爲字符串