class SignUp
{
var $pass;
var $repass;
var $eMail;
var $userName;
function __construct($p,$rep,$uName,$mail)
{
$this->pass = $p;
$this->repass = $rep;
$this->userName = $uName;
$this->eMail = $mail;
}
public function checkData()
{
if ($this->pass != $this->repass)
{
return 2;
}
}
}
此代码似乎不起作用,我不知道为什么..即使它们是相同的,它总是返回2.
以下是我如何调用对象
$ch = new SignUp($_POST['password'], $_POST['repassword'], $_POST['uname'], $_POST['emailID']);
echo $ch->checkData();
任何帮助都将不胜感激。
答案 0 :(得分:3)
很可能是问题是由我称之为非常突出的代码气味引起的。每个变量有三个不同的名称,而不只是一个。有这么多不同的变量名称很容易出错,然后结果将是我们看到的结果,因为其中一个变量总是为NULL 。
E.g。密码是 - 密码 - 通过 - p
等
在每个地方使用密码!其他人一样。
在相同的情况下也返回一些东西(我会返回TRUE / FALSE):
if ($this->password == $this->passwordRepeat)
{
return TRUE;
}
return FALSE;
重命名您的方法。它会对密码进行比较,因此请将其命名为passwordsIdentical
或comparePasswords
。
答案 1 :(得分:2)
您可以轻松地将其隔离到$ _POST变量无法正常工作。在比较不起作用的意义上,班级没有任何问题:
<?php
class SignUp{
var $pass;
var $repass;
var $eMail;
var $userName;
function __construct($p,$rep,$uName,$mail){
$this->pass=$p;
$this->repass=$rep;
$this->userName=$uName;
$this->eMail=$mail;
}
public function checkData(){
if($this->pass!=$this->repass)
return 2;
}
}
$a = new SignUp( "php", "notphp", "", "" );
$b = new SignUp( "php", "php", "", "" );
var_dump( $a -> checkData() );
//int(2)
var_dump( $b -> checkData() );
//NULL
var_dump( $a -> checkData() === $b -> checkData() );
//bool(false), they return different results.
?>
HTML提交表格是什么样的?
答案 2 :(得分:-2)
<?php
/ *检查此代码* /
class SignUp{
public $pass;
public $repass;
public $eMail;
public $userName;
function __construct($p,$rep,$uName,$mail){
$this->pass=$p;
$this->repass=$rep;
$this->userName=$uName;
$this->eMail=$mail;
}
public function checkData(){
if($this->pass!=$this->repass)
return 2;
}
}
?>
答案 3 :(得分:-3)
替换此
如果($这 - &GT;传= $这 - &GT;!再经过)
到
if(trim($this->pass) != trim($this->repass))
将有效