php联系表格干净的代码

Posted

技术标签:

【中文标题】php联系表格干净的代码【英文标题】:php contact form clean code 【发布时间】:2010-12-26 06:35:20 【问题描述】:

尝试用 php 制作我自己的联系表格。有没有更好/更清洁的方法来解决这个问题?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Contact Form Practice</title>


</head>

<body>


<form method="POST" action="mailer.php">
Name:
<br>
<input type="text" name="name" size="19"><br>
<br>
Your Email Adress:
<br>
<input type="text" name="email" size="19"><br>
<br>
Message:
<br>
<textarea rows="9" name="message" cols="30"></textarea>
<br>
<br>
<input type="submit" value="Submit" name="submit">
</form>



</body>
</html>

----------------php---------------

<?php
if(isset($_POST['submit'])) 

$to = "mail@cheapramen.com";
$subject = "Contact";
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];

$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";

echo "Data has been submitted to $to!";
mail($to, $subject, $body);

 else 

echo "4! OH! 4!";


?>

【问题讨论】:

回显收件人的电子邮件地址或多或少会使联系表的目的无效,不是吗? 哈哈哈真实的数据真实的数据 【参考方案1】:

在问题中,您有 2 个单独的文件处理表单。问题是,如果您遇到验证错误,您别无选择,只能选择糟糕的“请点击返回按钮” 解决方案。

考虑一下这个模板 PHP 文件,它将在一页上处理所有内容,提供数据验证、错误、重新提交和整个 9 码。

<?php

// Read input variables from _POST
$FormAction = (isset($_POST['FormAction']) ? $_POST['FormAction'] : '');
$FirstName = trim(isset($_POST['FirstName']) ? $_POST['FirstName'] : '');
...

// Define script variables
$Errors = array();

// Process input if data was posted.
switch($FormAction)
 
   case 'Process':
      // validation code

      if(empty($FirstName) or strlen($FirstName) > 20)
          $Errors[] = "First name is required.";

      ...

      if(count($Errors) > 0)
         break;

      // Here we have valid data..  Do whatever...


      // Now, redirect somewhere.
      header('Location: http://www.next.com/whatever');
      exit;

 

 ?>
 <html>
    <body>
       <?php if(count($Errors))  ?>
          <div class="Error">
              <?php foreach($Error as $Error)  ?>
                  <div><?php echo htmlspecialchars($Error); ?></div>
              <?php  ?>
          </div>
       <?php  ?>

       <form method="POST" action="<?php echo htmlspecialchars($_SERVER['REQUES_URI'], ENT_QUOTES); ?>" />
           <input type="hidden" name="FormAction" value="Process" />

           First Name: 
           <input type="text" name="FirstName" value="<?php echo htmlspecialchars($FirstName, ENT_QUOTES); ?>" />

           ...

           <input type="submit" />
       </form>

    </body>
 </html>

【讨论】:

【参考方案2】:

我强烈建议您查找一些有关 PHP mail() 劫持的信息,并确保您不会让您的脚本容易受到此类攻击。其他人的建议也很好。

【讨论】:

【参考方案3】:

您绝对想做的一件事是让数据在电子邮件中发送更安全一些。我至少会在输入数据上运行 htmlentities 和 strip_tags,但您绝对应该考虑做进一步的验证。

除了 isset($_POST["SUBMIT"]) 我可能会做类似...

if ($_SERVER["REQUEST_METHOD"] == "POST") 
    // body code here

【讨论】:

这是为了让它更具可读性吗?或者还有其他好处吗?只是好奇。 我发现这样做最好,因为您不必依赖 PHP 知道提交按钮的名称。我猜它更多的是个人喜好。我还与不将名称放在提交按钮上的开发人员合作过。【参考方案4】:

差不多就是这样,也许在成功完成后,您可以将header() 重定向到确认页面,但就处理表单而言,您所拥有的是非常标准的。

此外,您希望将数据清理为接受任何用户输入的标准做法。

您可能需要考虑实施 CAPTCHA 以防止机器人也敲击您的表单。

PHP Captcha

【讨论】:

【参考方案5】:

代码似乎正确,但我强烈建议添加一些数据验证。您需要确保所有必填字段都填写了有效信息。出于安全/可读性目的,请务必对任何 HTML、JS 等进行编码/剥离。

最后,您还应该考虑使用 CAPTCHA 来防范垃圾邮件。我有一个运行类似代码的旧网站,过去每天收到超过 500 封垃圾邮件!

【讨论】:

也许您可以为您的电子邮件提及一些标题

以上是关于php联系表格干净的代码的主要内容,如果未能解决你的问题,请参考以下文章

联系表格问题,PHP/css

php Wordpress:联系表格7,添加表格标签(短代码)当前网址示例

php 联系表格7的代码编辑器(WordPress / CodeMirror)。

如何在wordpress中制作联系表格调用另一个php文件

as3 - 联系表格不起作用

我正在尝试通过联系表格发送电子邮件