Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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 Post值_Php_Post - Fatal编程技术网

表单留空时的PHP Post值

表单留空时的PHP Post值,php,post,Php,Post,我有一个php表单,用于更改没有必填字段的用户数据。 我想检查用户是否在表单的字段中输入了数据 我最初的想法是,如果用户单击submit,留下了一些 字段为空,则方法POST将在 $\u POST['field']变量 因此,我检查了$POST['field']变量是否使用'isset'函数设置。不幸的是,POST方法似乎没有在表单中未指定的变量中输入NULL值。这使得if(isset($[POST])语句为true,因为POST方法确实为这些变量设置了一些值 如何检查用户是否在字段中输入了数据

我有一个php表单,用于更改没有必填字段的用户数据。 我想检查用户是否在表单的字段中输入了数据

我最初的想法是,如果用户单击submit,留下了一些 字段为空,则方法POST将在 $\u POST['field']变量

因此,我检查了$POST['field']变量是否使用'isset'函数设置。不幸的是,POST方法似乎没有在表单中未指定的变量中输入NULL值。这使得if(isset($[POST])语句为true,因为POST方法确实为这些变量设置了一些值

如何检查用户是否在字段中输入了数据? 这是我的密码:

<?php 
include 'core/init.php';
//logged_in_redirect();
include 'includes/overall/admin_start.php';
?>

<h2>Employee information: </h2>
<?php 
echo "Username: ", $_SESSION['user_data']['username'], "<br>";
echo "First name: ", $_SESSION['user_data']['first_name'], "<br>";
echo "Last name: ", $_SESSION['user_data']['last_name'], "<br>";
echo "Email: ", $_SESSION['user_data']['email'], "<br>";
echo "City: ", $_SESSION['user_data']['city'], "<br>";
echo "Type: ", $_SESSION['user_data']['type'], "<br>";

?>

<h2> Alter information: </h2>

<?php

if(empty($_POST) === true){
    echo "print";
}
else{
    if(isset($_POST['username'])){
        if(user_exists($_POST['username']) === true){
            $errors[] = 'Sorry, the username \'' . $_POST['username'] . '\' 
is already taken.';
        }
        if(preg_match("/\\s/", $_POST['username']) == true){
            $errors[] = 'Your username must not contain any spaces.';
        }
        if(strlen($_POST['username']) > 30){
            $errors[] = 'The size of one of your entries is not acceptable. 
Entry size must be smaller than 30 characters.';
        }
    }
    if(isset($_POST['password'])){
        //echo $_POST['password'];
        if(strlen($_POST['password']) < 6){
            $errors[] = 'Your password size is not acceptable. Password size 
must be between 6 and 30 characters.';
        }
        if($_POST['password'] !== $_POST['repeat_pass']){
            $errors[] = 'Your password entries do not match.';
        }
        if(strlen($_POST['password']) > 30){
            $errors[] = 'The size of one of your entries is not acceptable. 
Entry size must be smaller than 30 characters.';
        }
    }
    if(isset($_POST['email'])){
        if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false){
            $errors[] = 'A valid email address is required.';
        }
        if(email_exists($_POST['email']) === true){
            $errors[] = 'Sorry, the email \'' . $_POST['email'] . '\' is 
already in use.';
        }
        if(strlen($_POST['email']) > 30){
            $errors[] = 'The size of one of your entries is not acceptable. 
Entry size must be smaller than 30 characters.';
        }
    }
    if(isset($_POST['type'])){
        if(($_POST['type'] !== "1") && ($_POST['type'] !== "2") && 
($_POST['type'] !== "3")){
            $errors[] = 'Please insert a correct number in the field type';
        }
    }
    if(isset($_POST['city'])){
        if(city_exists($_POST['city']) === false){
            $errors[] = 'Sorry, there is no shop in the specified city';
        }
        if(strlen($_POST['city']) > 30){
            $errors[] = 'The size of one of your entries is not acceptable. 
Entry size must be smaller than 30 characters.';
        }
    }
}
?>

<?php
if(isset($_GET['success']) && empty($_GET['success'])){
    echo 'You have altered the employee successfully';
}
else
{
    if(empty($_POST) === false && empty($errors) === true)
    {
        if(isset($_POST['username'])){$register_data['username'] = 
$_POST['username'];}
        if(isset($_POST['password'])){$register_data['password'] = 
$_POST['password'];}
        if(isset($_POST['first_name'])){$register_data['first_name'] = 
$_POST['first_name'];}
        if(isset($_POST['last_name'])){$register_data['last_name'] = 
$_POST['last_name'];}
        if(isset($_POST['email'])){$register_data['email'] = 
$_POST['email'];}
        if(isset($_POST['city'])){$register_data['city'] = $_POST['city'];}
        if(isset($_POST['type'])){$register_data['type'] = $_POST['type'];}


        alter_user($register_data);
        header('Location: alter_employee.php?success');
    }
    else{echo output_errors($errors);}
?>

<form action="" method="post">
    <ul>

        <li>
            Username:<br>
            <input type="text" name="username">
        </li>
        <p><li>
            Password:<br>
            <input type="password" name="password">
        </li></p>
        <p><li>
            Repeat password*:<br>
            <input type="password" name="repeat_pass">
        </li></p>
        <p><li>
            First name:<br>
            <input type="text" name="first_name">
        </li></p>
        <p><li>
            Last name:<br>
            <input type="text" name="last_name">
        </li></p>
        <p><li>
            Email:<br>
            <input type="text" name="email">
        </li></p>
        <p><li>
            City:<br>
            <input type="text" name="city">
        </li></p>
        <p><li>
            Type (1,2,3):<br>
            <input type="text" name="type">
        </li></p>
        <p><li>
            <input type="submit" value="Register">
        </li></p>

    </ul>

</form>

<?php 
}
include 'includes/overall/end.php'; ?>

员工信息:
更改信息:
  • 用户名:
  • 密码:
  • 重复密码*:
  • 名字:
  • 姓氏:
  • 电子邮件:
  • 城市:
  • 类型(1,2,3):

例如,您可以这样做:

$foo = empty($_POST['foo']) ? 'default value' : $_POST['foo'];
检查变量是否为空并提供默认值,否则使用已发布的值填充变量

或者,由于
$\u POST
变量预期由表单提交设置,因此您只需检查该值是否为“false”:


由于字符串类型的值为,因此检查字符串长度会更准确。如果要检查字段是否为空或仅包含空格,可以选择在调用
strlen()
之前调用
trim()
,或者在
strlen()
之后调用
ctype\u space()
,例如,您可以执行以下操作:

$foo = empty($_POST['foo']) ? 'default value' : $_POST['foo'];
检查变量是否为空并提供默认值,否则使用已发布的值填充变量

或者,由于
$\u POST
变量预期由表单提交设置,因此您只需检查该值是否为“false”:


由于字符串类型值为,因此检查字符串长度会更准确。如果要检查字段是否为空或仅包含空格,可以选择在调用
strlen()之前调用
trim()
,或者在
strlen()之后调用
ctype\u space()

避免使用
empty
,因为它还会检查错误的条件,如
0
“0”
,并且仅使用
isset
不会捕获空字符串。最好检查空输入的预期值,例如

if (isset($_POST['fieldName']) && trim($_POST['fieldName']) !== "") {
    echo "There's something here!";
}

避免使用
empty
,因为它还会检查错误的条件,如
0
“0”
,并且仅使用
isset
不会捕获空字符串。最好检查空输入的预期值,例如

if (isset($_POST['fieldName']) && trim($_POST['fieldName']) !== "") {
    echo "There's something here!";
}

以上这些似乎都不适合我。然而,我做到了: 如果($_POST['foo']!=“null”) 这就成功了。我找到这个是因为我想 echo“值为“$\u POST['foo']”。
” 而且不断地 “值为空”
当我没有传递真正的字符串时。

上面的非似乎对我有效。但是,我这样做了: 如果($_POST['foo']!=“null”) 这就成功了。我找到这个是因为我想 echo“值为“$\u POST['foo']”。
” 而且不断地 “值为空”
当我没有传递真正的字符串时。

允许用户使用他们想要的字符串。提交的空白表单字段有一个空字符串值,而不是null。您可以使用
empty($var)
来确定变量是否为空。该值将是除收音机和选择列表以外的字段的空字符串。如果(!isset | | strlen==0)然后没有用户数据。这里有一点提示:当你有这么多的代码和这么多类似的条件时,你应该用最多3个输入来测试它,然后从那里开始构建(从成功开始)。当像这样大的东西变得难以调试时,事情开始恶化。如果($\u POST('variable')='')然后是空的,这是两个引号,而不是双引号。允许用户使用他们想要的。提交的空白表单字段有一个空字符串值,而不是null。您可以使用
empty($var)
确定变量是否为空。该值将是除收音机和选择列表以外的字段的空字符串。如果(!isset | | strlen==0)然后没有用户数据。这里有一点提示:当你有这么多代码和这么多条件时,你应该用最多3个输入来测试它,然后从那里开始构建(从成功开始)。当像这样大的东西变得难以调试时,事情就会开始恶化。如果($\u POST('variable')='')然后它是空的,这是两个引号,而不是双引号。isset | | empty/strlen==0isset | | empty/strlen==0如果变量设置为0,则它是
isset()
,否?此时falsy是变量的条件。是的,
isset
只是检查设置的值,而不是
null
0
是一个设置值,因此
isset
将以
true
的形式返回。
&
条件要求设置它,而不是空字符串(或空白).
0
“0”
将通过此条件测试,因为它们是故意输入表单中的值。如果变量设置为0,则它是
isset()
,否?此时falsy是变量的条件。是的,
isset
只是检查设置的值,而不是
null
0
是一个设置值,因此
isset
将以
true
的形式返回它。