Php 注意:未定义的索引/isset使值返回错误

Php 注意:未定义的索引/isset使值返回错误,php,html,if-statement,isset,Php,Html,If Statement,Isset,所以我环顾了一下周围,试图找到有类似问题的人,但却找不到我想要的东西。我正在创建一个注册页面来学习一些基本的PHP,起初我遇到了一个错误“注意:未定义索引”,但我用“isset();”解决了这个问题,但这给了我另一个问题 注意:不让我发布图片对不起 注意:我这样做是为了在您单击submit并获得错误后,它将重新发布值,这样您就不必重新键入所有内容 isset使框的值在提交后等于1(真) 但问题更为严重: if ($submit) { if ($fullname && $user

所以我环顾了一下周围,试图找到有类似问题的人,但却找不到我想要的东西。我正在创建一个注册页面来学习一些基本的PHP,起初我遇到了一个错误“注意:未定义索引”,但我用“isset();”解决了这个问题,但这给了我另一个问题

注意:不让我发布图片对不起

注意:我这样做是为了在您单击submit并获得错误后,它将重新发布值,这样您就不必重新键入所有内容

isset使框的值在提交后等于1(真)

但问题更为严重:

if ($submit) {
if ($fullname && $username && $password && $repeatedpassword && $email) {
    //encrypt passwords
    $password = md5($password);
    $repeatedpassword = md5($repeatedpassword);

    if($password!=$repeatedpassword) {
        echo "Your passwords didn't match.";

        if(strlen($password)<6){
            echo "Your password must be atleast six characters long.";
        }else{
        //FINISH UP
        }
    }else{
        echo "Please fill in all fields.";
    }
}
if($submit){
if($fullname&&$username&&$password&&&$repeatedpassword&&&$email){
//加密密码
$password=md5($password);
$repeatedpassword=md5($repeatedpassword);
如果($password!=$repeatedpassword){
回显“您的密码不匹配。”;
如果(strlen($password)>
所需密码:
这就是您的问题(以及使用isset作为值的其他类似行)

您需要将isset用作测试,而不是值

$fullname = strip_tags(isset($_POST['fullname']));
if(isset($_POST['fullname'])) {
   $fullname = strip_tags($_POST['fullname']);
} else {
   //set some error notification for user
   $fullname = "";
}
你也必须改变这一点

if ($fullname && $username && $password && $repeatedpassword && $email) {
差不多

if ($fullname !="" && $username != "" && $password != "" && $repeatedpassword != "" && $email != "") {

如果将
md5()
作为第一步:尝试使用密码“a”,您将看到

if(strlen($password)<6){
这看起来也很糟糕

if ($fullname && $username && $password && $repeatedpassword && $email)

我总是使用小函数,并称之为ifset

ifset(&$var){
   if(isset($var))
      return $var;
   else
      return NULL;
}

显示您设置表单字段的代码,我猜您正在执行类似于
value=“isset($\u POST['somefield]”)的操作
isset
只需检查它是否存在,如果不存在则返回布尔值true,如果不存在则返回布尔值false,而不是变量的内容
$fullname&&$username&&&$password&&&&$repeatedpassword&&$email
-在哪里设置这些?问题不在
isset()
。这是您使用它的方式。-或者,表单中完全缺少发布的值。我添加了您要求的代码。因此,如果您查看此处,
isset()
返回什么?将
$fullname=”“
添加到else语句(编辑答案以显示),并确保实际检查变量的值,而不仅仅是它们是否存在。非常感谢!最终修复了它。我不知道!==是一件事?!==检查值和类型,其中as!=只检查值
if ($fullname && $username && $password && $repeatedpassword && $email)
ifset(&$var){
   if(isset($var))
      return $var;
   else
      return NULL;
}