PHP-MySQL-JSON登录系统
我目前正在开发一个登录系统(通过使用两个文本字段,用户将被重定向,该系统非常有效)。然而,当我正在开发一个移动应用程序时,用JSON做这件事会容易得多,我也不完全确定从哪里开始。我基本上希望做的是使用https post请求(从我的应用程序),以便它可以请求: 我已经创建了一个基本的示例,但我并不打算通过URL传入参数,因为我的代码目前只是在MySQL数据库中查找用户,并以JSON输出用户。我希望能够通过URL传入用户名和密码参数,然后如果用户名/密码是否在数据库中,则输出“成功”或“错误”JSON响应PHP-MySQL-JSON登录系统,php,mysql,json,Php,Mysql,Json,我目前正在开发一个登录系统(通过使用两个文本字段,用户将被重定向,该系统非常有效)。然而,当我正在开发一个移动应用程序时,用JSON做这件事会容易得多,我也不完全确定从哪里开始。我基本上希望做的是使用https post请求(从我的应用程序),以便它可以请求: 我已经创建了一个基本的示例,但我并不打算通过URL传入参数,因为我的代码目前只是在MySQL数据库中查找用户,并以JSON输出用户。我希望能够通过URL传入用户名和密码参数,然后如果用户名/密码是否在数据库中,则输出“成功”或“错误”JS
<?php
$host = "localhost";
$username = "root";
$password = "password";
$db_name = "test";
$con = mysql_connect("$host", "$username", "$password") or die("cannot connect");
mysql_select_db("$db_name") or die("cannot select DB");
$sql = "select * from test_table";
$result = mysql_query($sql);
$json = array();
if (mysql_num_rows($result))
{
while ($row = mysql_fetch_row($result))
{
$json['items'] = $row;
}
}
mysql_close($db_name);
echo json_encode($json, JSON_PRETTY_PRINT);
?>
编辑
我现在已经开始在另一个系统上工作,这正是我想要做的(在这里找到一个例子:)除了每次我请求类似的东西时——我得到JSON错误1代码
<?php
$host = "localhost"; // Host name
$db_username = "root"; // Mysql username
$db_password = "password"; // Mysql password
$db_name = "test"; // Database name
$tbl_name = "test_table"; // Table name
// Connect to server
mysql_connect("$host", "$db_username", "$db_password") or die("cannot connect");
// Select the database
mysql_select_db("$db_name") or die("cannot select DB");
// Get the login credentials from user
$username = $_POST['username'];
$userpassword = $_POST['password'];
// Secure the credentials
$username = mysql_real_escape_string($_POST['username']);
$userpassword = mysql_real_escape_string($_POST['password']);
// Check the users input against the DB.
$query = "SELECT * FROM test_table WHERE user = '$username' AND password = '$userpassword'";
$result = mysql_query($query) or die("Unable to verify user because " . mysql_error());
$row = mysql_fetch_assoc($result);
if ($row['total'] == 1) {
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response);
}
else {
// username and password not found
// failed
$response["failed"] = 1;
// echoing JSON response
echo json_encode($response);
}
?>
尝试更改以下行,它应该可以工作。正如你描述的那样,我让它发挥作用
1-这里您将获得URL参数并进行清理
$username = $_GET['username'];
$userpassword = $_GET['password'];
$username = mysql_real_escape_string($username);
$userpassword = mysql_real_escape_string($userpassword);
2-在这里,您可以计算有多少行
更改$row=mysql\u fetch\u assoc($result)代码>
to$total\u rows=mysql\u num\u rows($result)代码>
3-在这里检查是否至少有一行
并将if($row['total']==1){
更改为if($total_rows==1){
这将给出输出{“success”:1}
注1:这是为了解决您的请求和问题,但并不意味着总的来说是正确的方法或完美的解决方案
注2:我建议您考虑密码散列,使用post方法代替get,在mysql和输入敏感化的sted中使用mysqli或PDO,而不是使用URL传递用户名和密码。我建议您看看这个,它描述了我在注1中提到的一些事情
您可以创建一个没有MYSQL数据库的登录/注册系统,只需使用.json文件,该系统就可以在没有数据库的情况下运行。它既安全又简单
- 有一个github存储库,您可以看到代码
- 你可以在这里看到完整的文档
请注意,对于HTTP POST,通常会使用表单参数而不是查询字符串参数。@maytham我现在编辑了我的原始代码,以改进功能和安全性,但目前获得了一个error@maytham这是表单:&这是上面生成JSON响应的代码:-我实际上希望做的是omehow安全地将用户名和密码(作为参数)传递到URL>进行MySQL检查以查看用户名/密码是否在数据库中>如果它在数据库中,则应回显JSON“success”字符串,如果它不在数据库中,则为JSON“failed”字符串应该echoed@TobyClench你能准确地复制洞错误内容吗。@maytham输出JSON字符串的PHP脚本没有任何错误;它总是输出JSON错误响应,而不是JSON成功响应,因此(即使用户名和密码在数据库中)它将输出:{“failed”:1}对我来说,即使在做了您建议的更改之后,仍然会导致{“failed”:1}。也许这与行数有关?好的,谢谢,但在输入一些回音(检查查询、结果和行)后,查询是正确的,并且正在将用户名和密码传递到其中(感谢您建议的代码更改);结果在数据库中找到了用户详细信息,并且只返回了一行,这使我相信该行的计数方式有问题。我认为,这意味着我发现了一个问题,即为什么该行总是以失败的方式返回。那么,除此之外,我该如何计算查询所返回的行数呢生成?你的链接应该检查我添加的链接,并尝试下一阶段的工作,你可以了解更多。