首页 > 解决方案 > 当我提交表单时,“并非所有字段都已输入”。我正在使用 PHP 7

问题描述

我是 PHP 新手:我已经搜索了 20 多个答案,并尝试了建议的各种编码,但没有解决问题。我的问题显然在过去曾引起其他用户的问题,因为这个问题被问了很多次。问题是我在提交表单时收到“并非所有字段都已输入”的返回。我正在使用 PHP 7。

我知道我已连接到我的 MySQL 数据库,因为我在提交查询时收到“已连接到 MySQL”的返回 - msqlconnect.php

这是我的代码:

<?php
include_once 'functions.php';
$error = $user = $pass = "";

if ($_POST &&isset($_POST['user'], $_POST['pass'])) {
    $user = sanitizeString($_POST['user']);
    $pass = sanitizeString($_POST['pass']);


    if ($user == "" || $pass == "") {
        $error = "Not all fields were entered<br />";
    } else {
        $token = md5("$pass");

        $query = 'SELECT user,pass FROM password
              WHERE user='$user' AND pass=\'$token\'';

        if (mysql_num_rows(queryMysql($query)) == 0) {
            $error = "Username/Password invalid<br />";
        } else {
            $_SESSION['user'] = $user;
            $_SESSION['pass'] = $token;
            die("You are now logged in. Please
               <a href='xxxx_member.php?view=$user'>click here</a>.");
        }
    }
}

    echo <<<_END
    <form method='post' action='xxxx.php'>$error<br />
    E-Mail Address: <input type='text' maxlength='255' name='user'
value='$user' /><br /><br />
    Password:  <input type='password' maxlength='255' name='pass'
value='$pass' /><br />
    <br /><br />
    <input type='submit' value='Login' />
    </form>
    _END;
    ?>

在我看来,代码并没有超出第一个“else”,但我不知道为什么。

任何建议将不胜感激。

根据要求,以下是“消毒”功能:

    function sanitizeString($var)
    {
    $con = @mysqli_connect('localhost', 'root', '', 'test');
    $user = mysqli_real_escape_string($con, $_POST['user']);
    $psass = mysqli_real_escape_string($con, $_POST['pass']);

    }

    function sanitizemysqli($var)
    {
    $var = mysqli_real_escape_string($var);
    $var = sanitizeString($var);
    return $var;
    }

标签: php

解决方案


我认为问题出现是因为函数 sanitizeString 没有返回正确的字符串,而是返回了一个空字符串。这就是为什么您总是看到相同的消息。我会调试这些变量以查看它们是否已填充。像这样的东西:

 <?php
    include_once 'functions.php';
    $error = $user = $pass = "";

    if ($_POST &&isset($_POST['user'], $_POST['pass'])) 

    {
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
var_dump($_POST);
var_dump($user);
var_dump($pass);
die();


if ($user == "" || $pass == "")
{
    $error = "Not all fields were entered<br />";
}
else
{
    $token = md5("$pass");

    $query = "SELECT user,pass FROM password
              WHERE user='$user' AND pass='$token'";

    if (mysql_num_rows(queryMysql($query)) == 0)
    {
        $error = "Username/Password invalid<br />";
    }
    else
    {
        $_SESSION['user'] = $user;
        $_SESSION['pass'] = $token;
        die("You are now logged in. Please
           <a href='xxxx_member.php?view=$user'>click here</a>.");
    }
}
    }



    echo <<<_END
    <form method='post' action='xxxx.php'>$error<br />
    E-Mail Address: <input type='text' maxlength='255' name='user'
value='$user' /><br /><br />
    Password:  <input type='password' maxlength='255' name='pass'
value='$pass' /><br />
    <br /><br />
    <input type='submit' value='Login' />
    </form>
    _END;
    ?>

有了这个,您可以逐步检查正在发生的事情。


推荐阅读