2016-08-18 4 views
-2

после отправки моей формы я получаю почту, но ее выход на белый черный экран с сообщением отправки сообщения.Форма прикрепления PHP после отправки пустой страницы

Я пытаюсь перезагрузить страницу после отправки формы, но получаю ошибку.

<?php 
if ($_SERVER['REQUEST_METHOD'] == "POST") { 

    $to = "[email protected]"; 
    $subject = "E-mail with attachment"; 
    $from = stripslashes($_POST['fromname']) . "<" . stripslashes($_POST['fromemail']) . ">" . "<" . stripslashes($_POST['designation']) . ">"; 

    // generate a random string to be used as the boundary marker 
    $mime_boundary = "==Multipart_Boundary_x" . md5(mt_rand()) . "x"; 

    // now we'll build the message headers 
    $headers = "From: $from\r\n" . 
     "MIME-Version: 1.0\r\n" . 
     "Content-Type: multipart/mixed;\r\n" . 
     " boundary=\"{$mime_boundary}\""; 

    $message = "Canditade Resume"; 
    // when we use it 
    $message = "This is a multi-part message in MIME format.\n\n" . 
     "--{$mime_boundary}\n" . 
     "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
     "Content-Transfer-Encoding: 7bit\n\n" . 
     $message . "\n\n"; 

    // iterating each File type 
    print_r($_FILES); 

    foreach ($_FILES as $userfile) { 

    $tmp_name = $userfile['tmp_name']; 
    $type = $userfile['type']; 
    $name = $userfile['name']; 
    $size = $userfile['size']; 


    if (file_exists($tmp_name)) { 
     if (is_uploaded_file($tmp_name)) { 
     $file = fopen($tmp_name, 'rb'); 
     $data = fread($file, filesize($tmp_name)); 
     fclose($file); 
     $data = chunk_split(base64_encode($data)); 
     } 
     $message .= "--{$mime_boundary}\n" . 
      "Content-Type: {$type};\n" . 
      " name=\"{$name}\"\n" . 
      "Content-Disposition: attachment;\n" . 
      " filename=\"{$tmp_name}\"\n" . 
      "Content-Transfer-Encoding: base64\n\n" . 
      $data . "\n\n"; 
    } 
    } 
    // here's our closing mime boundary that indicates the last of the message 
    $message.="--{$mime_boundary}--\n"; 
    // now we just send the message 
    if (@mail($to, $subject, $message, $headers)) 
    echo "Message Sent"; 
    else 
    echo "Failed to send"; 
} else { 
    ?> 
    <form action="index.php" method="post" enctype="multipart/form-data" name="form1"> 
     <label>Name</label> 
     <input type="text" name="fromname" class="input-block-level" style="width: 100%" required placeholder="Your First Name"> 
     <label>Email Address</label> 
     <input type="text" style="width: 100%" class="input-block-level" required placeholder="Your email address" name="fromemail"> 
     <label>Designation</label> 
     <input type="text" style="width: 100%" class="input-block-level" name="designation" required placeholder="Designation"> 
     <label>Upload Your CV</label> 
     <input type="file" class="input-block-level" required placeholder="Upload Your CV" name="file1"> 
     </div> 
     <input type="submit" name="Submit" value="Submit" class="btn btn-primary btn-large pull-left" onclick="javascript: form.action='index.php';"> 
    </form> 
<?php } ?> 

пожалуйста, помогите мне

+0

Что вы пытаетесь достичь? Какие ошибки вы не ожидаете? – Cagy79

+0

форма работает нормально, после отправки я хочу проверить форму, затем хочу переписать на другую страницу –

+0

Пожалуйста, обновите код в своем вопросе с кодом, который у вас есть сейчас. – Cagy79

ответ

0

дать имя страницы в header location, на который вы хотите перенаправить его.

Изменить

if (@mail($to, $subject, $message, $headers)) 
    echo "Message Sent"; 
    else 
    echo "Failed to send"; 
} else { 

Для

if (@mail($to, $subject, $message, $headers)) 
    header("location:yourpage.php?message=Message Sent"); 
    else 
    header("location:yourpage.php?message=Failed to send"); 
} else { 

yourpage.php

<?php 
if(isset($_GET['message'])){ 
    echo $_GET['message']; 
} 
. 
. 

?> 
0
if (@mail($to, $subject, $message, $headers)) 
    //echo "Message Sent"; 
    header('location:email-success.php'); 
    else 
    //echo "Failed to send"; 
    header('location:email-error.php'); 
} 
+0

