-2

私はユーザー入力を受け取るindex.phpにフォームを持っています。それはユーザー入力を含み、処理のために別のphpファイルに送信します。

index.php のコードは次のとおりです。

<?php
if(isset($_GET['q'])){
    include_once "form.php";
    exit(0);
}
?>
<!Doctype HTML>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Search</title>
    </head>
    <body>
        <form method="get">
         <input type="text" name="q" />
    </form>
    </body>
 </html>

フォームを送信すると、http://mysite.com/?q=textUserEntered(ドメインだけが以前にアクセスされたhttp://mysite.com/index.php?q=textUserEntered場合) または (index.php が以前にアクセスされた場合) に移動します。

フォームデータを form.php に渡しながら、http://mysite.com/form?q=textUserEnteredまたはフォームデータを渡すにはどうすればよいですかhttp://mysite.com/index.php/form?q=textUserEntered

最初のindex.phpとform.phpでこれを試しました.URLに移動しますが、データをform.phpに渡さず、代わりに404エラーページに移動します.

if(!empty($_GET['q']))
{
    header("Location: form?q=".rawurlencode($_GET['q']));
    exit;
}

アップデート:

action 属性の値に form.php を追加すると URL が無効になるため、action 属性を使用できませhttp://mysite.com/form.php?q=userEnteredTextん。http://mysite.com/form?q=userEnteredText

4

2 に答える 2

3

CURL を使用してデータを form.php ファイルに投稿し、form.php をリダイレクトしてフォーム送信メッセージを表示できます。

CURL を使用して投稿する方法:

if(!empty($_GET['q']))
{
    $output_url = "http://www.yoursite.com/form.php";

    $data  = "q=$_GET['q']";

    ob_start();
    $ch = curl_init ($output_url); 
    curl_setopt ($ch, CURLOPT_VERBOSE, 1);
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
    curl_exec ($ch);
    curl_close ($ch);
    $process_result = ob_get_contents();
    ob_end_clean();



if ($process_result != '') {
    header("Location: http://www.yoursite.com/form");
    exit;
}
}

また、mod_rewrite コードを .htaccess に記述して、キーワード「form」を使用して form.php ページにリダイレクトします。

URLに「q=userEnteredText」を表示したい場合は、以下のコードを使用できます。

header("Location: http://www.yoursite.com/form?$data");
于 2013-05-19T02:31:14.617 に答える
2

.phpファイル名に がありません...

if(!empty($_GET['q']))
{
    header("Location: form.php?q=".rawurlencode($_GET['q']));
    exit;
}
于 2013-05-19T02:16:44.653 に答える