未定义的变量登录消息


undefined variable login message

我有这个注册页面,我在$user上调用方法reg_check()。我收到错误消息,如果一些输入没有被填充,它们就会显示出来。但是,当我填写所有内容时,我会收到一条错误消息"undefined variable"。

我试图将$message="放在方法和regPage的不同位置,但仍然出现错误:未定义的变量登录消息

这在注册页面上:

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

这条线上的问题:注意:未定义变量:消息在…

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

reg_check方法

   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;
    }
}

为了访问类中定义和设置的变量。你需要用一种方法把它从盒子里拿出来。您已经有一条$消息了。你唯一需要做的就是返回它。这样,当你调用mehtod reg_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;
}

然后,在您已将$user定义为类的新实例的任何文件上。您可以调用该方法并获取返回值。

<?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() : '';

由于在函数中定义了一个新的$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>