все еще получает этот erro –

+0

Array ([file1] => Array ([name] => sendemail.php [type] => application/octet-stream [tmp_name] =>/tmp/phphNCMKH [error] => 0 [размер ] => 801)) –

+0

Это не ошибка, то есть ваша команда print_r 'print_r ($ _ FILES);'! Удалите эту строку, и она будет работать. – Cagy79

0

Ваше кодирование немного перепутались. Вот настройки, которые я сделал:

Я также прокомментировал print_r ($ _ FILES), так как это отобразит массив пройденного, через который вы не хотите отображать, когда пользователь нажимает submit.

Так что я переименован в $ _POST и сделали его IsSet:

<?php 
if (isset($_POST['send'])) { 

    $to = "[email protected]"; 
    $subject = "E-mail with attachment"; 
    $from = stripslashes($_POST['fromname']) . "<" . stripslashes($_POST['fromemail']) . ">" . "<" . stripslashes($_POST['designation']) . ">"; 

    // generate a random string to be used as the boundary marker 
    $mime_boundary = "==Multipart_Boundary_x" . md5(mt_rand()) . "x"; 

    // now we'll build the message headers 
    $headers = "From: $from\r\n" . 
     "MIME-Version: 1.0\r\n" . 
     "Content-Type: multipart/mixed;\r\n" . 
     " boundary=\"{$mime_boundary}\""; 

    $message = "Canditade Resume"; 
    // when we use it 
    $message = "This is a multi-part message in MIME format.\n\n" . 
     "--{$mime_boundary}\n" . 
     "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
     "Content-Transfer-Encoding: 7bit\n\n" . 
     $message . "\n\n"; 

    // iterating each File type 
    //print_r($_FILES); 

    foreach ($_FILES as $userfile) { 

     $tmp_name = $userfile['tmp_name']; 
     $type = $userfile['type']; 
     $name = $userfile['name']; 
     $size = $userfile['size']; 


     if (file_exists($tmp_name)) { 
      if (is_uploaded_file($tmp_name)) { 
       $file = fopen($tmp_name, 'rb'); 
       $data = fread($file, filesize($tmp_name)); 
       fclose($file); 
       $data = chunk_split(base64_encode($data)); 
      } 
      $message .= "--{$mime_boundary}\n" . 
       "Content-Type: {$type};\n" . 
       " name=\"{$name}\"\n" . 
       "Content-Disposition: attachment;\n" . 
       " filename=\"{$tmp_name}\"\n" . 
       "Content-Transfer-Encoding: base64\n\n" . 
       $data . "\n\n"; 
     } 
    } 
    // here's our closing mime boundary that indicates the last of the message 
    $message .= "--{$mime_boundary}--\n"; 
    // now we just send the message 
    if (@mail($to, $subject, $message, $headers)) { 
     echo "Message Sent"; 
    } else { 
     echo "Failed to send"; 
    } 
} 
    ?> 

Не знаю, почему вы обернули PHP вокруг HTML стороне, но это было бы, почему не везут обратно в виде сбоку и просто пустую страницу.

<form action="" method="post" enctype="multipart/form-data" name="form1"> 
     <label>Name</label> 
     <input type="text" name="fromname" class="input-block-level" style="width: 100%" required placeholder="Your First Name"> 
     <label>Email Address</label> 
     <input type="text" style="width: 100%" class="input-block-level" required placeholder="Your email address" name="fromemail"> 
     <label>Designation</label> 
     <input type="text" style="width: 100%" class="input-block-level" name="designation" required placeholder="Designation"> 
     <label>Upload Your CV</label> 
     <input type="file" class="input-block-level" required placeholder="Upload Your CV" name="file1"> 
     </div> 
     <input type="submit" name="send" value="Submit" class="btn btn-primary btn-large pull-left" onclick="javascript: form.action='index.php';"> 
    </form> 

Я тестировал этот код и он перенаправляет обратно в форму с «Сообщение отправлено» над формой (как вы видите на любой контактной формы).

+0

Вы должны действительно добавить условия для каждого поля 'if (! Empty ($ var)) {// сделать что-то}', потому что поля, необходимые для формы, являются легко обойти. – Option

+0

Спасибо за ваш эффект, теперь его переиздание, но файл вложений не доходит до почты –

Смежные вопросы