将表单操作设置为外部php文件中的函数

Sha*_*e.C 6 html php forms

我是PHP的新手(有点),我已经浏览了一下,找不到任何可以满足我的问题的信息,所以这里是;

假设我声明了一个表单,包含2个字段和一个提交按钮;

<form name = "tryLogin" action = "logIn()" method = "post">
            Username: <input type = "text" name = "username" placeholder = "username.."><br>
            Password: <input type = "text" name = "password" placeholder = "password.."><br>
            <input type = "submit" value = "Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到我试图将动作设置为函数"logIn()",我已经将其包含在此文件的标题中.

在外部php文件中,我有以下内容;

function logIn()
{
if($_POST['username'] == "shane" && $_POST['password'] == "shane")
{
    $_SESSION['loggedIn'] = '1';
    $_SESSION['user'] = $_POST['username'];
}

header ("Location: /index.php");
}

function logOut()
{
$_SESSION['loggedIn'] = '0';
header ("Location: /index.php");
}
Run Code Online (Sandbox Code Playgroud)

(忽略任何"你不应该这样做,那样做",我只是在这里画一幅画).

所以基本上我希望表单提交给特定功能,这可能吗?我在这里做了一些根本错误的事吗?

Lev*_*evi 5

就像其他人所说的那样,您不能自动将帖子定向到函数,但是可以动态决定在PHP方面做什么,具体取决于使用PHP代码提交的表单。一种方法是使用隐藏的输入定义逻辑,以便您可以在同一页面上处理不同的操作,如下所示:

<form name="tryLogin" action="index.php" method="post">
            <input type="hidden" name="action" value="login" />
            Username: <input type="text" name="username" placeholder="username.."><br />
            Password: <input type="text" name="password" placeholder="password.."><br />
            <input type="submit" value="Submit">
</form>

<form name="otherform" action="index.php" method="post">
            <input type="hidden" name="action" value="otheraction" />
            Type something: <input type="text" name="something"><br />
            <input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

然后在您的PHP中:

if (isset($_POST['action'])) {
    switch($_POST['action']) {
    case 'login':
        login();
        break;
    case 'otheraction':
        dosomethingelse();
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)