php - 检查用户是否存在
问题描述
我做了很多谷歌搜索并尝试了很多方法,但是在 Mysqli 数据库中检查用户名是否存在不起作用。一切都正确,但即使数据库中有用户名,用户仍在注册。请帮助...我的 php 版本是 7,phpmyadmin 是 5.6。我的代码:-
<?php
session_start();
if (isset($_SESSION['id'])) {
header('Location: user.php');
die();
}
else {
if($_POST['submit']){
$username = strip_tags($_POST['username']);
$email = strip_tags($_POST['email']);
$password = strip_tags($_POST['password']);
$passhash = hash('sha512', $password);
$passhash2 = hash('sha512', $passhash);
$strlen = strlen("$password");
if ($strlen < 10) { {
$lesspass = "Use password of atleast 10 letters";
}
}
else {
$date = date("Y-m-d");
require ('setup.php');
$conn = new mysqli($localhost, $hostuser, $hostpass, $hostdb) or die("conn died");
$query1 = "SELECT * FROM member WHERE username = '$username'";
$result1 = mysqli_query($conn, $query1);
if (mysqli_num_rows($query1) > 0) {
die ("Username in use");
}
else {
$query2 = "SELECT from member WHERE email = $email";
$result2 = mysqli_query($conn, $query2);
if (($result2) > 0) {
$ee = "Email already exists";
}
else {
$query = "INSERT INTO member(username, password, registered, email, activated, status) VALUES('$username', '$passhash2', '$date', '$email', '1', '0')";
$result = mysqli_query($conn, $query);
if($result) {
header('Location: login.php');
}
else {
echo "There was a problem while connecting";
}
}
}
}
}
}
?>
解决方案
我认为错误是您mysqli_num_rows
在查询字符串上使用的。对结果进行操作:
if (mysqli_num_rows($result1) > 0) {
此外,您应该注意 SQL 注入(转义或使用准备好的语句),但这是另一回事。不确定是否strip_tags
足够。
推荐阅读
- swift - ARKit – 为什么不再有“ARPlaneDetection”枚举?
- c++ - 如何从 Windows 中的可执行文件中推断出文件/目录路径?
- excel - How to open a CSV file in excel with arabic in it
- github - 在同一台机器上拥有不同的 GitHub 和 Bitbucket 帐户
- assembly - 装配体文本颜色
- angular - 需要使用角度在 ag-grid 的页脚中显示总值
- file - 文件的实际大小是多少?
- c++ - 我的假设是格式错误的 NDR 下面的代码?但为什么?
- python - 跟踪字典中的键和值
- angular - Angular 6,通过调用Web服务保存数据后,通过新功能将“保存”按钮更改为“部署”按钮