如何从HTML表单运行PHP函数?

时间:2011-05-11 17:36:21

标签: php forms function action

我是网络技术的绝对初学者。我知道我的问题很简单,但我不知道怎么做。 例如,我有一个功能:

function addNumbers($firstNumber, $secondNumber)
{
    echo $firstNumber + $secondNumber;
}

我有一张表格:

<form action="" method="post">
<p>1-st number: <input type="text" name="number1" /></p>
<p>2-nd number: <input type="text" name="number2" /></p>
<p><input type="submit"/></p>

如何在我的文本字段中输入变量并通过按下按钮并使用我写入文本字段的参数来调用我的函数? 例如,我写了5 - 第一个文本字段,10秒文本字段,然后我点击按钮,我在同一页面上得到结果15。 的 EDITED 我试过这样做:

$num1 = $POST['number1'];
$num2 = $POST['number2'];
addNumbers($num1, $num2);

但它不起作用,答案总是为0。

6 个答案:

答案 0 :(得分:18)

您拥有的“功能”是服务器端。服务器端代码在之前和之后将数据返回到您的浏览器(通常显示为页面,但也可以是ajax request)。

您拥有的表单是客户端。此表单由您的浏览器呈现,并未与您的服务器“连接”,但可以 submit data to the server for processing

因此,要运行该功能,必须执行以下流程:

  1. 服务器输出带有表单的页面。不需要进行服务器端处理。
  2. 浏览器加载该页面并显示表单。
  3. 用户将数据输入表格
  4. 用户按下提交按钮,使用数据向您的服务器发送HTTP request
  5. 处理请求的页面(可能与第一个请求相同)从请求中获取数据,运行您的函数,并将结果输出到HTML页面。
  6. 以下是一个示例PHP脚本示例:

    <?php
    
    function addNumbers($firstNumber, $secondNumber) {
        return $firstNumber + $secondNumber;
    }
    
    if (isset($_POST['number1']) && isset($_POST['number2'])) {
        $result = addNumbers(intval($_POST['number1']), intval($_POST['number2']));
    }
    ?>
    <html>
    <body>
    
        <?php if (isset($result)) { ?>
            <h1> Result: <?php echo $result ?></h1>
        <?php } ?>
        <form action="" method="post">
        <p>1-st number: <input type="text" name="number1" /></p>
        <p>2-nd number: <input type="text" name="number2" /></p>
        <p><input type="submit"/></p>
    
    </body>
    </html>
    

    请注意:

    • 即使这些“页面”包含PHP和HTML代码,您的浏览器也不会知道PHP代码是什么。它看到的只是产生的HTML输出。 <?php ... ?>内的所有内容都由服务器执行 (在这种情况下,echo创建此执行的唯一输出),而PHP标记之外的所有内容 - 特别是HTML代码 - 直接输出到HTTP响应。
    • 您会注意到<h1>Result:... HTML代码里面是一个PHP if语句。这意味着第一遍不会输出此行,因为没有$result
    • 由于表单action没有值,因此表单会提交到浏览器已经存在的同一页面(URL)。

答案 1 :(得分:4)

您需要从$_POST变量中收集值并将它们传递给函数。

if ($_POST) {
  $number_1 = (int) $_POST['number1'];
  $number_2 = (int) $_POST['number2'];
  echo addNumbers($number_1, $number_2);
}

但请注意,您不应该信任用户输入,因此需要验证和清理您的输入。

答案 2 :(得分:4)

试试这个。

  <?php 
            function addNumbers($firstNumber, $secondNumber)
            {
            if (isset($_POST['number1']) && isset($_POST['number2']))
            {
                $firstNumber = $_POST['number1'];
                $secondNumber = $_POST['number2'];
                $result = $firstNumber + $secondNumber;
                    echo $result;
            }

            }
    ?>

            <form action="urphpfilename.php" method="post">
            <p>1-st number: <input type="text" name="number1" /></p>
            <p>2-nd number: <input type="text" name="number2" /></p>
            <?php addNumbers($firstNumber, $secondNumber);?>
            <p><?php echo $result; ?></p>
            <p><input type="submit"/></p>

答案 3 :(得分:1)

变量将在$ _POST变量中。

要将其解析为您需要执行此操作的功能:

addNumbers($_POST['number1'],$_POST['number2']);

请务必检查输入,用户可以在其中添加所需内容。例如,使用is_numeric()函数

$number1 = is_numeric($_POST['number1']) ? $_POST['number1'] : 0;

另外,不要在函数内部回显,最好将其返回:

function addNumbers($firstNumber, $secondNumber)
{
    return $firstNumber + $secondNumber;
}

// check if $_POST is set
if (isset($_POST['number1']) && isset($_POST['number2']))
{
    $number1 = is_numeric($_POST['number1']) ? $_POST['number1'] : 0;
    $number2 = is_numeric($_POST['number2']) ? $_POST['number2'] : 0;

    echo addNumbers($_POST['number1'],$_POST['number2']);
}

答案 4 :(得分:1)

您缺少

中的下划线
$_POST['number1']

就是这样。

答案 5 :(得分:0)

也许有点晚了 但您可以在php文件的网址中设置一个参数来发布示例:

在html中:

params

在php中:

...
<form action="Controllers/set_data.php?post=login" method="post" >
...