Skocz do zawartości
Zaloguj się, aby obserwować  
ziele029

Contact Form Ajax i jQuery.post() - HTML

Polecane posty

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 smile.png

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Z całym szacunkiem, ale ten kod, to jakaś masakra tongue.png 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 przez Tajgeer (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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 przez ziele029 (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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 przez Tajgeer (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×