完成表单操作后重定向

时间:2012-02-20 23:14:38

标签: php forms post redirect http-headers

我正在使用以下代码进行表单操作,

// includes




require_once('inc/mysql_wrapper.php');
$DB=get_db_connection(); 
require_once('inc/defines.inc.php');
require_once('lib/functions.php');
require_once('lib/framework.php');
require_once('lib/specific.php');
require_once('lib/table_editor.php');
require_once('lib/user.php');
require_once('models/basic.php');
require_once('models/list.php');
require_once('swiftmailer/lib/swift_required.php');
require_once('recaptcha/recaptchalib.php');
// end includes

$q="SELECT value FROM $T_SETTINGS
WHERE name='register'";
$register=$DB->oq($q);

$optin=get_setting("optin");

// select custom fields if any
$q="SELECT * FROM $T_FIELDS 
WHERE list_id='$_GET[list_id]'
ORDER BY id";
$efields=$DB->aq($q);

// select mailing list
$q="SELECT * FROM $T_LISTS WHERE id='$_GET[list_id]'";
$list=$DB->sq($q);

if(!empty($_POST['ok']))
{
    // validate recaptcha if required
    if($list['require_recaptcha'])
    {
        $resp = recaptcha_check_answer (RECAPTCHA_PRIVATE,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

        if (!$resp->is_valid) 
        {
            $recaptcha_error="Looks like the words you entered are not correct!";        
            $template="templates/register.html";
            require_once('templates/master.html');
            exit;
        }                        
    }

    User::register($_POST, $efields, $optin);

    if(!empty($list['redirect_to']))
    {
        redirect($list['redirect_to']);
        exit;
    }

    $template="templates/message.html";
}
else
{
    $template="templates/register.html";
}

require_once('templates/master.html');

排除其他一些选项,主要是此表单收到的表单数据

  

姓名,电子邮件,确认(检查提交表格的标志)

如何在提交表单后将此页面重定向到thanks.php?

4 个答案:

答案 0 :(得分:2)

当数据有效时,添加:

header('Location: http://www.example.com/thanks.php');

答案 1 :(得分:1)

你不能直接在thanks.php发表吗?

Thanks.php应该控制数据格式并显示消息,或者重定向(通过放置到标题字符串:header('Location: urlOfForm-postedPage);

因此,如果数据正确(如果需要控件,但我认为是),则不需要重定向。

更重要的是,如果在原始页面中完成控制(简单地使用JS或JQuery?),您可以保存一些重定向。 这样会更有效率!

答案 2 :(得分:0)

如果一切顺利,您可以使用php header到达所需的页面:

header( 'Location: thanks.php' );

答案 3 :(得分:0)

或javascript:

?>

<script type="text/javascript">
window.location = "your>"
</script>

<?php