9

我想知道最简单的方法是让我们说一个带有用户/密码的表单并使用 php 提交按钮,但是在提交后它会返回到同一页面而不是转到另一个 php 页面。

我正在考虑 if/else 语句,但在多次尝试后如何设置它但仍然没有得到想要的结果有点困惑

很奇怪,我在发布之前做了你们说的所有事情......但是......>。<“ 让我们说一些像这样简单的事情......

但我也想设置如果没有输入然后点击 sumbit 会有一个错误....应该很容易但我不知道为什么我似乎无法弄清楚

<?php
function userPass()
{
    echo "<form method='post' action=" . $_SERVER['PHP_SELF'] . ">";
    echo "<input type='text' name='user' /><br/>";
    echo "<input type='text' name='pass' /><br/>";
    echo "<input type='submit' value='Login' />";
}
    if(empty($_POST["user"]))
    {
        userPass();
    }
    if(!(empty($_POST["user"])))
    {
        if($_POST["user"] == "comp")
        {
            echo "Welcome comp";
        }
        else
        {
            echo "Wrong user";
        }
    }
    ?>
4

9 回答 9

6

其他答案是正确的;您只需将用户发送回“ action”属性中的当前页面。您可以使用“ isset”进行测试以查看他们是否这样做。

令我惊讶的是尚未提及您的输入没有被清理,并且您正在为灾难做好准备。您的操作属性中存在巨大的注入漏洞:

$_SERVER['PHP_SELF']

如果您不对此进行清理,那么有人可以修改他们看到的 URL,而您可怜的 PHP 脚本将不会比将其作为SELF常量处理更好。

换句话说,您绝对必须使用一个htmlspecialchars()函数来对该参数进行 html 编码。有了这个,你action应该看起来更像htmlspecialchars($_SERVER['PHP_SELF']).

于 2015-12-25T08:50:44.360 回答
4

如果当前页面是 index.php,则在表单标签中使用 index.php 作为操作值。

像这样:

<form action="index.php" method="post">
</form>

你可以通过输入来检查提交的表格:

if(isset($_POST)){
...
}

在页面顶部

于 2013-02-28T08:10:42.763 回答
3

只需使用以下语法

<form method="post" action="">

您可以使用 isset() 方法检查是否设置了 post。

于 2013-02-28T08:13:17.613 回答
1
<?php function userPass() {
    echo "<form method='post' action=" . $_SERVER['PHP_SELF'] . ">";
    echo "<input type='text' name='user' /><br/>";
    echo "<input type='text' name='pass' /><br/>";
    echo "<input type='submit' value='Login' />"; }
    if(empty($_POST["user"]))
    {
        userPass();
    }
   *if(!(empty($_POST["user"])))*
    {
        if($_POST["user"] == "comp")
        {
            echo "Welcome comp";
        }
        else
        {
            echo "Wrong user";
        }
    }
    ?>

这部分代码是错误的,你应该输入: if(!empty($_POST["user"]))

于 2014-11-25T16:04:11.237 回答
1

这是我创建的用于控制学习所需输入字段满足要求的代码。如果是这样,数据将被发送到数据库。如果不符合要求,页面顶部可能会显示一条消息

<?php
if (!isset($_POST['submitform'])) {   
}
else
{
$_SESSION['firstname'] = $_POST['firstname'];
$_SESSION['lastname'] = $_POST['lastname'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['mobile'] = $_POST['mobile'];
$_SESSION['telephone'] = $_POST['telephone'];
$_SESSION['place'] = $_POST['place'];
$_SESSION['street'] = $_POST['street'];
$_SESSION['housenumber'] = $_POST['housenumber'];
$_SESSION['gender'] = $_POST['gender'];

if (empty($_POST['firstname']) or empty($_POST['lastname']) or empty($_POST['email']) or empty($_POST['mobile'])or empty($_POST['telephone']) or empty($_POST['place'])
or empty($_POST['street']) or empty($_POST['housenumber']) or !isset($_POST['gender']))
{
    echo "Sending denied";
}
else
{       
    require 'database.php';

    header('Location: succes.php');
}  ?>

我希望这是对你有用的信息

于 2013-02-28T09:03:16.260 回答
1
 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

这正是您在单击此表单内的提交按钮时使用表单重新加载页面的方式。

附加: 添加required到您想要的所有输入或检查它是否为空。

于 2016-06-05T12:13:22.770 回答
1

这段代码会帮助你

<form action="<?= $_SERVER['REQUEST_URI'] ?>" method="post">

或者你可以这样做:

<form action="" method="post">

谢谢 ....

于 2017-01-04T18:39:30.950 回答
0

您可以在表单提交中定义:

<form method=get action=index.php >

您也可以完全忽略操作,它会自动发布/获取相同的文件。

于 2013-02-28T08:13:02.327 回答
0

我认为所有人都错过了实际问题,即是否有办法在提交表单后留在同一页面。答案是否定的。一旦你提交了一个表单——无论你使用 POST 还是 GET 方法,当然假设你正在使用 $_SERVER['PHP_SELF'] 或空操作等——一个新页面会自动打开。这至少适用于 PHP。(我使用 XAMPP 尝试了很多不同的方法。)我现在不关心其他脚本语言。

于 2017-06-19T06:33:47.003 回答