【问题标题】:$errors[] not returning$errors[] 没有返回
【发布时间】:2012-07-07 21:35:54
【问题描述】:

我正在为我的网站构建一个 PHP 登录和注册系统。如果表单字段为空,则编码要求使用 $errors[] 并用于检查输入用户名是否存在于数据库中。即使我没有输入任何信息,我也没有收到任何错误。

login.php

<?php
include 'cic/initalize.php';

if (user_exists('cassey') === true) {
    echo 'exists';
}
die();

if (empty($_POST) === false) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if (empty($username) === true || empty($password) === true) {
        $errors[] = 'Please provide your username and password.';
    } else if (user_exists($username) === false) {
        $errors[] = 'We can\'t find the username entered, please enter a valid 
        username or register to continue';
        }
}
?>

clients.php(用户)

<?php
function user_exists($username) {
    $username = sanitize($username);
    return (mysql_result(mysql_query("SELECT userId FROM clients WHERE 
    username = '$username'"), 0) === 1) ? true : false; 
}
?>

调用 login.php 的代码

 <div class="widget">
      <h2>Login | Register</h2>
 </div><!--End widget class tag-->
 <div class="inside">
    <form action="login.php" method="post">
       <ul id="logIn">
          <li>
            Username:<br/>
            <input type="text" name="username"/>
          </li>
          <li>
            Password:<br/>
            <input type="password" name="password"/>
          </li>
          <li>
            <input type="submit" value="Login"/>
          </li>
          <li>
            <a href="register.php">Register</a>
          </li>
       </ul>
    </form>
 </div><!--End inside class tag-->

【问题讨论】:

  • 请出示调用login.php的代码
  • 我只知道非常基本的 PHP,但你不是在 'die()' 之前缺少一个 'else' 吗?
  • 实际上,我认为'die'属于块内。
  • @Jon,我添加了调用 login.php 的编码 Alexandre & Ron,我不认为 die();是问题所在,我尝试了多种方法都产生相同的结果......空白页。我相信问题出在查询中,但我不确定我做错了什么。
  • 需要在begin中添加:$errors = Array();

标签: php error-handling return


【解决方案1】:

login.php

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
include 'cic/initalize.php';

if (user_exists('cassey') === true)
    echo 'exists';
else
    die "User does not exist!";

if (isset($_POST['your_submit_button']) && isset($_POST['username']) && isset($_POST['password']))
{
    $username = $_POST['username'];
    $password = $_POST['password'];

    if (strlen($username)==0  || strlen($password)==0)
    {
        $errors[] = 'Please provide your username and password.';
    }
    elseif(user_exists($username) === false)
    {
        $errors[] = 'We can\'t find the username entered, please enter a valid 
        username or register to continue';
    }
}
else
{
    echo "Error: at least one field wasn't set in the form !<br>";
    print_r($_POST);
}
?>

文档:
isset
empty
ini_set
error_reporting
print_r

your_submit_button 替换为 HTML 表单中提交按钮的真实名称。
使用empty() 不是一个好主意,因为字符串“0”被认为是空的。您需要检查的是字符串是否至少包含一个字符(长度不等于 0)。

【讨论】:

  • 这很有帮助,我能够得到一个比空白页更好的用户不存在,我同意空白不是最好的选择(这是我学习的第二周php) 但是,当输入现有用户时,我仍然收到用户不存在并且当我删除测试代码时 (user_exists('cassey')...。我仍然收到空白页,应该得到定义的错误消息。跨度>
  • 我刚刚更新了上面的代码,你可以试试吗?如有必要,请阅读文档链接。
猜你喜欢
  • 2019-04-25
  • 2017-02-23
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
相关资源
最近更新 更多