Php 从联系人表单和$POST电子邮件中的复选框中获取值
我的问题是:我试图从复选框中获取值,并通过电子邮件发送它们。现在我得到的只是“无”这个词。在stackoverflow上尝试了许多不同的答案,但到目前为止没有一个有效Php 从联系人表单和$POST电子邮件中的复选框中获取值,php,html,forms,post,Php,Html,Forms,Post,我的问题是:我试图从复选框中获取值,并通过电子邮件发送它们。现在我得到的只是“无”这个词。在stackoverflow上尝试了许多不同的答案,但到目前为止没有一个有效 <?php if($_POST) { $to_Email = "myemail@test.test"; //Replace with recipient email address $subject = 'Poruka'; //Subject line for emails
<?php
if($_POST)
{
$to_Email = "myemail@test.test"; //Replace with recipient email address
$subject = 'Poruka'; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
$user_Docs = 'None';
if(isset($_POST['dokument']) && is_array($_POST['dokument']) && count($_POST['dokument']) > 0){
$user_Docs = implode('|', $_POST['dokument']);
}
//check $_POST vars are set, exit if any missing
//if(!isset($_POST["name"]) || !isset($_POST["email"]) || !isset($_POST["telefon"]) || !isset($_POST["objekt"]))
//{
//$output = json_encode(array('type'=>'error', 'text' => 'Input fields are empty!'));
//die($output);
//}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
$user_Phone = filter_var($_POST["telefon"], FILTER_SANITIZE_STRING);
$user_Obj = filter_var($_POST["obj"], FILTER_SANITIZE_STRING);
$user_Kva = filter_var($_POST["kva"], FILTER_SANITIZE_STRING);
$user_Izg = filter_var($_POST["god_izg"], FILTER_SANITIZE_STRING);
$user_Ces = filter_var($_POST["kat_ces"], FILTER_SANITIZE_STRING);
$user_Opc = filter_var($_POST["kat_opc"], FILTER_SANITIZE_STRING);
$user_Nam = filter_var($_POST["nam"], FILTER_SANITIZE_STRING);
$user_Nap = filter_var($_POST["nap"], FILTER_SANITIZE_STRING);
//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Name is too short or empty!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!'));
die($output);
}
if(!is_numeric($user_Phone)) //check entered data is numbers
{
$output = json_encode(array('type'=>'error', 'text' => 'Only numbers allowed in phone field'));
die($output);
}
if(strlen($user_Obj)<3) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Too short obj! Please enter something.'));
die($output);
}
if(!is_numeric($user_Kva)<0) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Too short kva! Please enter something.'));
die($output);
}
if(!is_numeric($user_Izg)<0) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Too short izg! Please enter something.'));
die($output);
}
if(strlen($user_Ces)<0) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Too short ces! Please enter something.'));
die($output);
}
if(strlen($user_Opc)<0) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Too short opc! Please enter something.'));
die($output);
}
if(strlen($user_Nam)<0) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Too short nam! Please enter something.'));
die($output);
}
/* if(strlen($user_Nap)<0) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Too short nap! Please enter something.'));
die($output);
} */
// Construct email body
$body_message = 'Od: ' . $user_Name . "\r\n";
$body_message .= 'E-mail: ' . $user_Email . "\r\n";
$body_message .= 'Telefon: ' . $user_Phone . "\r\n";
$body_message .= 'Nov: ' . $user_Ob . "\r\n";
$body_message .= 'Kva: ' . $user_Kva . "\r\n";
$body_message .= 'God: ' . $user_Izg . "\r\n";
$body_message .= 'Kat. čes: ' . $user_Ces . "\r\n";
$body_message .= 'Kat. opć: ' . $user_Opc . "\r\n";
$body_message .= 'Nam: ' . $user_Nam . "\r\n";
$body_message .= 'Nap: ' . $user_Nap . "\r\n";
$body_message .= 'Dodatno: ' . $user_Docs . "\r\n";
//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$sentMail = @mail($to_Email, $subject, $body_message .' -'.$user_Name, $headers);
if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_Name .' Thank you for your email'));
die($output);
}
}
?>
HTML复选框输入包含许多用户在stackoverflow上使用的括号
<label>
<input type="checkbox" value="Tlocrt objekta" name="dokument[]" > Tlocrt objekta </input>
</label>
<label>
<input type="checkbox" value="Građevinska dozvola" name="dokument[]" > Građevinska dozvola </input>
</label>
<label>
<input type="checkbox" value="Glavni projekt" name="dokument[]" > Glavni projekt </input>
</label>
<label>
<input type="checkbox" value="Izvedbeni projekt" name="dokument[]" > Izvedbeni projekt </input>
</label>
<label>
<input type="checkbox" value="Elaborat legalizacije" name="dokument[]" > Elaborat legalizacije </input>
</label>
<label>
<input type="checkbox" value="Elaborat etažiranja" name="dokument[]" > Elaborat etažiranja </input>
</label>
<label>
<input type="checkbox" value="Projekt preuređenja" name="dokument[]" > Projekt preuređenja </input>
</label>
<label>
<input type="checkbox" value="Završno izvješće nadzornog inženjera" name="dokument[]" > Završno izvješće nadzornog inženjera </input>
<script type="text/javascript">
$(document).ready(function() {
$("#submit_btn").click(function() {
//get input field values
var user_Name = $('input[name=name]').val();
var user_Email = $('input[name=email]').val();
var user_Phone = $('input[name=telefon]').val();
var user_Objekt = $('input[name=objekt]').val();
var user_Kvadratura = $('input[name=kvadratura]').val();
var user_Izgradnja = $('input[name=god_izgradnje]').val();
var user_Cestica = $('input[name=kat_cestica]').val();
var user_Opcina = $('input[name=kat_opcina]').val();
var user_Namjena = $('input[name=namjena]').val();
var user_Napomena = $('textarea[name=napomena]').val();
var user_Docs = $("input:checkbox[name=dokument]:checked");
//simple validation at client's end
//we simply change border color to red if empty field using .css()
var proceed = true;
if(user_Name==""){
$('input[name=name]').css('border-color','red');
proceed = false;
}
if(user_Email==""){
$('input[name=email]').css('border-color','red');
proceed = false;
}
if(user_Phone=="") {
$('input[name=telefon]').css('border-color','red');
proceed = false;
}
if(user_Objekt=="") {
$('input[name=objekt]').css('border-color','red');
proceed = false;
}
if(user_Kvadratura=="") {
$('input[name=kvadratura]').css('border-color','red');
proceed = false;
}
if(user_Izgradnja=="") {
$('input[name=god_izgradnje]').css('border-color','red');
proceed = false;
}
if(user_Cestica=="") {
$('input[name=kat_cestica]').css('border-color','red');
proceed = false;
}
if(user_Opcina=="") {
$('input[name=kat_opcina]').css('border-color','red');
proceed = false;
}
if(user_Namjena=="") {
$('input[name=namjena]').css('border-color','red');
proceed = false;
}
/* if(user_Napomena=="") {
$('texarea[name=napomena]').css('border-color','red');
proceed = false;
} */
//everything looks good! proceed...
if(proceed)
{
//data to be sent to server
post_data = {'name':user_Name, 'email':user_Email, 'telefon':user_Phone, 'objekt':user_Objekt, 'kvadratura':user_Kvadratura, 'god_izgradnje':user_Izgradnja, 'kat_cestica':user_Cestica, 'kat_opcina':user_Opcina, 'namjena':user_Namjena, 'napomena':user_Napomena};
//Ajax post data to server
$.post('contact_me.php', post_data, function(response){
//load json data from server and output message
if(response.type == 'error')
{
output = '<div class="error">'+response.text+'</div>';
}else{
output = '<div class="success">'+response.text+'</div>';
//reset values in all input fields
$('#contact_form input').val('');
$('#contact_form textarea').val('');
}
$("#result").hide().html(output).slideDown();
}, 'json');
}
});
//reset previously set border colors and hide all message on .keyup()
$("#contact_form input, #contact_form textarea").keyup(function() {
$("#contact_form input, #contact_form textarea").css('border-color','');
$("#result").slideUp();
});
});
</script>
我最终需要的是收到一封包含复选框中的值的电子邮件。到目前为止还没有。其他一切都在形式上起作用。感谢所有回复尝试序列化您的表单数据,而不是以这种方式将其浓缩 因此,您的post_数据应该如下所示:
post_data = $('form#yourForm').serialize();
虽然您创建了变量,但似乎并没有在javascript中发送用户文档:
//data to be sent to server
post_data = {
'name':user_Name,
'email':user_Email,
'telefon':user_Phone,
'objekt':user_Objekt,
'kvadratura':user_Kvadratura,
'god_izgradnje':user_Izgradnja,
'kat_cestica':user_Cestica,
'kat_opcina':user_Opcina,
'namjena':user_Namjena,
'napomena':user_Napomena
};
// where is user_Docs??
正如另一个答案所指出的,您应该尝试使用JQuery序列化表单内容。删除您自己的json代码,改用:
post_data = $('form #form_id').serialize();
然后,在PHP脚本中,您应该使用表单中使用的名称获取$\u请求数组中的所有内容。答案是序列化[link] 这意味着替换这部分代码 //要发送到服务器的数据 post_data={'name':user_name,'email':user_email,'telefon':user_Phone,'objekt':user_objekt,'kvadratura':user_kvadratura,'god_izgradnje':user_Izgradnja,'kat_cestica':user_cestica,'kat_opcina':user_opcina,'namjena':user_namjena,'napomena,'napomena,'napomena':user_napomena,'dokument[]:user_Docs} 用这个 post_数据=$'formyourForm'。序列化;
不完全是这样。我更改了ID并放入了我自己的表单ID,实际上是字段集ID不知道你所说的var\u dump你的$\u POST是什么意思。也许我不应该说我是一个初学者,我没有一个表单,我在PHP中有一个put var\u dump$\u POST来查看发布了哪些变量。根据标准,只是把它放在后面,字段集应该是表单的一部分。所以你应该把你的字段集放在表单中。当然还没有准备好使用序列化,因为我不知道序列化后下一步该怎么做。现在我非常困惑,因为我认为这是传递值时的一个错误,现在我需要更改我所知甚少的部分代码。非常感谢你们。当你们这么说的时候,我开始考虑代码的这一部分var user_Docs=$input:checkbox[name=dokument]:checked;这篇文章的数据是:{'name':user'u name,'email':user'u email,'telefon':user'u Phone,'objekt':user'u objekt,'kvadratura':user'u kvadratura,'god'izgradnje':user'u Izgradnja,'kat_cestica':user_cestica,'kat_opcina':user'opcina,'namjena':user_namjena,'napomena':user'napomena};当你这么说的时候,我开始考虑代码var user_Docs=$input:checkbox[name=dokument]:checked;我甚至不确定我是否在$user\u文档中获得了一个数组,以便发送到任何地方