在表单提交时调用特定的 PHP 函数

46
我试图在表单的提交中调用特定的PHP函数,而且表单和PHP脚本都在同一页上。以下是我的代码。(它没有起作用,所以我需要帮助)
<html>
    <body>
    <form method="post" action="display()">
        <input type="text" name="studentname">
        <input type="submit" value="click">
    </form>
    <?php
        function display()
        {
            echo "hello".$_POST["studentname"];
        }
    ?>
    </body>
</html>
8个回答

80
在下面这行代码中:
<form method="post" action="display()">

动作应该是您的脚本名称,并且您应该调用函数,类似于以下内容:

<form method="post" action="yourFileName.php">
    <input type="text" name="studentname">
    <input type="submit" value="click" name="submit"> <!-- assign a name for the button -->
</form>

<?php
function display()
{
    echo "hello ".$_POST["studentname"];
}
if(isset($_POST['submit']))
{
   display();
} 
?>

错误:服务器上未找到请求的URL /path/to/update()。 - Madan Bhandari
@MadanBhandari 不要在表单的方法中写函数的名称。 - Siraj Alam
如果您在操作中编写函数名称,它会查找根目录中的该函数,并不会进入if(isset)语句。请删除函数名称。 - Salman Mushtaq
1
@SalmanMushtaq,你有仔细阅读答案吗?函数名并未执行,<form method="post" action="yourFileName.php"> - The Alpha

10

你不需要这段代码

<?php
function display()
{
echo "hello".$_POST["studentname"];
}
?>

相反,您可以使用 isset 检查提交表单时的 post 变量,以此来检查表单是否已提交。

这里是代码

if(isset($_POST)){
echo "hello ".$_POST['studentname'];
}

点击这里查看isset函数的PHP手册。


1
这会不会在刷新页面时执行该函数?虽然这种情况并不危险,但我正在进行保存功能。 - Tyrannogina
当刷新时,这将回显空值,最好使用isset($ _POST ['submit'])。 - lisandro

6

假设你的脚本名为x.php,请尝试以下代码:

<?php 
   function display($s) {
      echo $s;
   }
?>
<html>
    <body>
        <form method="post" action="x.php">
            <input type="text" name="studentname">
            <input type="submit" value="click">
        </form>
        <?php
           if($_SERVER['REQUEST_METHOD']=='POST')
           {
               display();
           } 
        ?>
    </body>
</html>

2

PHP运行在服务器上,您的浏览器是客户端。一旦服务器将所有信息发送给客户端,除非发出另一个请求,否则服务器无法执行任何操作。

如果要在不刷新页面的情况下发出另一个请求,您需要了解ajax。请查看jQuery,因为它使ajax请求变得容易。


0
如果你想在点击提交按钮时调用一个函数,那么你必须使用ajax或jquery。如果你想在表单提交后调用你的php函数,你可以这样做:
<html>
<body>
<form method="post" action="display()">
<input type="text" name="studentname">
<input type="submit" value="click">
</form>
<?php
function display()
{
echo "hello".$_POST["studentname"];
}
if($_SERVER['REQUEST_METHOD']=='POST')
{
       display();
} 
?>
</body>
</html>

0
一个替代方案,也许是一种不太好的过程式编码方法,就是将“函数名”发送到一个脚本中,然后执行该函数。例如,在登录表单中,通常会以按钮或锚点的形式呈现登录、忘记用户名、忘记密码、登录等活动。所有这些都可以定向到/作为,比如说,
weblogin.php?function=login
weblogin.php?function=forgotusername
weblogin.php?function=forgotpassword
weblogin.php?function=signin

接着,在接收页面上进行一个 switch 语句,进行任何必要的准备工作,然后分派或运行指定的(下一个)函数。


0
写下这段代码。
<?php
    if(isset($_POST['submit'])){
        echo 'Hello World';
    } 
?>

<html>
     <body>
         <form method="post">
             <input type="text" name="studentname">
             <input type="submit" name="submit" value="click">
         </form>
     </body>
</html>

0
我使用select和option来完成这个任务。每个option的值包含了一个包含要运行的函数和对该函数的调用的php文件的路径。
function myFunction() {
    do something
}

并且:

myFunction();

对于我在选项中想要的每个功能,我都会创建一个单独的文件,其中包含该功能和对其的调用。
现在我将$_POST['optionvalue']声明为一个变量,我称之为$function
而在页面的某个地方,我有一篇包含以下内容的文章:
if isset($_POST['functions']) {
include $function;
}

而且该函数将在那里执行(就像回显或其他(我展示由函数创建的数组))。

我知道:如果你还有其他人使用它,那么一切都需要进行验证,但我没有,我只在本地主机上使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接