我有这个注册页面,我在$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>