ziele029 3 Zgłoś post Napisano Lipiec 9, 2012 Witam, mam mały problem z formularzem kontaktowym na stronie - [LINK] (strona w okresie testowania). Formularz korzysta z wysyłania wiadomości metodą Ajax i jQuery.post() . Po wypełnieniu wszystkich pól i wysłaniu wiadomości na stronie wyświetla się komunikat "Wiadomość została wysłana, dziękujemy!", ale wiadomości nie dochodzą na porządny adres e-mail ... Czego może być to przyczyna ? Na maszynie na której stoi strona PHP jest w wersji: 5.3.3-7+squeeze13, więc wymóg skryptu jest spełniony ... Skrypt: <?php /* Spark – Simple and Effective Rev. 6 */ // Replace the email address with the one that should receive the contact form inquiries. define('TO_EMAIL', 'spontansquad@gmail.com'); // === You don't need to change anything else. === $aErrors = array(); $aResults = array(); /* Functions */ function stripslashes_if_required($sContent) { if(get_magic_quotes_gpc()) { return stripslashes($sContent); } else { return $sContent; } } function get_current_url_path() { $sPageUrl = "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; $count = strlen(basename($sPageUrl)); $sPagePath = substr($sPageUrl,0, -$count); return $sPagePath; } function output($aErrors = array(), $aResults = array()){ // Output JSON $bFormSent = empty($aErrors) ? true : false; $aCombinedData = array( 'bFormSent' => $bFormSent, 'aErrors' => $aErrors, 'aResults' => $aResults ); header('Content-type: application/json'); echo json_encode($aCombinedData); exit; } // Check supported version of PHP if (version_compare(PHP_VERSION, '5.2.0', '<')) { // PHP 5.2 is required for the safety filters used in this script $aErrors[] = 'Unsupported PHP version. <br /><em>Minimum requirement is 5.2.<br />Your version is '. PHP_VERSION .'.</em>'; output($aErrors); } if (!empty($_POST)) { // Form posted? // Get a safe-sanitized version of the posted data $sFromEmail = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $sFromName = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW); $sMessage = stripslashes_if_required($_POST['message']); $sMessage .= "\r\n--\r\nEmail sent from ". get_current_url_path(); $sHeaders = "From: '$sFromName' <$sFromEmail>"."\r\n"; $sHeaders .= "Reply-To: '$sFromName' <$sFromEmail>"; if (filter_var($sFromEmail, FILTER_VALIDATE_EMAIL)) { // Valid email format? $bMailSent = mail(TO_EMAIL, "New inquiry from $sFromName", $sMessage, $sHeaders); if ($bMailSent) { $aResults[] = "Wiadomość została wysłana, dziękujemy!"; } else { $aErrors[] = "Wiadomość nie została wysłana, proszę spróbować ponownie później."; } } else { $aErrors[] = 'Invalid email address.'; } } else { // Nothing posted $aErrors[] = 'Empty data submited.'; } output($aErrors, $aResults); Z Góry Dzięki za Pomoc Udostępnij ten post Link to postu Udostępnij na innych stronach
Tajgeer 19 Zgłoś post Napisano Lipiec 9, 2012 (edytowany) Z całym szacunkiem, ale ten kod, to jakaś masakra Nie ulega jednak wątpliwości, że jeśli pojawia się potwierdzenie, to warunek jest spełniony. Daj na początku: error_reporting(E_ALL); ini_set('display_errors', 1); Zobacz, czy nie ma błędów. Edytowano Lipiec 9, 2012 przez Tajgeer (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
ziele029 3 Zgłoś post Napisano Lipiec 9, 2012 (edytowany) Dodałem i nic nie pokazuje ..., ciągle komunikat "Wiadomość została wysłana, dziękujemy!", ale gdy próbujesz podejrzeć plik ajax.php pojawai się: {"bFormSent":false,"aErrors":["Empty data submited."],"aResults":[]} a w demie tego samego pliku wyświetla się: {"bFormSent":true,"aErrors":[],"aResults":["Message sent, thank you!"]} Edytowano Lipiec 9, 2012 przez ziele029 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Tajgeer 19 Zgłoś post Napisano Lipiec 9, 2012 (edytowany) To normalne, że pojawia się coś innego - nie przesłałeś po prostu formularza do pliku za pomocą AJAX, stąd pokazuje, że brak danych. Spróbuj zamienić powyższy skrypt na coś prostego, np: <?php $email = 'spontansquad@gmail.com'; $name = addslashes($_POST['name']); $subject = 'Nowa wiadomość z '.$name; $from = $_POST['email']; $message = $_POST['message']; $headers = "From: $name <$from>\r\n"; $headers .= "Reply-To: $name <$from>"; if (filter_var($from, FILTER_VALIDATE_EMAIL)) { if (mail($email, $subject, $message, $headers)) { echo 'Wiadomość została wysłana!'; } else { echo 'Nie wysłano!'; } } ?> Odbierz wynik za pomocą callbacka metody .post(): <script> jQuery.post('skrypt.php', $('#formularz').serialize(), function (data) { alert(data); } </script> Edytowano Lipiec 9, 2012 przez Tajgeer (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach