$sql = "SELECT j_one, j_two, j_three FROM member.info WHERE username='$username' AND pwd='$pwd'"; $result = $conn->query($sql); // 处理查询结果 if ($result->num_rows > 0) { // 如果找到了记录,提取 j1, j2, j3 的值 $row = $result->fetch_assoc(); $j1 = $row['j1']; $j2 = $row['j2']; $j3 = $row['j3']; // 发送结果给客户端 echo json_encode(array("success" => true, "j1" => $j1, "j2" => $j2, "j3" => $j3)); }
时间: 2023-05-22 07:03:24 浏览: 72
这是一段 PHP 代码,使用 SELECT 查询语句从 member.info 表中查询 username 和 pwd 字段匹配的记录,并提取 j_one、j_two 和 j_three 字段的值。如果找到了记录,将 j1、j2 和 j3 的值作为 JSON 格式的响应内容发送给客户端。
相关问题
<?php $code=0; $data=[]; $msg=["注册成功","注册失败"]; include('conn.php'); include('function.php'); $userName = $_GET["userName"]; $userPwd = $_GET["userPwd"]; if($userName==""||$userPwd==""){ die(0); } $sql = "select * from users where user_name = ?"; $rs=mysqli_query($conn,$sql); $num = mysqli_num_rows($rs); if($num>0){ echo "用户名已存在"; } else{ $sql1 = "insert into users (user_name,user_pwd) values(?,?)"; $rs1=mysqli_query($conn,$sql1); if($rs){ $code = 1; } } echo getApiResult($code,$data,$msg); ?>该段代码是否有问题
这段代码存在一些问题,具体如下:
1. `$rs=mysqli_query($conn,$sql);` 这一行代码执行的时候并没有将 `$userName` 绑定到 SQL 语句中,应该使用预处理语句。应该将此行代码修改为 `$stmt = mysqli_prepare($conn, $sql)`,然后使用 `mysqli_stmt_bind_param` 绑定参数。
2. `$rs=mysqli_query($conn,$sql);` 返回的是执行结果,而不是查询结果。应该使用 `$rs = mysqli_stmt_execute($stmt)` 执行预处理语句,然后使用 `mysqli_stmt_store_result` 存储结果集。
3. `if($rs){ $code = 1; }` 这一行代码中的 `$rs` 应该修改为 `$rs1`,因为 `$rs` 是查询结果,而 `$rs1` 是插入操作的结果。同时,因为 `$rs1` 返回的是布尔值,应该修改为 `if($rs1){ $code = 1; }`。
以下是修改后的代码:
```php
<?php
$code = 0;
$data = [];
$msg = ["注册成功", "注册失败"];
include('conn.php');
include('function.php');
$userName = $_GET["userName"];
$userPwd = $_GET["userPwd"];
if ($userName == "" || $userPwd == "") {
die(0);
}
$sql = "SELECT * FROM users WHERE user_name = ?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "s", $userName);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$num = mysqli_stmt_num_rows($stmt);
if ($num > 0) {
echo "用户名已存在";
} else {
$sql1 = "INSERT INTO users (user_name,user_pwd) VALUES (?,?)";
$stmt1 = mysqli_prepare($conn, $sql1);
mysqli_stmt_bind_param($stmt1, "ss", $userName, $userPwd);
$rs1 = mysqli_stmt_execute($stmt1);
if ($rs1) {
$code = 1;
}
}
echo getApiResult($code, $data, $msg);
?>
```
请注意,上述代码仅仅是一个简单的示例,如果需要用于实际项目中,还需要进行更多的安全和错误处理。
帮我优化这段代码,使其可以成功实现管理员和普通用户登录<?php //数据库连接 require_once 'connect.php'; //从登录页接受来的数据 $name=$_POST['username']; $pwd=$_POST['password']; session_start(); $_SESSION['username'] = $username; $_SESSION['user_type'] = $row['user_type']; $sql="select id,username,password from user where username='$name' AND password='$pwd';"; $result=mysqli_query($conn,$sql); $row=mysqli_num_rows($result); if(!$row){ echo "<script>alert('密码错误,请重新输入');location='login.html'</script>"; } else{ // 跳转到相应的页面 if ($row['user_type'] == 'admin') { header('Location:zsgc.php'); } else { header("refresh:3;url='welcome.php'"); } }
这段代码有一些问题,下面是改进的建议:
1. 首先,需要在接受到数据之前对数据进行安全过滤,避免 SQL 注入攻击。可以使用 mysqli_real_escape_string 函数来实现。
2. 在判断用户是否存在时,应该使用 mysqli_fetch_assoc 函数来获取查询结果。如果查询结果为空,则返回错误信息。
3. 在设置 session 变量时,应该使用正确的变量名,即 $name 而不是 $username。
4. 在跳转页面时,应该使用 exit 函数来避免后续代码的执行。
下面是代码的改进版本:
```
<?php
// 数据库连接
require_once 'connect.php';
// 从登录页接受来的数据
$name = mysqli_real_escape_string($conn, $_POST['username']);
$pwd = mysqli_real_escape_string($conn, $_POST['password']);
// 查询用户是否存在
$sql = "SELECT id, username, user_type FROM user WHERE username='$name' AND password='$pwd';";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
if (!$row) {
// 错误处理
echo "<script>alert('密码错误,请重新输入');location='login.html'</script>";
} else {
// 设置 session 变量
session_start();
$_SESSION['username'] = $name;
$_SESSION['user_type'] = $row['user_type'];
// 跳转到相应的页面
if ($row['user_type'] == 'admin') {
header('Location:zsgc.php');
exit();
} else {
header("refresh:3;url='welcome.php'");
exit();
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)