Php 未定义的变量登录消息
我有这个注册页面,我在$user上调用方法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 {
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() : '';