Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как в php форму вставить редирект на страницу "спасибо"!?

Как в php форму вставить редирект на страницу "спасибо"!?


     06.10.2015    Общие вопросы по PHP    813

вопрос
Здравствуйте. Делаю форму на php. Как сюда впихнуть редирект на другую страницу, вместо всплывающего окна???
<?php
if($_POST)
{
    $to_email       = "serg91100@mail.ru"; //Recipient email, Replace with own email here
    //$to_email       = "serg91100@mail.ru"; //Recipient email, Replace with own email here
    //$from_email     = "serg91100@mail.ru"; //From email address (eg: no-reply@YOUR-DOMAIN.com)
    
    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        $output = json_encode(array( //create JSON data
            'type'=>'error',
            'text' => 'Sorry Request must be Ajax POST'
        ));
        die($output); //exit script outputting json data
    }
  
    //Sanitize input data using PHP filter_var().
    $user_name      = filter_var($_POST["user_name"], FILTER_SANITIZE_STRING);
    $user_email     = filter_var($_POST["user_email"], FILTER_SANITIZE_EMAIL);
    $phone_number   = filter_var($_POST["phone_number"], FILTER_SANITIZE_NUMBER_INT);
    $subject        = filter_var($_POST["subject"], FILTER_SANITIZE_STRING);
    $message        = filter_var($_POST["msg"], FILTER_SANITIZE_STRING);
    $order            = filter_var($_POST["order"], FILTER_SANITIZE_STRING);

    //additional php validation
    if(strlen($user_name)<4){ // If length is less than 4 it will output JSON error.
        $output = json_encode(array('type'=>'error', 'text' => 'Name is too short or empty!'));
        die($output);
    }
    if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
        $output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!'));
        die($output);
    }
    if(!filter_var($phone_number, FILTER_SANITIZE_NUMBER_FLOAT)){ //check for valid numbers in phone number field
        $output = json_encode(array('type'=>'error', 'text' => 'Enter only digits in phone number'));
        die($output);
    }
    if(strlen($subject)<3){ //check emtpy subject
        $output = json_encode(array('type'=>'error', 'text' => 'Subject is required'));
        die($output);
    }
    if(strlen($message)<3){ //check emtpy message
        $output = json_encode(array('type'=>'error', 'text' => 'Too short message! Please enter something.'));
        die($output);
    }
  
    $from_email = $user_email;

    //email body
    $message_body = $message."\n\n".$user_name."\nEmail : ".$user_email."\nPhone Number : ". $phone_number."\n\nЗаказ: ". $order;

    ### Attachment Preparation ###
    $file_attached = false;
    if(isset($_FILES['file_attach'])) //check uploaded file
    {
        //get file details we need
        $file_tmp_name       = $_FILES['file_attach']['tmp_name'];
        $file_name           = $_FILES['file_attach']['name'];
        $file_size           = $_FILES['file_attach']['size'];
        $file_type           = $_FILES['file_attach']['type'];
        $file_error       = $_FILES['file_attach']['error'];

        //exit script and output error if we encounter any
        if($file_error>0)
        {
            $mymsg = array(
            1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini",
            2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
            3=>"The uploaded file was only partially uploaded",
            4=>"No file was uploaded",
            6=>"Missing a temporary folder" );
            
            $output = json_encode(array('type'=>'error', 'text' => $mymsg[$file_error]));
            die($output);
        }
        
        //read from the uploaded file & base64_encode content for the mail
        $handle = fopen($file_tmp_name, "r");
        $content = fread($handle, $file_size);
        fclose($handle);
        $encoded_content = chunk_split(base64_encode($content));
        //now we know we have the file for attachment, set $file_attached to true
        $file_attached = true;
    }
    

    if($file_attached) //continue if we have the file
    {
        $boundary = md5("sanwebe");
        
        //header
        $headers = "MIME-Version: 1.0\r\n";
        $headers .= "From:".$from_email."\r\n";
        $headers .= "Reply-To: ".$user_email."" . "\r\n";
        $headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n";

        //plain text
        $body = "--$boundary\r\n";
        //$body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
        $body .= "Content-Type: text/plain; charset=UTF-8\r\n";
        $body .= "Content-Transfer-Encoding: base64\r\n\r\n";
        $body .= chunk_split(base64_encode($message_body));
    
        //attachment
        $body .= "--$boundary\r\n";
        $body .="Content-Type: $file_type; name=\"$file_name\"\r\n";
        $body .="Content-Disposition: attachment; filename=\"$file_name\"\r\n";
        $body .="Content-Transfer-Encoding: base64\r\n";
        $body .="X-Attachment-Id: ".rand(1000,99999)."\r\n\r\n";
        $body .= $encoded_content;

    }else{
        //proceed with PHP email.
        $headers = "From:".$from_email."\r\n".
        'Reply-To: '.$user_email.'' . "\n" .
        'X-Mailer: PHP/' . phpversion();
        $body = $message_body;
    }

    $send_mail = mail($to_email, $subject, $body, $headers);
  

    if(!$send_mail)
    {
        //If mail couldn't be sent output error. Check your PHP email configuration (if it ever happens)
        $output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
        die($output);
    }else{
        $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_name .' Thank you for your email'));
        //$output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_name .' Thank you for your email' . $message."\n\n".$user_name."\nEmail : ".$user_email."\nPhone Number : (".$country_code.") ". $phone_number));
        die($output);
    }
}
?>

Ответа пока нет


Комментарии пользователей (5)

Gameer
226

1124 | 396

Gameer - 6 октября 2015 10:33 - Эксперт

Ага, то есть код не ваш, где-то взяли, а теперь нужно разобраться и изменить в нем, все верно ? И это как бы ваш код, и не знаете как же в своей форме сделать то что хотите. Превосходно.

Истина в противоречии.​

serg91100
3

242 | 37

serg91100 - 6 октября 2015 10:44 - Юзер

Gameer, код не мой (не писал что он мой вообще) - я его подправил как смог. PHP еще изучаю. Поэтому и спросил.

Gameer
226

1124 | 396

Gameer - 6 октября 2015 11:02 - Эксперт

Вместо :
die($output);
поставить это
header( 'Location: /spasibo.html', true, 303 );


Ибо тут никакой модалки нету

Истина в противоречии.​

serg91100
3

242 | 37

serg91100 - 6 октября 2015 11:10 - Юзер

Окно не появляется. Но и редирект не срабатывает.

vitnet
218

2174 | 930

vitnet - 6 октября 2015 17:31 - Эксперт

А откуда ему быть, вы же обращаетесь к этому файлу через AJAX.

У вас ответ приходит в JSON формате, определяйте нужный момент и делайте редирект в JS файле.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы