【问题标题】:Set Call to PHP Function, with POST Variables as Parameters, as HTML Form Action设置调用 PHP 函数,使用 POST 变量作为参数,作为 HTML 表单操作
【发布时间】:2012-04-08 18:06:12
【问题描述】:

我目前有一个 HTML 文件,其中包含一个表单,当提交 POST 表单并调用一个简单的短 PHP 文件,该文件使用 POST 变量作为参数调用另一个 PHP 文件中的函数。文件都在下面。我想知道我是否可以以某种方式跳过中间人 PHP 文件,而只需从我的 HTML 文件中调用该函数。 理想情况下,这会将调用设置为函数:

insert_PE(new PE($_POST[Date],$_POST[Participant],$_POST[Time],$_POST[Result],$_POST[Notes]));

作为表单动作。有谁知道如何/是否可以实现?

HTML:

<FORM ID="FORM1" METHOD="POST" AUTOCOMPLETE="off" ACTION = "writeToDL.php">
    <INPUT TYPE="hidden" NAME="Date" STYLE="WIDTH:0px; " MAXLENGTH="8" TITLE="Enter Date" Value="<?php $dt = date('Y-m-d'); echo $dt ?>"/>
    <INPUT TYPE="text" NAME="Time" STYLE="WIDTH:70px; " MAXLENGTH="7" ONCHANGE="validateTime();" />
    <SELECT NAME = "Result">
        <OPTION VALUE = OK></OPTION>
        <OPTION VALUE = C>C</OPTION>
    </SELECT>
    <SELECT NAME = "Participant" STYLE = "WIDTH: 187">
        <OPTION SELECTED VALUE = "">Select...</OPTION>
            <?PHP
                $allParticipants = getall_participants();
                foreach($allParticipants as &$value) {
                    $val = $value->get_id();
                    echo "<OPTION VALUE='",$val,"'>";
                    echo $value->get_first_name()," ",$value->get_last_name();
                    echo "</OPTION>";
                }
            ?>
    </SELECT>
    <TEXTAREA NAME='Notes' COLS='28' ROWS='5'></TEXTAREA>
    <INPUT TYPE="image" SRC = "images/submit.png" VALUE="Submit Participant"/>
</FORM>

PHP 文件:

<?php
    include_once('database/PE.php');
    insert_PE(new PE($_POST[Date],$_POST[Participant],$_POST[Time],$_POST[Result],$_POST[Notes]));
?>

【问题讨论】:

  • 您好,1990 年打来电话并希望将他们的大写 HTML 返回...不,您不能跳过 PHP。 HTML 纯粹是客户端的东西,不能以任何方式/形状/形式与数据库对话。这就是 PHP 存在的原因。
  • 为什么不把 HTML 做成 PHP 文件,如果设置了 POST 变量就调用 insert 方法。
  • @MarcB 我并不是说我想完全摆脱 PHP,而是小的 3 行 PHP 文件......似乎我可以将它与现有的 HTML 文件(这实际上是一个 .php,虽然我主要使用 HTML)。抱歉,我是 HTML 的初学者,这样 HTML 标记对我来说很显眼……但实际上并没有什么不同。不像客户会看到它。
  • 开个玩笑,我同意@MarcB - 标准化许多方法很有用,特别是如果其他人将使用您的代码(现在或将来)。我应该认为,小写字母已经成为十年的常态。同样使用引号而不是撇号来表示属性(尽管我相信撇号仍然构成有效的 (X)HTML)。
  • 好点。我会考虑到这一点。至于撇号,我尽量只在有 PHP 代码时使用它们,因为 PHP 对撇号和引号非常挑剔(你不能做“”“”,但 '“”' 或“''”)。

标签: php html database forms function


【解决方案1】:

你可以这样做:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    include_once('database/PE.php');
    insert_PE(new PE($_POST['Date'],$_POST['Participant'],$_POST['Time'],$_POST['Result'],$_POST['Notes']));
} ?>
<html>
... rest of your page here ...
</html>

这样,PHP 代码只有在实际执行 POST 时才会触发。有些人会建议检查表单字段是否存在,但这是不可靠的——您可能会在以后更改表单并忘记更新if()。检查请求方法保证100%可靠。

【讨论】:

    【解决方案2】:

    我想知道我是否可以以某种方式跳过中间人 PHP 文件,而只需从我的 HTML 文件中调用该函数。

    没有。客户端只知道 URI。

    URI 可以映射到 PHP 程序。多个 URI 可以映射到同一个 PHP 程序。您可以使用逻辑来确定对给定 URI 运行哪些函数。您无法避免在您的程序中使用该逻辑。

    【讨论】:

      【解决方案3】:

      一种选择是把method="_the_main_php_file_containing_function_to_be_called_"
      我希望它工作正常。

      【讨论】:

      • 然后尝试在主 php 文件本身中进行调用。如果你无法做到这一点,那么我认为你不能跳过这个中间文件
      【解决方案4】:

      我认为您可以在表单上使用隐藏字段,并使用要在“destination.php”上运行的函数的名称填充它。然后“destination.php”上的 switch 语句可以从 POST 变量中提取函数的名称。

      【讨论】:

      • 请展示你的答案。
      猜你喜欢
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      • 2011-04-29
      • 2021-12-01
      • 1970-01-01
      • 2016-05-01
      • 2013-11-30
      • 1970-01-01
      相关资源
      最近更新 更多