-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)

我怎样才能让它去http://mysite.com/form?q=textUserEnteredhttp://mysite.com/index.php/form?q=textUserEntered同时仍将表单数据传递给 form.php

我在开头的 index.php 和 form.php 中尝试过,它导航到 URL,但没有将数据传递给 form.php,而是转到 404 错误页面。

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

更新:

我不能使用 action 属性,因为将 form.php 添加到 action 属性的值会使 URLhttp://mysite.com/form.php?q=userEnteredTexthttp://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;
}
}

此外,在 .htaccess 中编写 mod_rewrite 代码以使用关键字“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 回答