Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL为会话或变量分配错误?_Php_Sql_Session_Variables - Fatal编程技术网

Php SQL为会话或变量分配错误?

Php SQL为会话或变量分配错误?,php,sql,session,variables,Php,Sql,Session,Variables,我已经为一个网站创建了登录表单和注册表单 表单被发布到checklogin.php和checksign.php进行验证,但是当它发现任何错误时,会在单独的文件中显示它们 以下是以下验证语句的错误消息 if (!$_POST['fullname'] | !$_POST['myusername'] | !$_POST['mypassword'] | !$_POST['remypassword']) { die('You did not complete all of the r

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

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

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

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

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


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

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

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

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

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


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

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

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数组)来存储每个字段的错误。然后在第节中,在每个标签旁边显示表单,您将检查数组是否存在错误,然后在希望与表单内联的位置打印它们。