简体   繁体   中英

Redirect to another page after submitting a form?

I'm trying to redirect users to another page after a form has been submitted. The form works great. If forces users to input the required fields, and is not submitted unless each of these fields are complete. It then submits the form and refreshes. But I would like to redirect users to another page instead of simply refreshing the page.

My php code is below!

<?php

$recipients = 'dre@myemail.com';
//$recipients = '#';

try {
require './phpmailer/PHPMailerAutoload.php';

preg_match_all("/([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]   {2,6}(?:\.[a-z]{2})?)/", $recipients, $addresses, PREG_OFFSET_CAPTURE);

if (!count($addresses[0])) {
    die('MF001');
}

if (preg_match('/^(127\.|192\.168\.)/', $_SERVER['REMOTE_ADDR'])) {
    die('MF002');
}

$template = file_get_contents('rd-mailform1.tpl');

if (isset($_POST['form-type'])) {
    switch ($_POST['form-type']){
        case 'registration':
            $subject = 'New Registration';
            break;
        case 'subscribe':
            $subject = 'Subscribe request';
            break;
        case 'order':
            $subject = 'Order request';
            break;
        default:
            $subject = 'A message from your site visitor';
            break;
    }
}else{
    die('MF004');
}

if (isset($_POST['email'])) {
    $template = str_replace(
        ["<!-- #{FromState} -->", "<!-- #{FromEmail} -->"],
        ["Email:", $_POST['email']],
        $template);
}else{
    die('MF003');
}

if (isset($_POST['message'])) {
    $template = str_replace(
        ["<!-- #{MessageState} -->", "<!-- #{MessageDescription} -->"],
        ["Message:", $_POST['message']],
        $template);
}

preg_match("/(<!-- #{BeginInfo} -->)(.|\n)+(<!-- #{EndInfo} -->)/", $template, $tmp, PREG_OFFSET_CAPTURE);
foreach ($_POST as $key => $value) {
    if ($key != "email" && $key != "message" && $key != "form-type" && !empty($value)){
        $info = str_replace(
            ["<!-- #{BeginInfo} -->", "<!-- #{InfoState} -->", "<!-- #{InfoDescription} -->"],
            ["", ucfirst($key) . ':', $value],
            $tmp[0][0]);

        $template = str_replace("<!-- #{EndInfo} -->", $info, $template);
    }
}

$template = str_replace(
    ["<!-- #{Subject} -->", "<!-- #{SiteName} -->"],
    [$subject, $_SERVER['SERVER_NAME']],
    $template);

$mail = new PHPMailer();
$mail->From = $_SERVER['SERVER_ADDR'];
$mail->FromName = $_SERVER['SERVER_NAME'];

foreach ($addresses[0] as $key => $value) {
    $mail->addAddress($value[0]);
}

$mail->CharSet = 'utf-8';
$mail->Subject = $subject;
$mail->MsgHTML($template);

if (isset($_FILES['attachment'])) {
    foreach ($_FILES['attachment']['error'] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $mail->AddAttachment($_FILES['attachment']['tmp_name'][$key],    $_FILES['Attachment']['name'][$key]);
        }
    }
}

$mail->send();

die('MF000');
} catch (phpmailerException $e) {
die('MF254');
} catch (Exception $e) {
die('MF255');
}

?>

You could use header to redirect the page. Where ever you determine that the form's action was successfully executed, add this:

header('Location: path/to/your/file.php');  //Could also be an external or internal URL

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM