在Wordpress页面上执行PHP表单


execute PHP form on Wordpress page

请原谅我的英语 - 我创建了一个_POST表单,用户可以在其中填写两个数字字段,然后将其乘除一些常量以在提交表单时输出结果。我在同一页面上使用 ($_SERVER["PHP_SELF"](;该代码非常基本,可以在我测试它的服务器上工作(如果需要,可以复制和粘贴(。

现在我想在 Wordpress 页面上使用这个小"计算器"(我正在运行 Avada 主题(,但我完全不知道如何替换 ($_SERVER["PHP_SELF"](。

我试过:- 复制并粘贴整个代码片段,因为它位于融合生成器的代码块中> 我收到错误- 将变量和计算存储在要调用的单独.php文件中 - 硬编码或使用 bloginfo(( 函数- 创建一个嵌入代码的新模板页面

。但是当我提交表单时,我只会被重定向到额外的 php 文件或主页。

我是否试图做一些完全错误的事情?

非常感谢任何帮助,因为我真的不明白这是如何工作的......

非常感谢!

最好在函数中编写 php 代码.php并创建该短代码并在页面中使用该短代码。例:

add_shortcode( 'multiple_enquiry_form', 'enquiry_form' );
function enquiry_form(){
    if ( is_user_logged_in() ) { 
        if(isset($_POST['enquiry_form_submit'])){   
    } ?>    
    <div class="col-md-4">
        <form method="post" name="enquiry_form" action='<?php echo get_permalink( get_page_by_path( 'enquiry' ) ); ?>'> 
            <div class="form-group">
            <label for="">Project</label>
            <select id='proGroup' name="proGroupForm">
            <option value="">- Select Project -</option>                
            </select>
            </div>
            <div class="form-group">
            <label for="">Message</label>
            <textarea name="enq_message"></textarea>
            </div>
            <div class="form-group">
            <label for="">Contact</label>   
            <input type="text" name="contactNumber" placeholder="Contact Number"> 
            </div>
            <div class="form-group">
            <label for="">From</label>  
            <input type="text" name="from_date" class="datepicker" placeholder="From Date"> 
            </div>
            <div class="form-group">
            <label for="">To</label>    
            <input type="text" name="to_date" class="datepicker" placeholder="To Date"> 
            </div>
            <div class="form-group">
            <input type="submit" name="enquiry_form_submit" value="Send" ng-click="submitted=true">
            </div>
        </form>
    </div>
    <?php }
}

我刚刚在WordPress页面模板上对此进行了测试。

确保它没有放在循环中!

我进行了一个简单的计算,当您提交数字输入时,结果会得到回显 - 这显然可以在它周围放置一个跨度或任何它需要的东西。计算可以包含您想要的任何内容。

您还应该能够include计算表:

include "calculations.php";

以下是围绕使用includes http://green-beast.com/blog/?p=144 的一些安全注意事项

PHP_SELF转到索引.php因为这是主模板。

如果要将其用于操作以使其完全以编程方式工作,则需要使用 <?php echo $_SERVER['REQUEST_URI']; ?>,但硬编码的 URL 应该有效(虽然不是最佳实践,REQUEST_URI确实有效(。

如果你使用它,你需要使用内置的WordPress转义来URI来清理它,因为你将"得到"其中的任何内容。

      <form name="form" action ="<?php echo  esc_url($_SERVER['REQUEST_URI']); ?>" method="post">

这有效地为您提供:

      <form name="form" action ="http://the full url of the page this script is on/" method="post">
      <input type="number" name="number_in">
      <input type="submit" name="submit">
      </form>
      <?php $result = (int) $_POST['number_in'] * 4; 
      echo $result;
      ?>

如果您希望它连续添加到每个表单提交的结果中,您可能需要使用隐藏的输入或会话变量获得一些琐碎 - 您可以使用:

    $_SESSION['number_in'] = $_SESSION['number_in'] + $result;
    echo $_SESSION['number_in'];

以保持累积结果的运行记录,因为会话在WordPress上已经处于活动状态。

使用 (int( 执行类型转换 - 如果你知道它将是一个整数 - 否则浮点应该这样做。这应该避免进一步清理输入的需要。 可能是 php.net http://php.net/manual/en/language.types.integer.php 的方便参考

这解释了隐藏输入的基本用法。

重复从文本区域获取和回显输入

原则上,您可以将操作留空,它会action=""提交给自己,但这里有一个很好的讨论,说明为什么这样做可能不是一个好主意。虽然它会起作用,但它会让您面临劫持和注入攻击。stackoverflow.com/questions/1131781/

虽然你可以在WordPress中运行php代码,但你是否应该是一个完全不同的讨论......

希望我理解你正确。

您不能在 Wordpress 帖子或页面中运行 PHP。它不是那样构建的。

在您的functions.php内创建一个简码。这允许您从帖子和页面中调用函数。你可能已经见过它们。看起来像[gallery limit="5"]http://www.smashingmagazine.com/2012/05/wordpress-shortcodes-complete-guide/

如果你真的想在你的页面中运行PHP。查看 https://wordpress.org/plugins/insert-php/