[英]Ajax contact form issue with string
我一直在嘗試用PHP設置一個簡單的聯系表單,但是它不起作用,我使用了本教程,並且在第一次嘗試時就起作用了,但是當我嘗試對其進行自定義並添加一些字段時,它失敗了。 當我發送數據時,我認為介於Ajax和PHP之間,但老實說我不知道。
這是我正在使用的代碼:
HTML
<form id="formulariocontacto">
<fieldset>
<input type="text" id="name" name="name" class="input-block-level" placeholder="Name">
<input type="text" id="telefono" name="telefono" class="input-block-level" placeholder="Phone">
<input type="text" id="email" name="email" class="input-block-level" placeholder="Email">
<input type="text" id="direccion" name="direccion" class="input-block-level" placeholder="Adress">
<textarea rows="14" id="comentario" name="comentario" class="input-block-level" placeholder="Comments"></textarea>
<button type="submit" class="botonform" class="btn btn-warning pull-right">SEND</button>
</fieldset>
</form>
jQuery
$("#formulariocontacto").submit(function(e){
e.preventDefault();
var nombre = $("#name").val();
var telefono = $("#telefono").val();
var email = $("#email").val();
var direccion = $("#direccion").val();
var comentario = $("#comentario").val();
var dataString = 'nombre=' + nombre + '&email=' + email + '&comentario=' + comentario + '&telefono' + telefono + '&direccion' + direccion;
function isValidEmail(emailAddress) {
var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
return pattern.test(emailAddress);
};
if (isValidEmail(email) && (comentario.length > 100) && (nombre.length > 1)){
$.ajax({
type: "POST",
url: "procesar.php",
data: dataString,
success: function(){
$('.exito').fadeIn(1000);
}
});
} else{
$('.error').fadeIn(1000);
}
return false;
});
PHP
<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['nombre']) && isset($_POST['comentario']) ) {
$name_field=$_POST['nombre'];
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$telefono_field=$_POST['telefono'];
$direccion_field=$_POST['direccion'];
$mensaje_field=$_POST['comentario'];
$subject=.$_POST['nombre']" Vía mysite.com";
$mensaje="Nombre: $name_field\n Email: $email_field\n Teléfono: $telefono_field\n Dirección: $direccion_field\n Mensaje:\n $mensaje_field";
// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}
//send email
mail( "mymail@mysite.com", $subject, $mensaje, "From: " . $email );
}
?>
我試圖通過添加一些額外的字段來使消息更完整,您可以在PHP中看到變量“ $ mensaje”
在不知道您遇到什么錯誤或什么不起作用的情況下,我只能假設您沒有收到所有正在提交的數據?
如果是這樣,那是因為您沒有在dataString中傳遞它。
var nombre = $("#name").val();
var telefono = $("#telefono").val();
var email = $("#email").val();
var direccion = $("#direccion").val();
var comentario = $("#comentario").val();
var dataString = 'nombre=' + nombre + '&email=' + email + '&comentario=' + comentario + '&telefono=' + telefono + '&direccion=' + direccion;
要清理電子郵件輸入,請執行以下操作:
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
然后,您的郵件功能可以是:
mail("mymail@mail.com",$subject,$mensaje,"From:" . $email);
您的ajax調用應為:
if (isValidEmail(email) && (comentario.length > 100) && (nombre.length > 1)){
e.preventDefault();
$.ajax({
type: "POST",
url: "procesar.php",
data: dataString,
success: function(){
$('.exito').fadeIn(1000);
},
error: function(){
$('.error').fadeIn(1000);
}
});
}
$subject=.$_POST['nombre']" Vía mysite.com";
應該
$subject=$_POST['nombre']." Vía mysite.com";
這就是產生500內部服務器錯誤的原因
你忘了平等。
改變這個
var dataString = 'nombre=' + nombre + '&email=' + email + '&comentario=' + comentario + '&telefono' + telefono + '&direccion' + direccion;
至
var dataString = 'nombre=' + nombre + '&email=' + email + '&comentario=' + comentario + '&telefono=' + telefono + '&direccion=' + direccion;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.