Php 我的会话忽略数据库结果而不工作
首先,我必须原谅我的英语不好。我需要有关login.php代码的帮助,因为我正在通过会话执行权限系统,但这个名为“$\u session['perms]”的会话不接受数据库值。我花了几个星期寻找答案,但没有成功。所以我在这里呼吁 这是我的登录代码:Php 我的会话忽略数据库结果而不工作,php,session,user-permissions,Php,Session,User Permissions,首先,我必须原谅我的英语不好。我需要有关login.php代码的帮助,因为我正在通过会话执行权限系统,但这个名为“$\u session['perms]”的会话不接受数据库值。我花了几个星期寻找答案,但没有成功。所以我在这里呼吁 这是我的登录代码: <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <titl
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title></title>
<style>
.odstavec {
margin-top: 0px;
margin-bottom: 0px;
}
</style>
<?php
$dbc = mysqli_connect('localhost','root','root') or
die('could not connect: '. mysqli_connect_error());
mysqli_select_db($dbc, 'loginsystem') or die('no db connection');
session_start();
if(isset($_POST['go'])){
$usr = mysqli_real_escape_string($dbc, htmlentities($_POST['u_name']));
$psw = ($_POST['u_pass']);
$q = "SELECT * FROM members WHERE username='$usr' AND password='$psw' ";
$res = mysqli_query($dbc, $q);
if(mysqli_num_rows($res) == 1){
$_SESSION['log'] = 'in';
$_SESSION['username'] = $_POST['u_name'];
$_SESSION['perms'] = "SELECT $usr FROM members WHERE perms='".$_SESSION['perms']."'";
header('location:novinky.php');
}
elseif(!$_POST['u_name'] || !$_POST['u_pass']){
$error = 'Všechna pole musí být vyplněná!';
}else{ //create an error message
$error = 'Chybné jméno nebo heslo. Prosím zkuste to znovu';
}
} //end of isset go
?>
</head>
<body>
<form method="post" action="#">
<p class="odstavec"><label for="u_name">Uživatlské jméno:</label></p>
<p class="odstavec"><input type="text" name="u_name" value=""></p>
<p class="odstavec"><label for="u_pass">Heslo:</label></p>
<p class="odstavec"><input type="password" name="u_pass" value=""></p>
<p><button type="submit" name="go">Přihlásit</button></p>
</form>
<!-- A paragraph to display eventual errors -->
odstavec先生{
边际上限:0px;
边缘底部:0px;
}
数据库中的信息是否正确?为了确保改变
$res = mysqli_query($dbc, $q);
到
echo$usr.“
”;
echo$psw.“
”;
echo$q;
退出();
$res=mysqli_查询($dbc,$q);
我认为正在发生的是,您的mysqli\u real\u escape\u字符串和htmlentities正在更改用户字符串,使其不再匹配
如果不明显,请尝试在命令行或phpmyadmin中运行$q,并查看是否会弹出任何错误
正如orique所说,您需要清理您的密码。在$psw=($\u POST['u pass'])上小心SQL注入代码>我做了更多的研究。我需要$\u会话['perms']从数据库中获取值,无需验证。。。
$res = mysqli_query($dbc, $q);
echo $usr."<br/>";
echo $psw."<br/>";
echo $q;
exit();
$res = mysqli_query($dbc, $q);