【问题标题】:PHP form not passing values on POSTPHP表单没有在POST上传递值
【发布时间】:2015-06-04 22:11:17
【问题描述】:

我有以下 html 表单,当用户单击提交时,它会触发 contactengine.php 中的 php 代码,但我收到的电子邮件和生成的 .txt 表单中缺少这些值。

<!------------------from start------------>
  <form method="POST" action="contactengine.php" class="form-inline" >
      <div class="form-group">

       <label>Full Name*</label><br>
        <input name="full_name" type="text" class="form-control" placeholder="Full Name" id="full_name"   required>
        </div>
        <div class="form-group">
        <label>Telephone *</label><br>
        <input name="contact_tel" type="text" class="form-control"  placeholder="Telephone" id="contact_tel" required>
      </div>
<div class="form-group">
        <label>Email *</label><br>
        <input name="contact_email" type="email" class="form-control"   placeholder="Email Address" id="contact_email" required>
      </div>

      <div class="form-group">
        <label>Subject of Enquiry *</label><br>
      <select name="sub_enquiry" class="form-control"  id="sub_enquiry">
            <option value="Assesments" >Assesments</option><option value="Services" >Services</option>
                <option value="Inpections" >Inpections</option>
                <option value="Other" >Other</option>         
      </select>
      </div><br> <br>   
 <label>Your message *</label><br>
      <textarea name="contact_msg" class="form-control" rows="5" id="contact_msg" required  ></textarea> <br >
      <br >
     <button type="submit" class="btn btn-purple"  ><span class="glyphicon glyphicon-envelope"></span> Submit</button>
    </form>

<!----------------------php form------------------>
<?php
$to = "xxxx@gmail.com";
$Subject = "OFSUK.ORG";
$full_name = $_POST['full_name']; 
$contact_email = $_POST['contact_email']; 
$contact_tel = $_POST['contact_tel'];
$sub_enquiry = $_POST['sub_enquiry'];
$contact_msg = $_POST['contact_msg']; 

// validation
$validationOK=true;
if (!$validationOK) {
  header("location:/error.php");
  exit;
}

// prepare email body text
$Body = "";
$Body .= "\n";
$Body .= "Name: ";
$Body .= $full_name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $contact_email;
$Body .= "\n";
$Body .= "Telephone: ";
$Body .= $contact_tel;
$Body .= "\n";
$Body .= "Enquiry: ";
$Body .= $sub_enquiry;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $contact_msg;
$Body .= "\n";

// send email 
$success = mail($to, $Subject, $Body);
$email_from = $full_name.'<'.$email_from.'>';

$myfile = fopen("emails.txt", "a") or die("Unable to open file!");
$txt = $Body;
fwrite($myfile, "\n". $txt);
fclose($myfile);

// redirect to success page 
if ($success){
  header("location:/");
}
else{
 header("location:/contact-us.php");
}

?>

这两个存储在两个位置,但工作正常,只是没有得到任何数据。

【问题讨论】:

  • 尽量不要以大写字符开头变量名。只是更好的编码实践。
  • 请首先执行var_dump($_POST);,以确保您的帖子变量达到PHP。
  • 另外请注意,您需要过滤和清理用户输入,否则您的表单很快就会被垃圾邮件发送者利用。
  • 在使用$full_name = var_dump($_POST['full_name']); $contact_email = var_dump($_POST['contact_email']); $contact_tel = var_dump($_POST['contact_tel']); $sub_enquiry = var_dump($_POST['sub_enquiry']); $contact_msg = var_dump($_POST['contact_msg']);后仍然得到空值
  • 不,@MarkusAO 是说在您的电子邮件处理页面顶部执行var_dump($_POST); 以查看$_POST 是否具有值。

标签: php html twitter-bootstrap phpmailer


【解决方案1】:

更改&lt;button type="submit" class="btn-purple"/&gt;

&lt;input type="submit" name="sbmt" class="btn-purple"/&gt;

然后验证是否设置了sbmt,如果设置了则打印出值

【讨论】:

  • 我是 php 的新手,我一直在使用旧代码,我将如何使用 phpmail 方式进行处理。
【解决方案2】:

尝试使用

pg_escape_string

喜欢...

pg_escape_string($_POST['full_name']);

...修复数据传递问题。

【讨论】:

  • pg_escape_string() - "pg_escape_string() 转义字符串以查询数据库。" - 注意: - 此函数需要 PostgreSQL 7.2 或更高版本。 - 这与 db 无关,所以他们为什么要使用它?
  • 因为当 'var_dump($_POST);'没有在我的脚本中返回任何帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 2016-09-10
相关资源
最近更新 更多