提交按钮是执行php文件的唯一方法吗


Is the submit button the only way to execute a php file?

假设您希望创建一个HTML.php脚本,该脚本生成一个包含2个按钮的网页,当单击时,这些按钮会告诉您单击了哪个按钮。据我所知,使用php实现这一点的唯一方法是创建索引文件

<? include('buttons.php'); ?>
<? include('clicked.php'); ?>

其中button.php保存在同一目录中并包含

<form method="post">
<input type="submit" name="button1" value="button1">
<input type="submit" name="button2" value="button2">
</form>

点击php脚本。php包含

<?php

if($_POST['button1']){
echo "You have clicked button1";
}

elseif($_POST['button2']){
echo "You have clicked button2";
}
?>

这个方法是有效的,但我怀疑这不是使用php获得这个结果的最佳方式。

有更好的方法吗?

这是一个执行PHP文件的服务器端解决方案,但是,您可以使用客户端代码和用于实时执行和页面加载的通用处理程序来实现这一点。

jQuery是一个免费的、在世界范围内使用的JavaScript扩展框架,并且易于使用。

$("#btn-one").click(function() {
    $.get("clicked.php", { button: 1})
    .done(function (data) {
        body.innerHTML = data;
    });
});

您的PHP(点击.PHP)将如下所示:

if(isset($_GET['button'])):
    switch($_GET['button'])
    {
        case 1:
            echo "You pressed button 1";
            break;
        case 2:
            echo "You pressed button 2";
            break;
        default:
            break;
    }
endif;

最后,你的HTML会是这样的!

<button type="button" id="btn-one">Button 1</button>

您可以创建自己的包装

class Input
{
    public static function fetch($key, $rules=[])
    {
        // ctype_alnum is used to check if the $key is alphanumeric
        if (ctype_alnum($key) && isset($_POST[$key])) {
            return $_POST[$key];
        }
        return false; // or ''
    }
}
// practical use
// If string
$option = (string) Input::fetch('option');

将名称更改为按钮[]

然后使用开关功能。

您可以使用rules参数添加验证规则并检查预期的响应类型。