Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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 字段总是返回空_Php_Validation - Fatal编程技术网

Php 字段总是返回空

Php 字段总是返回空,php,validation,Php,Validation,我试图创建一个面向PHP对象的表单验证脚本,但遇到了一个问题。每当我检查我的字段是否为空时,脚本总是返回消息说它们为空,即使提交时我的字段不是空的。我不明白我做错了什么。这是我的密码: HTML <form action='' method='POST'> <label>Full Name</label> <input type='text' placeholder='Full Name*' name='name'> <label>Em

我试图创建一个面向PHP对象的表单验证脚本,但遇到了一个问题。每当我检查我的字段是否为空时,脚本总是返回消息说它们为空,即使提交时我的字段不是空的。我不明白我做错了什么。这是我的密码:

HTML

<form action='' method='POST'>
<label>Full Name</label>
<input type='text' placeholder='Full Name*' name='name'>
<label>Email</label>
<input type='email' placeholder='Email*' name='email'>
<label>Password</label>
<input type='password' placeholder='Password*' name='password'>
<input type='submit' value='Sign Up!' name='registerBtn'>
</form>";

全名
电子邮件
密码
";
PHP

<?php
    class CreateUser
    {
        /*Declare variables*/
        public $errors;

        public function __construct(){
            /*Initialize array of errors*/
           $this->errors = array("empty_err"=>"");
        }

        /*Function that checks if fields are empty*/
        public function checkEmpty($valArr){
            foreach ((array)$valArr as $value=>$keys){
                if (empty($valArr[$keys])){
                    $this->errors["empty_err"] = "All fields are required.";
                }
            }
        }

    }

    $user = new CreateUser();

    if (isset($_POST["registerBtn"])){
        $user->checkEmpty($_POST["registerBtn"]);

    }
?>

1.第一次更改

将此更改为:

$user->checkEmpty($_POST["registerBtn"]);
$user->checkEmpty($_POST);
foreach ((array)$valArr as $value=>$keys){
   if (empty($valArr[$keys])){
foreach ((array)$valArr as $keys => $value){
   if (empty($valArr[$keys])){
这个:

$user->checkEmpty($_POST["registerBtn"]);
$user->checkEmpty($_POST);
foreach ((array)$valArr as $value=>$keys){
   if (empty($valArr[$keys])){
foreach ((array)$valArr as $keys => $value){
   if (empty($valArr[$keys])){
2.第二次更改

将此更改为:

$user->checkEmpty($_POST["registerBtn"]);
$user->checkEmpty($_POST);
foreach ((array)$valArr as $value=>$keys){
   if (empty($valArr[$keys])){
foreach ((array)$valArr as $keys => $value){
   if (empty($valArr[$keys])){
这个:

$user->checkEmpty($_POST["registerBtn"]);
$user->checkEmpty($_POST);
foreach ((array)$valArr as $value=>$keys){
   if (empty($valArr[$keys])){
foreach ((array)$valArr as $keys => $value){
   if (empty($valArr[$keys])){

$\u POST[“registerBtn”]
不是数组,而是字符串。是否要在
$\u POST
数组上循环?如果尚未循环,请将
错误报告(E\u ALL);ini\u集('display\u errors',1)
在页面顶部。非常感谢您的回答。解决方案是可行的,但为什么我们必须切换$value和$keys?因为您在
$valArr[$keys]上选中了
empty
其中
$keys
应该是
索引
并且
$value
应该是该索引上的值,所以$value始终是索引值?在您的帖子
中,foreach((数组)$valArr as$value=>$keys){
$value
是索引,
$keys
是该索引上的值。因此,如果(空($valArr[$keys]){为
如果(空($valArr[$values]){
@user2896120,如果我不能让您理解,请参阅