2013-05-01 3 views
0

Я видел еще одну тему, относящуюся к этому, но все еще был немного confuseded, так как я все еще основной на PHP. Поэтому у меня есть форма, которая отправляется на мой Order.php. Это отправляет электронное письмо и отлично работает. Я бы хотел, чтобы форма отправила на Review.php, а затем отправила. Ниже мой Order.PHP (я удалил некоторые из полей ввода из массива с его довольно долгого). Я думал о файле review.php. Я могу просто использовать весь код order.php, но вместо $send = mail($to, $subject, $body, $headers); Я мог бы просто запросить $to, $subject, $body, $headers в некотором html, тогда у вас есть кнопка sumbit, которая отправит их в order.php, который будет упрощен, так как все данные обрабатываются на странице обзора. Правильно ли это звучит?php form review перед электронной почтой

order.php выглядит следующим образом

<?php 

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 

$to = "[email protected]"; 
$name = $_REQUEST['FitterName'] ; 
$from = $_REQUEST['FitterEmail'] ; 
$headers = "From: $from"; 
$subject = "Online Order"; 
$name2 = $_REQUEST['CustomerEmail'] ; 

$grind = join(", ", $_REQUEST["grind"]); 
$woods = join(", ", $_REQUEST["woods"]); 
$hybrids = join(", ", $_REQUEST["hybrids"]); 
$iron = join(", ", $_REQUEST["iron"]); 
$wedges = join(", ", $_REQUEST["wedges"]); 

$fields = array(); 
$fields{"AccountName"} = "Accounts's Name: "; 
$fields{"FitterName"} = "Fitter's Name: "; 
$fields{"CustomerCat"} = "__________________________CUSTOMER INFO__________________________"; 
$fields{"CustomerName"} = "Customer's Name: "; 
$fields{"CustomerPhone"} = "Customer's Phone: "; 
$fields{"CustomerAddress"} = "Customer's Address: "; 



$body = "We have received the following Online Order from www.mycompany.com:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%2s %s\n",$b,$_REQUEST[$a]); } 
$body2 = "Please Review the following Online Order from www.mycompany.com:\n\n"; foreach($fields as $a => $b){  $body2 .= sprintf("%2s %s\n",$b,$_REQUEST[$a]); } 




$headers2 = "From: [email protected]"; 
$subject2 = "Thank you for your order"; 
$autoreply = "Thank you for your order. Customer service will call in the next 24 hours to review your order."; 

$autoreply2 = "Company Customer"; 

if($from == '') {print "You have not entered an email, please go back and try again";} 
else { 
if($name == '') {print "You have not entered a name, please go back and try again";} 
else { 
$send = mail($to, $subject, $body, $headers); 
$send2 = mail($from, $subject2, $autoreply, $headers2); 
$send3 = mail($name2, $subject2, $autoreply2, $headers2); 
if($send) 
{header("Location: http://fitter.henry-griffitts.com/fitter/success.php");} 
else 
{print "We encountered an error sending your mail, please review your information"; } 
} 
} 
?> 

ответ

0

Да.

Вы можете представить пользователю страницу с обзором и скрыть на этой странице информацию, которую они поставили на странице заказа.

Просмотреть страницу Подтвердить разметку кнопки;

<form name="review" action="order.php" method="POST"> 
    <input type="hidden" name="FitterName" value="Bob Smith"> 
    <input type="hidden" name="FitterEmail" value="[email protected]"> 
    <input type="submit" value="Submit"> 
</form> 

Если нажать кнопку отправки на странице обзора их информации заказа. будет перенаправлен на страницу order.php.

+0

Итак, на этом я бы все мои поля из исходного HTML-формы скрытой и завернутые в ''

, чтобы представить к следующему процессу. Как я могу отобразить данные из $ body на review.php, чтобы они могли проверять данные до их отправки? Спасибо – Packy

+0

Вы можете показать свои данные для просмотра, помещая их где-то еще на странице 'review.php' вне формы. Например. . 'Эхо"

