Php 未定义的变量登录消息

Php 未定义的变量登录消息,php,variables,undefined,Php,Variables,Undefined,我有这个注册页面,我在$user上调用方法reg\u check()。我会收到错误消息,如果某些输入尚未填写,则会显示错误消息。但当我填充所有变量时,会收到一条错误消息“undefined variable” 我试图在method和regPage中的不同位置放置$message=“”,但仍然得到错误:未定义变量登录消息 这在注册页面上: if(isset($_POST['submit'])){ //$message = ""; $user->reg_check(); }else {

我有这个注册页面,我在$user上调用方法
reg\u check()
。我会收到错误消息,如果某些输入尚未填写,则会显示错误消息。但当我填充所有变量时,会收到一条错误消息“undefined variable”

我试图在method和regPage中的不同位置放置$message=“”,但仍然得到错误:未定义变量登录消息

这在注册页面上:
if(isset($_POST['submit'])){
//$message = "";
$user->reg_check();
}else
{ 
  $message = "";
}
?>             
这方面的问题: 注意:未定义变量:消息在

<h4 class="bg-danger"><?php echo $message; ?></h4>  

注册表检查方法

   public function reg_check()
{


    global $baza;
    switch(isset($_POST)){   

        case empty($_POST['pass']):
            //                header( "refresh:4;url=reglog.php" ); 
            $message = "Upišite šifru u odgovorajuće polje";
            break;
        case ($_POST['pass']<5):
            //                header( "refresh:4;url=reglog.php" ); 
            $message = "Vaša šifra mora biti duža od 5 karaktera";
            break;
        case empty($_POST['email']):
            //                header( "refresh:4;url=reglog.php" ); 

            $message = "Upišite mail u odgovarajuće polje";
            break;  

             case isset($_POST['email']):


            $email = $baza->sanitize($_POST['email']); 
            $cmail=['mail'=>$email];    
            $postoji = $baza->prep_query("SELECT email FROM users WHERE email = :mail limit 1",$cmail);
            $count= count($postoji->fetch(PDO::FETCH_OBJ));

            if($postoji->rowCount() > 0){
                //                    header( "refresh:4;url=reglog.php" ); 
                $message = "Korisnik sa email: " . $email . " već postoji!";

            }
            else
            {  $message = "";
             $this->registration($_POST);

            }
            break;
    }

}
公共功能注册检查()
{
全球$baza;
开关(isset($\U POST)){
空格($_POST['pass']):
//标题(“refresh:4;url=reglog.php”);
$message=“Upišitešifru u odgovorajuće polje”;
打破
案例($_POST['pass']消毒($_POST['email']);
$cmail=['mail'=>$email];
$postoji=$baza->prep_query(“从电子邮件=:邮件限制1”的用户选择电子邮件,$cmail);
$count=count($postoji->fetch(PDO::fetch_OBJ));
如果($postoji->rowCount()>0){
//标题(“refresh:4;url=reglog.php”);
$message=“Korisnik sa电子邮件:”.$email。“većpostoji!”;
}
其他的
{$message=”“;
$this->registration($\u POST);
}
打破
}
}

既然您在函数中定义了一个新的$message,您应该再次返回结果

if(isset($_POST['submit'])){
     $message = $user->reg_check();
}

public function reg_check()
{
 .....
 return $message;
}

或者只需在方法中执行echo$user->reg_check();

$message
初始化为空字符串就足够了。并且您不应该忘记在方法末尾返回
$message

<?php

    public function reg_check(){
        global $baza;
        $message = "";

        switch(isset($_POST)){
            case empty($_POST['pass']):
                $message = "Upišite šifru u odgovorajuće polje";
                break;
            case ($_POST['pass']<5):
                $message = "Vaša šifra mora biti duža od 5 karaktera";
                break;
            case empty($_POST['email']):
                $message = "Upišite mail u odgovarajuće polje";
                break;

            case isset($_POST['email']):
                $email      = $baza->sanitize($_POST['email']);
                $cmail      =['mail'=>$email];
                $postoji    = $baza->prep_query("SELECT email FROM users WHERE email = :mail limit 1",$cmail);
                $count      = count($postoji->fetch(PDO::FETCH_OBJ));

                if($postoji->rowCount() > 0){
                    $message = "Korisnik sa email: " . $email . " već postoji!";
                }else {  
                    $this->registration($_POST);
                }
                break;
        }
        // YOU MUST RETURN $message AS IT IS NECESSARY IN YOUR CASE....
        return $message;
    }
?>


<?php
    $message = "";

    if(isset($_POST['submit'])){
        $user->reg_check();
    }
?>


    <h4 class="bg-danger"><?php echo $message; ?></h4>  

以便访问在类中定义和设置的变量。您需要使用方法将其从框中取出。您已经有一条$message。您只需返回它。这样,当您调用method
reg\u check()
时,您就可以得到一个值(消息)。这样您就可以从类内部检索变量

<?php

public function reg_check()
{
  global $baza;

  switch(isset($_POST)){   

    case(empty($_POST['pass'])):
      // header( "refresh:4;url=reglog.php" ); 
      $message = "Upišite šifru u odgovorajuće polje";
      break;

    case($_POST['pass'] < 5):
      // header( "refresh:4;url=reglog.php" ); 
      $message = "Vaša šifra mora biti duža od 5 karaktera";
      break;

    case(empty($_POST['email'])):
      // header( "refresh:4;url=reglog.php" ); 
      $message = "Upišite mail u odgovarajuće polje";
      break;  

    case(isset($_POST['email'])):
      $email = $baza->sanitize($_POST['email']); 
      $cmail=['mail'=>$email];    
      $postoji = $baza->prep_query("SELECT email FROM users WHERE email = :mail limit 1",$cmail);
      $count= count($postoji->fetch(PDO::FETCH_OBJ));

      if($postoji->rowCount() > 0) {
        // header( "refresh:4;url=reglog.php" ); 
        $message = "Korisnik sa email: " . $email . " već postoji!";
      } else {
        $message = "";
        $this->registration($_POST);
      }
      break;
  }

  // when all of the switch() case: as been done return the message
  return $message;

}

这可能是个问题。您正在函数中设置
$message
的值,但尝试在外部访问它。尝试使用
global
,就像使用
$baza
一样。我可以看到您没有返回$message,也没有进入$user->reg\u check();更改为==>echo$user->reg\u check();方法中的全局$消息解决了problem@Xigo对于这类变量,不应该使用全局变量,请查看我的答案以获得解释。
<?php

if(isset($_POST['submit'])) {
  // echo the value returned by the method `reg_check()`
  $message = $user->reg_check();
} else {
  $message = '';
}

echo $message;
echo isset($_POST['submit']) ? $user->reg_check() : '';