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文字列内にコードを含めることはできません。特に、閉じる?>と構文が壊れます。

  • 配列構文 sans quotes は、プレーンな 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 に答える