Name:{$_REQUEST['FitterName']}
' –

+0

Спасибо, я в конечном итоге использовала оба ваших парней решений – Packy

0

Вот очень простой пример того, как может выглядеть ваш файл review.php. Он добавляет каждое из полей в виде скрытых входных переменных в форме.

<p>Does everything look correct?</p> 
<form method="post" action="order.php"> 
    <ul> 
    <?php 
     if (is_array($_REQUEST)) { 
      foreach ($_REQUEST as $key => $val) { 
       echo "<li><strong>" . $key . "</strong>: " . $val . "</li>"; 

       // This code should support the checkboxes and multiple selects 
       if (is_array($val)) { 
        foreach ($val as $val2) { 
         echo "<input type='hidden' name='" . $key . "[]' value='" . $val2 . "' />"; 
        } 
       } 
       else { 
        echo "<input type='hidden' name='" . $key . "' value='" . $val . "' />"; 
       } 
      } 
     } 
    ?> 
    </ul> 
    <input type="submit" value="Submit Info" /> 
</form> 

Теперь на вашем order.php, очистите его и немного упростите, просто потому, что.

<?php 
    //define some fields 
    define("HEADERS", "MIME-Version: 1.0\r\nContent-type:text/html;charset=iso-8859-1\r\nFrom: [email protected]\r\n"); 
    define("BODY_1", "We have received the following Online Order from www.mycompany.com:"); 
    define("BODY_2", "Please Review the following Online Order from www.mycompany.com:"); 
    define("SUBJECT_1", "Online Order"); 
    define("SUBJECT_2", "Thank you for your order"); 
    define("MY_EMAIL", "[email protected]"); 
    define("REPLY",  "Thank you for your order. Customer service will call in the next 24 hours to review your order.") 

    //sanitize your inputs. I like to remove every character that is not allowed 
    $data = array(
     'name' => preg_replace('/[^A-Za-z\\s]/', '', $_POST['FitterName']), 
     'email' => preg_replace('/[^A-Za-z0-9\\[email protected]_]/', '', $_POST['CustomerEmail']), 
     'fitter' => preg_replace('/[^A-Za-z0-9\\[email protected]_]/', '', $_POST['FitterEmail']), 
     'grind' => preg_replace('/[^A-Za-z\\s,]/', '', implode(',', $_POST['grind'])), 
     //the rest of your fields 
    ); 

    //do your field checks here, exit out or return them to the form 

    //send your emails 
    $send = mail(MY_EMAIL, SUBJECT_1, BODY_1 . print_r($data, true), HEADERS); 
    $send2 = mail($data['fitter'], SUBJECT_2, BODY_2 . print_r($data, true), HEADERS); 
    $send3 = mail($data['email'], SUBJECT_2, REPLY, HEADERS); 

    //more code and redirect 
+0

Спасибо, что работали удивительно, я только что 2 вопроса @jon_o:.. [ул] -это там способ опубликовать только те данные, которые заполнены информацией, а не перечислять все? - некоторые данные, которые я называю так: V-молотилки \t \t \t \t \t <входного типа = имя "флажок" = "размолоть [тур молотилка]" класс = "перемалывает" значение = "Grind тура"> тур Grind' [/ UL ] \t \t \t \t \t Поэтому я могу назвать несколько флажков. Когда я тестировал эти данные, они выглядели как «клины: массив» на review.php. Как я могу это исправить? Еще раз спасибо !! – Packy

+0

@Packy, я обновил код выше, чтобы показать, как вы можете переписать те поля, которые являются массивами как скрытые входы. ** В качестве альтернативы ** вы можете просто проверить, является ли поле массивом, как у меня в образце кода, но затем просто вдувается в строку типа «echo» "; ", а затем вы просто обновите свой заказ.php, чтобы принять поле как строку вместо массива. Имеет ли это смысл? –

+0

@jon_o, Спасибо за это. Но он по-прежнему отображает значение как «массив», например «grinds: array». Я пробовал верхний код и менял его, как вы сказали выше, на строку. – Packy

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