将页脚联系表单发布到不工作的其他脚本

时间:2012-02-24 21:28:31

标签: wordpress wordpress-plugin

我有两个文件,一个托管我的实际联系表单,然后是一个文件,我将表格发布到。

contactform.php(页脚模板的一部分)

<form id="contact" action="<?php bloginfo('template_url'); ?>/sendmail.php" method="post">    
   <label for="name">Your name: *</label>
   <input type="text" id="nameinput" name="name" value=""/>

   <label for="email">Your email: *</label>
   <input type="text" id="emailinput" name="email" value=""/>

   <label for="comment">Your message: *</label>
   <textarea cols="20" rows="7" id="commentinput" name="comment"> </textarea><br />
</form>

sendmail.php

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

      error_reporting(E_NOTICE);
      function valid_email($str)
      {
        return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
      }

      if($_POST['name']!='' && $_POST['email']!='' && valid_email($_POST['email'])==TRUE && strlen($_POST['comment'])>1)
      {

          $to = preg_replace("([\r\n])", "", hexstr($_POST['receiver']));
          $from = preg_replace("([\r\n])", "", $_POST['email']);
          $subject = "Website contact message from ".$_POST['name'];
          $message = $_POST['comment'];

          $match = "/(bcc:|cc:|content\-type:)/i";
            if (preg_match($match, $to) ||
                preg_match($match, $from) ||
                preg_match($match, $message)) {
              die("Header injection detected.");
            }
          $headers = "From: ".$from."\r\n";
          $headers .= "Reply-to: ".$from."\r\n";

    if(wp_mail($to, $subject, $message, $headers,'',true))
          {
              echo 1; //SUCCESS
          }
          else {
              echo 2; //FAILURE - server failure
          }
      }
      else {
      echo 3; //FAILURE - not valid email

      }
      }else{

         die("Direct access not allowed!");
       }

        function hexstr($hexstr) {
              $hexstr = str_replace(' ', '', $hexstr);
              $hexstr = str_replace('\x', '', $hexstr);
              $retstr = pack('H*', $hexstr);
              return $retstr;
            }

  ?>

问题是这不知道wp_mail函数。我知道我需要包含一些东西,所以wp_mail可用,但我要添加什么?该功能确实存在。包含wp_mail定义文件的问题是在该函数内部需要一些核心php函数(wp_mail被cimy_swift插件覆盖)

1 个答案:

答案 0 :(得分:1)

您好,为什么不尝试将表单提交给基础wpurl?然后在你的header.php文件中复制并粘贴你的代码?

即:使用隐藏字段,您可以检查它是否为帖子,在这种情况下,隐藏字段称为“操作”,其值为“sendemail”。

<强>形式

<form id="contact" action="<?php bloginfo('wpurl'); ?>" method="post"> 
//form stuff
<input type="hidden" name="action" value="sendemail" />
</form>

<强>的header.php 在头文件中,我们进行调用以检查表单是否已发布,

<html>
<head>
<title><?php wp_title();?></title>
<?php 
if( isset($_POST['action']) && ($_POST['action']=='sendemail')  ) {
// run your code

}
?>
</head>

如果您不想沿着那条路走下去,并希望使用您的主题文件夹来保存php脚本,那么该怎么做,请在sendmail.php文件中包含以下内容

define('WP_USE_THEMES', FALSE);
require('../../../wp-blog-header.php');
//above is assuming your file is located in the theme root, not a sub folder.

这将使您可以访问所有wordpress功能和短代码等。等等.. 希望有所帮助...

玛蒂