【问题标题】:php, form using the same page after submittionphp,提交后使用同一页面的表单
【发布时间】: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";
        }
    }
    ?>

【问题讨论】:

标签: php html forms submit


【解决方案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)当然不用说,所以它不会改变任何东西。
            猜你喜欢
            • 2023-03-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-26
            • 1970-01-01
            相关资源
            最近更新 更多