php,提交后使用相同页面的表单

时间:2013-02-28 08:08:55

标签: php html forms submit

我想知道最简单的方法是什么,让我们说一个带有用户/传递和提交按钮的表格,但是在你提交之后它回到同一页面而不是去另一个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";
        }
    }
    ?>

9 个答案:

答案 0 :(得分:6)

其他答案是正确的;您只需要将用户重新发送到&#34; action&#34;中的当前页面。属性。您可以使用&#34; isset&#34;。

进行测试,看看他们是否这样做了

我感到惊讶的事情还没有被提及,那就是你的输入没有被消毒,而你正在为灾难做好准备。您的操作属性中的巨大注入漏洞:

$_SERVER['PHP_SELF']

如果您没有对此进行消毒,那么有人可以修改他们看到的网址,而您糟糕的PHP脚本除了将其作为SELF常量进行处理之外,还不知道更好。< / p>

换句话说,你绝对必须使用htmlspecialchars()函数对该参数进行html编码。这样,您的action应该更像htmlspecialchars($_SERVER['PHP_SELF'])

答案 1 :(得分:4)

如果当前页面是index.php,请使用表单标记中的index.php作为操作值。

像这样:

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

你可以通过以下方式检查提交的表格:

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

在页面顶部

答案 2 :(得分:2)

使用以下语法

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

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

答案 3 :(得分: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');
}  ?>

我希望这对您有用的信息

答案 4 :(得分: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 [&#34; user&#34;]))

答案 5 :(得分:1)

 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

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

其他required添加到您想要的所有输入中,或检查它是否为空。

答案 6 :(得分:0)

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

<form method=get action=index.php >

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

答案 7 :(得分:0)

此代码可以帮助您

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

或者你可以这样做:

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

谢谢....

答案 8 :(得分:0)

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