仅在提交表单时调用PHP函数

时间:2018-05-23 00:43:43

标签: php forms

我首先说:这里不是php后端开发人员。

<form action="" method="POST" id="myForm" autocomplete="off">
    <textarea  name="newContent" class="form-control" rows="10"><?php the_content(); ?></textarea>
    <p class="read-more"><button type="button" class="btn btn-danger">Read More</button></p>
    <input id="update_content" type="submit" value="Update">
    <?php
        $post = array(
            'ID' => $id,
            'post_content' => $_POST['newContent']
        );
        wp_update_post($post, true);
    ?>
</form>

现在它在页面上,因此每次加载时都会运行wp_update_post($post, true);

点击<input id="update_content" type="submit" value="Update">而不是每次加载页面时,最简单的方法是什么?

3 个答案:

答案 0 :(得分:2)

@ bishop的解决方案既快捷又简单,但我想我会加上这个:

$_SERVER['REQUEST_METHOD']

让我们确定请求的方法。

if($_SERVER['REQUEST_METHOD']=="POST")
{
 wp_update_post($post, true); 
}

这可以说是“正确的方法”,即使帖子的身体是空的,也会通过,虽然我们的答案在功能上是相同的

答案 1 :(得分:1)

首先,为您的输入命名:

<input name="submit" value="Update">

然后在你的代码中,假设PHP 7 +:

if ('Update' === ($_POST['submit'] ?? false)) {
    wp_update_post($post, true);
}

工作原理:当您在浏览器中单击“提交”类型的按钮时,浏览器会打包命名的输入元素并通过网络发送它们。 Web服务器解析HTTP消息并将它们发送到PHP,这使它们在名为$_POST的关联数组(也称为字典)中可用。 (或者如果方法是GET,那么$_GET)。然后,您可以检查此数组中的预期键及其值。

顺便说一下,您不需要为按钮命名。你也可以这样做:

if (count($_POST)) {
    ...
}

断言在发布的数据中至少有一个键值对。

您也可以考虑使用var_dump('<pre>', $_POST)作为诊断辅助工具。

最后,我不清楚$id来自哪里,但也需要正确设置。

答案 2 :(得分:0)

试试这个:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Put variables and function here
}