请原谅我的英语 - 我创建了一个_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/