当前位置: 首页 > 面试题库 >

即使未设置项目,isset()函数也会返回true

单品
2023-03-14
问题内容

这是我的代码。出于某种原因,如果我提交表单时未放置密码,则仍会创建数据库条目。整个代码中散布着一些注释,但是代码相当简单。有任何想法吗?

<?php
//signup.php
include 'connect.php';
include 'header.php';

echo '<h3>Sign up</h3>';

if($_SERVER['REQUEST_METHOD'] != 'POST')
{
    /*The form hasn't been posted yet, display it
      note that the action="" will cause the form to post to the same page it is on */
    echo '<form method="post" action="">
        Username: <input type="text" name="user_name" /><br />
        Password: <input type="password" name="user_pass" /><br />
        Password again: <input type="password" name="user_pass_check" /><br />
        E-mail: <input type="email" name="user_email" /><br />
        <input type="submit" value="Add category" />
        </form>';
}
else
{
    /* so, the form has been posted, we'll process the data in three steps:
        1.  Check the data
        2.  Let the user refill the wrong fields (if necessary)
        3.  Save the data
    */
    $errors = array(); /* declare the array for later use */

    if(isset($_POST['user_name']))
    {
        //the user name exists
        if(!ctype_alnum($_POST['user_name']))
        {
            $errors[] = 'The username can only contain letters and digits.';
        }
        if(strlen($_POST['user_name']) > 30)
        {
            $errors[] = 'The username cannot be longer than 30 characters.';
        }
    }
    else
    {
        $errors[] = 'The username field must not be empty.';
    }

    if(isset($_POST['user_pass']))
    {
        if($_POST['user_pass'] != $_POST['user_pass_check'])
        {
            $errors[] = 'The two passwords did not match.';
        }
    }
    else
    {
        $errors[] = 'The password field cannot be empty.';
    }

    if(!empty($errors))
    {
        echo 'Uh-oh.. a couple of fields are not filled in correctly..';
        echo '<ul>';
        foreach($errors as $key => $value)
        {
            echo '<li>'.$value.'</li>';
        }
        echo '</ul>';
    }
    else
    {
        //the form has been posted without errors, so save it
        //notice the use of mysql_real_escape_string, keep everything safe.
        //also notice the sha1 function which hashes the password
        $sql = "INSERT INTO
                    users(user_name, user_pass, user_email, user_date, user_level)
                VALUES('" . mysql_real_escape_string($_POST['user_name']) . "',
                       '" . sha1($_POST['user_pass']) . "',
                       '" . mysql_real_escape_string($_POST['user_email']) . "',
                       NOW(),
                       0)";

        $result = mysql_query($sql);
        if(!$result)
        {
            //something went wrong, display the error
            echo 'Something went wrong while registering. Please try again later.';
            //echo mysql_error(); //debugging purposes, uncomment when needed
        }
        else
        {
            echo 'Successfully registered. You can now <a href="signin.php">sign in</a>
                     and start posting!';
        }
    }
}
include 'footer.php';
?>

问题答案:

如果声明了变量,则仍然设置空字符串和/或空字符串。尝试这个:

if(isset($_POST['user_pass']) && $_POST['user_pass'] != "")



 类似资料:
  • 问题内容: 我正在根据日期范围进行计数。当前查询确实返回正确的结果,但我需要其他信息。在当前形式下,查询将显示具有正确计数的项目。但是,我需要显示所有项目,即使在指定的日期范围内它们的计数为零。 这是SQL代码: 当我执行此查询时,我得到以下结果: https://dl.dropbox.com/u/17234826/SQLresult.png 这个结果是正确的,但是即使创建范围中没有需求,我也需要

  • 问题内容: 我只是在创建一个用于检查对象数组中某个值的函数,但是由于某种原因,它一直在返回。这是为什么? 问题答案: 在函数中,您是从传递给的函数返回的,而不是从返回的。 您可以这样修改它: 但这会迭代所有元素,即使立即找到该项目也是如此。这就是为什么最好使用一个简单的循环: 请注意,我还修改了您的代码以返回值,而不是键。我想这就是意图。您可能还对另一个迭代函数感到困惑:传递给forEach的回调

  • 问题内容: 我当前正在编写一个脚本,该脚本必须检查所有指定的文件夹是否实际存在。我发现我必须将os.path.isdir()与绝对路径一起使用。 我有以下目录结构: 当我打开op我的python命令行并尝试文件夹是否确实存在时,我得到以下信息: 这很奇怪,因为当我将这些路径复制并粘贴到Windows资源管理器中时,我可以毫无问题地访问它们。我检查了权限,所有文件夹都具有相同的权限。有人知道我在做什

  • 我试图在登录屏幕上向用户显示progressLoader,直到web服务响应到来。当我按下登录按钮时,它工作。问题是当我试图在响应中从此行隐藏this.setState({showLoader:false})时,我得到的是未定义的this.setState。即使我在这个问题中正确地设置了上下文,this.setState也不是一个函数

  • 当我尝试时,我得到以下响应: 当我尝试从本地vuejs应用程序调用云函数时,我会得到以下错误:

  • 问题内容: 这是我的代码: 我的回应是: 500服务器错误 我打开我的变量,然后看到: POST / rest / platform / domain / list HTTP / 1.1 即使我曾经将其设置为GET,为什么也将其设置为POST ? 问题答案: 将请求方法隐式设置为POST,因为这是您要发送请求正文时的默认方法。 如果要使用GET,请删除该行并删除该行。您无需发送GET请求的请求正文