我正在Unity中创建一个登录系统,它可以使用数据库中的用户名登录,但无论我在密码字段中输入什么内容,登录都会成功。我不明白为什么,因为我认为这段代码会检查密码是否与用户名匹配。有线索吗?我对PHP非常陌生。谢谢:))
php代码:
$check = mysql_query("SELECT * FROM unitytut WHERE `user`='$user'");
$numrows = mysql_num_rows($check);
while($row = mysql_fetch_assoc($check)){
if($pass = $row['pass']){
die("login-SUCCESS");
}
}
统一代码:
WWWForm form = new WWWForm ();
form.AddField ("user", user);
form.AddField ("pass", pass);
WWW w = new WWW ("http://mywebpage.dx.am/Login.php", form);
StartCoroutine (Login (w));
IEnumerator Login(WWW w){
yield return w;
if (w.error == null) {
if(w.text == "login-SUCCESS"){
Debug.Log("LOGIN SUCCESS");
}
}
答案 0 :(得分:2)
这是你的问题,你正在使用单个=
,因为正在设置$pass
,这将返回true,使用双==
代替,因为这是为了检查它是否等于。
所以这个:
if($pass = $row['pass']){
die("login-SUCCESS");
}
应该是这样的:
if($pass == $row['pass']){
die("login-SUCCESS");
}
此外,我们不推荐使用mysql_*
函数,您可能需要查看PDO或MySQLi prepared statements。