Перенаправление после завершения действия формы - PullRequest
0 голосов
/ 21 февраля 2012

Я использую следующий код для действия формы,

// 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 ]

2 голосов
/ 21 февраля 2012

Когда данные действительны, добавьте:

header('Location: http://www.example.com/thanks.php');
1 голос
/ 21 февраля 2012

Не можете ли вы опубликовать его прямо в thanks.php?

Thanks.php должен управлять форматом данных и отображать сообщение или перенаправлять (поместив в заголовок строку: header('Location: urlOfForm-postedPage);.

Итак, если данные верны (и если необходим элемент управления, но я полагаю, да), вам не нужно перенаправление.

Более того, если управление выполнено на исходной странице (просто JS или JQuery?), Вы можете сохранить некоторые перенаправления. И это будет более эффективным!

0 голосов
/ 21 февраля 2012

или javascript:

?>

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

<?php
0 голосов
/ 21 февраля 2012

Если все идет хорошо, вы можете использовать php header, чтобы перейти на нужную страницу:

header( 'Location: thanks.php' );
...