【问题标题】:SQL assigning errors to sessions or variables?SQL将错误分配给会话或变量?
【发布时间】:2012-04-11 03:01:16
【问题描述】:

我已经为网站创建了登录表单和注册表。

该表单已发布到 checklogin.php 和 checksign.php 以进行验证,但是当它发现任何错误时,它会在单独的文件中显示它们。

以下是以下验证语句的错误信息

 if (!$_POST['fullname'] | !$_POST['myusername'] | !$_POST['mypassword'] | !$_POST['remypassword']) {

        die('You did not complete all of the required fields');
    }

我的问题是:如何在同一页面中显示它们?例如;在表单旁边的标签中。谢谢,任何提示都会有很大帮助。这是我正在制作的网站autosales

【问题讨论】:

    标签: php sql session variables


    【解决方案1】:

    通过结构化您的代码,使验证顺序可以在最终处理之前进行,如果没有,则再次显示表单页面

    if($_SERVER['REQUEST_METHOD'] === 'POST')
    {
      $valid = false;
      // perform input validations here
      if(dosomething())
      {
        $valid = true;
      }
    
      // if valid, perform processing here, and either show success page (or redirect)
      if($valid === true)
      {
        // SQL junk here
        include('success.php');
        exit();
      }
    }
    
    // render original form after this line
    

    【讨论】:

    • 为了清楚起见,您可能希望创建某种数据结构(如 assoc 数组)来存储每个字段的错误。然后在您在每个标签旁边显示表单的部分中,您将检查数组是否存在错误,然后将它们打印到您希望与表单内联的位置。
    【解决方案2】:

    您的表单将数据发布到 checklogin.php,而不是将数据发布到 index.php 并在该页面上处理验证。

    <form class="clearfix" action="checklogin.php" method="post">
    

    【讨论】:

      【解决方案3】:

      过去,我使用过一个自定义错误处理程序,它使用会话来存储错误,我建议这样做。

      使用会话(在自定义错误处理程序中)存储错误的优点是可以轻松地在您拥有的任何视图页面中读取和显示它们。例如,如果您想在类中抛出错误,则可以在将它们保存到会话后随时显示它们。因此,虽然对于这个特定问题,您可以简单地将所有代码移动到一个 php 文件中,但这可能不是最好的解决方案。

      更不用说如果您的“检查登录”重定向回登录页面,显然您的所有变量值都不会保留。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-22
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        相关资源
        最近更新 更多