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

Posted

技术标签:

【中文标题】php,提交后使用同一页面的表单【英文标题】:php, form using the same page after submittion 【发布时间】:2013-02-14 08:18:42 【问题描述】:

我想知道最简单的方法是什么让我们说一个带有用户/密码的表单并使用 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";
        
    
    ?>

【问题讨论】:

什么是“想要的结果”? 发布您的代码的一些尝试。我们会努力解决这个问题... 设置表单动作为"" html-form-guide.com/php-form/php-form-action-self.html 【参考方案1】:

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

【讨论】:

【参考方案2】:

这段代码会帮助你

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

或者你可以这样做:

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

谢谢……

【讨论】:

【参考方案3】:

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

<?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】:
 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

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

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

【讨论】:

您能否提供更多信息,为什么这是一个有效的答案? 这正是您制作表单的方式。【参考方案5】:

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

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

$_SERVER['PHP_SELF']

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

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

【讨论】:

这与问题完全无关,不是吗? @Apostolos 这和他的用例很相关,不是吗?【参考方案6】:
<?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"]))

【讨论】:

【参考方案7】:

使用下面的语法

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

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

【讨论】:

不符合 w3c 标准!元素“表单”上的属性“操作”的错误值“”:必须为非空。【参考方案8】:

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

<form method=get action=index.php >

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

【讨论】:

【参考方案9】:

如果当前页面是index.php,则使用form标签中的index.php作为action的值。

像这样:

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

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

if(isset($_POST))
...

在页面顶部

【讨论】:

将操作设置为 PHP_filename(例如 index.php)当然不用说,所以它不会改变任何东西。

以上是关于php,提交后使用同一页面的表单的主要内容,如果未能解决你的问题,请参考以下文章

表单提交后如何在同一个html页面上回显?

表单提交后,没有页面跳转

在同一页面上显示提交的表单响应。 (没有重装)

将表单数据提交到另一个 php 页面,但将结果显示回提交表单的同一页面?

如何避免在php表单提交中重新加载页面

从同一文件中的 HTML 表单调用 PHP 函数