Wątek przeniesiony 2017-01-05 18:08 z Webmastering przez dzek69.

Formularz kontaktowy php

0

Mam taki formularz kontaktowy wszystko w jednym pliku. Mam jednak pytanie jak zrobić aby komunikat o powodzeniu echo $responseArray['message'] przenieść do kodu HTML. Teraz zawsze komunikat będzie się pokazywał nad formularzem, a chcę go umieścić we właściwym miejscu strony tam gdzie chciałbym aby się wyświetlał więc muszę umieć poprawnie przenieść to do właściwego miejsca w kodzie w HTMLu.

<?php
if(isset($_POST['submit'])) {
$from = htmlspecialchars(trim($_POST['email']));
$sendTo = '[email protected]';
$subject = htmlspecialchars(trim($_POST['temat']));
$fields = array('name' => 'Name', 'surname' => 'Surname', 'phone' => 'Phone', 'email' => 'Email', 'country' => 'Country', 'message' => 'Message'); // array variable name => Text to appear in email
$okMessage = 'Gracjasz poszło!';
$errorMessage = 'nie udało się wysłać';
try
{
    $emailText = "Wiadomość ze strony \n=============================\n";
    foreach ($_POST as $key => $value) {
        if (isset($fields[$key])) {
            $emailText .= "$fields[$key]: $value\n";
        }
    }
    mail($sendTo, $subject, $emailText, "From: " . $from);
    $responseArray = array('type' => 'success', 'message' => $okMessage);
}
catch (\Exception $e)
{
    $responseArray = array('type' => 'danger', 'message' => $errorMessage);
}
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    $encoded = json_encode($responseArray); 
    header('Content-Type: application/json');
    echo $encoded;
}
else {
    echo $responseArray['message'];
}
} 
?>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Temat: <input type="text" name="temat"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

p.s. pytanie jeszcze jak wyśle się wiadomość to formularz staje się czysty, ale jak ktoś w pasku przeglądarki weźmie na przycisk odśwież F5 to ponownie wysyła maila czy jest sposób na wyeliminowanie tego? Chociaż nie jest to w sumie u mnie ważne ale pytam jako ciekawostka.

0

Nie teraz za dużo zabawy potrzebuję na testy prosty formularz, a potem jak coś będzie się poprawiać na razie aby działało i to co mam jest chyba OK nie widzę tu błędów, tylko nie wiem jak poprawnie przenieść tą zmienną do kodu HTML tzn. jak ją dam jako pusta $responseArray['message']; to będzie walić błędami, że nie została zmienna zdefiniowana więc nie mam pomysłu a już dawno php się nie zajmowałem więc nie pamiętam wielu rzeczy.

0
<?php if(isset($_POST['submit'])) { $from = htmlspecialchars(trim($_POST['email'])); $sendTo = '[email protected]'; $subject = htmlspecialchars(trim($_POST['temat'])); $fields = array('name' => 'Name', 'surname' => 'Surname', 'phone' => 'Phone', 'email' => 'Email', 'country' => 'Country', 'message' => 'Message'); // array variable name => Text to appear in email $okMessage = 'Gracjasz poszło!'; $errorMessage = 'nie udało się wysłać'; try { $emailText = "Wiadomość ze strony \n=============================\n"; foreach ($_POST as $key => $value) { if (isset($fields[$key])) { $emailText .= "$fields[$key]: $value\n"; } } mail($sendTo, $subject, $emailText, "From: " . $from); $responseArray = array('type' => 'success', 'message' => $okMessage); } catch (\Exception $e) { $responseArray = array('type' => 'danger', 'message' => $errorMessage); } if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { $encoded = json_encode($responseArray); header('Content-Type: application/json'); echo $encoded; } else { $responseArray['message'] if($isset[$responseArray['message']]) { <form action="" method="post"> First Name: <input type="text" name="first_name">
Last Name: <input type="text" name="last_name">
Email: <input type="text" name="email">
Temat: <input type="text" name="temat">
Message:
<textarea rows="5" name="message" cols="30"></textarea>
<input type="submit" name="submit" value="Submit"> </form> //umieszczasz w formularzu gdzie chcesz echo $responseArray['message']; }else { <form action="" method="post"> First Name: <input type="text" name="first_name">
Last Name: <input type="text" name="last_name">
Email: <input type="text" name="email">
Temat: <input type="text" name="temat">
Message:
<textarea rows="5" name="message" cols="30"></textarea>
<input type="submit" name="submit" value="Submit"> </form> } } ?>

Powielanie kodu, wbrew zasadom dobrego programowania, ale to chyba jeden z prostszych sposobów.

0
if(isset($_POST['submit'])) {
$from = htmlspecialchars(trim($_POST['email']));
$sendTo = '[email protected]';
$subject = htmlspecialchars(trim($_POST['temat']));
$fields = array('name' => 'Name', 'surname' => 'Surname', 'phone' => 'Phone', 'email' => 'Email', 'country' => 'Country', 'message' => 'Message'); // array variable name => Text to appear in email
$okMessage = 'Gracjasz poszło!';
$errorMessage = 'nie udało się wysłać';
try
{
$emailText = "Wiadomość ze strony \n=============================\n";
foreach ($_POST as $key => $value) {
if (isset($fields[$key])) {
$emailText .= "$fields[$key]: $value\n";
}
}
mail($sendTo, $subject, $emailText, "From: " . $from);
$responseArray = array('type' => 'success', 'message' => $okMessage);
}
catch (\Exception $e)
{
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
}
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$encoded = json_encode($responseArray);
header('Content-Type: application/json');
echo $encoded;
}
else {
$responseArray['message']
if($isset[$responseArray['message']])
{

<form action="" method="post"> First Name: <input type="text" name="first_name">
Last Name: <input type="text" name="last_name">
Email: <input type="text" name="email">
Temat: <input type="text" name="temat">
Message:
<textarea rows="5" name="message" cols="30"></textarea>
<input type="submit" name="submit" value="Submit"> </form>
//umieszczasz w formularzu gdzie chcesz
echo $responseArray['message'];
}else
{

<form action="" method="post"> First Name: <input type="text" name="first_name">
Last Name: <input type="text" name="last_name">
Email: <input type="text" name="email">
Temat: <input type="text" name="temat">
Message:
<textarea rows="5" name="message" cols="30"></textarea>
<input type="submit" name="submit" value="Submit"> </form>
}
}
?>



<?php

Powielanie kodu, wbrew zasadom dobrego programowania, ale to chyba jeden z prostszych sposobów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1