你好。我正在为 Android 上一个非常简单的客户端-服务器应用程序编写用户授权测试模型。实现如下:用户在设备上输入登录名和密码 -> 它们被发送到服务器,在服务器上使用 mysql select'a 搜索登录名和密码。如果mysql_num_rows() = 0(没有用户使用这样的登录名和密码),我调用http_response_code(401)方法。 该响应代码由应用程序使用connection.getResponseCode()方法接收
所以,问题是:每次,无论登录名和密码是否正确,connection.getResponseCode() 都会返回 200。
可能是什么问题或我做错了什么?这是代码(提前对它的糟糕表示歉意)
<?php
$mysql_host = "localhost";
$mysql_user = "db";
$mysql_password = "db";
$mysql_database = "db";
mysql_connect($mysql_host, $mysql_user, $mysql_password);
mysql_select_db($mysql_database);
mysql_set_charset('utf8');
if (isset($_GET["action"])) {
$action = $_GET['action'];
}
if (isset($_GET["username"])) {
$username = $_GET['username'];
}
if (isset($_GET["password"])) {
$password = $_GET['password'];
}
if ($action == authentication) {
$query = "SELECT username, password FROM users WHERE username='$username' AND password='$password'";
$result = mysql_query($query);
$rows = mysql_num_rows($result);
if ($rows = 0) {
http_response_code(401);
exit;
}
}
?>
也许你只是打错了。问题是在条件
在这种情况下,您使用赋值运算符。是否需要比较运算符 == 或 ===
关于比较运算符的详细信息:http: //php.net/manual/ru/language.operators.comparison.php
为了理解:赋值运算符的执行结果就是赋值本身。也就是说,通过写“if($rows = 0)”,你得到了结果“if(0)”,并且执行永远不会进入这样的条件。