这是我的signin.php文件
我想创建一个只有admin(mousoufi)才能进入的页面。 我创建了一个新页面,我想发布只有管理员才能看到的内容。否则我想回应其他用户,他们没有这里的许可。 我只是在管理页面上进行会话?
有什么想法吗?
<?php
$user=$_POST['user'];
$pass=$_POST['pass'];
$con=new mysqli("localhost","root","","3333");
if (!$con)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT username FROM `3333` WHERE password='$pass' AND username='$user'";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
// outputdata of each row
while($row = mysqli_fetch_assoc($result)) {
echo "You are now logged in " . $row["username"]."<br>";
}
}
else {
echo "Wrong Password Try Again"; }
// Set session variables
$_SESSION["username"] = "$user";
$_SESSION["password"] = "$pass";
print_r($_SESSION);
if ("$user"=="mousoufi" AND "$pass"=="1234"){
echo "HELLO Mousoufi ";
}
$con->close();
?>
答案 0 :(得分:1)
如果你想使用会话,你需要在你需要的每一页上启动它们,这就完成了:
session_start();
将它放在php脚本的顶部。
你需要一种方法来区分管理员(如果你将有多个?),但由于你的问题只说一个,这应该适合你:
<?php
// start session
session_start();
// check if username is admin
if($_SESSION['username'] !== 'mousoufi'){
// isn't admin, redirect them to a different page
header("Location: /someotherpage.php");
}
备注强>
3333
并不是最好的,特别是当你把桌子称为同样的东西时...... mysqli_real_escape_string()
。最好是与PDO
或MySQLi Prepared Statements
一起使用。你的脚本错了,严重错误。如果您的用户没有正确登录,请不要设置会话。
if (mysqli_num_rows($result) < 0) {
die("Wrong Password Try Again";);
} else {
// outputdata of each row
while($row = mysqli_fetch_assoc($result)) {
echo "You are now logged in " . $row["username"]."<br>";
$_SESSION['username'] = $row["username"];
// and so on...
}
}
这就是你的块应该是什么样子。