通过PHP重定向到URL

时间:2013-05-19 02:01:18

标签: php

我在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=textUserEnteredhttp://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添加到action属性的值会使网址http://mysite.com/form.php?q=userEnteredText不是http://mysite.com/form?q=userEnteredText

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:2)

您只是错过了文件名中的.php ...

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