我如何限制对页面的访问?
How do i write restrict access to a page?
我编写了自定义登录脚本供用户登录到主控制页面。我发现即使用户没有登录,他们仍然可以访问主控件,我希望有人帮我写一个 restrict access to page().
请查看我的 php 登录脚本,并根据该代码帮助我编写对主控制页面的限制访问。假设我的主控制页面是:cecontrolpage.php
我知道我们对此使用了 $_SESSION,但我对此知之甚少。
这是我的 login.php 代码,运行良好:
<?php
Session_start();
$Email = $_POST["email"];
$Password = $_POST["password"];
$cn = "localhost";
$db_username = "root";
$pas = "***";
$db_name = "cemembers";
//Open a connection to a MySQL Server
if ($Email && $Password) {
$connect = mysqli_connect($cn, $db_username, $pas, $db_name) or die("Could not connect to database");
//sending MySqli query
$query = mysqli_query($connect, "SELECT * FROM users WHERE Email= '$Email'");
$numrows = mysqli_num_rows($query);
//After PHP declaration we are going to create index file[form]
if ($numrows !== 0) {
while ($row = mysqli_fetch_array($query)) {
$dbEmail = $row["Email"];
$dbPassword = $row["Password"];
}
if ($Email == $dbEmail && $Password == $dbPassword) {
header("location:ce membership birthday system control_pannel.php");
@$_SESSION("Email") == $Email;
} else
header("location:index.php?login_attempt=1");
} else
header("location:index.php?login_attempt=2");
} else
header("Location:index.php?login_attempt=0");
?>
有人可以帮我写 php 代码来限制对 cecontrol.php 的访问吗??
请逐步对每个部分进行 php 评论。
首先你必须在从数据库验证后在会话中保存用户值,比如
$_SESSION['username'] = "name";
$_SESSION['user_id'] = 1;
function check_session() {
session_start();
if ($_SESSION['user_id']=='')
{
// redirect to login
}
}
在您想要限制访问的每个页面上,您可以调用 check_session()
。
首先你需要检查用户是否登录:
您可以通过检查会话是否已设置来做到这一点。
//Check if the user is logged in
function userlogged_in()
{
return(isset($_SESSION['userid']))?true:false;
}
然后您需要将用户重定向到一个页面,该页面显示访问权限未被授权,他们需要登录才能查看该页面:
您可以通过检查 userlogged_in 函数返回的是真还是假来执行此操作
function user_restricted()
{
if (userlogged_in()=== false)
{
header('Location: permission.php ');
exit();
}
}
然后您需要在每个页面上调用 user_restricted() 函数,就在开始会话之后。
我编写了自定义登录脚本供用户登录到主控制页面。我发现即使用户没有登录,他们仍然可以访问主控件,我希望有人帮我写一个 restrict access to page().
请查看我的 php 登录脚本,并根据该代码帮助我编写对主控制页面的限制访问。假设我的主控制页面是:cecontrolpage.php
我知道我们对此使用了 $_SESSION,但我对此知之甚少。
这是我的 login.php 代码,运行良好:
<?php
Session_start();
$Email = $_POST["email"];
$Password = $_POST["password"];
$cn = "localhost";
$db_username = "root";
$pas = "***";
$db_name = "cemembers";
//Open a connection to a MySQL Server
if ($Email && $Password) {
$connect = mysqli_connect($cn, $db_username, $pas, $db_name) or die("Could not connect to database");
//sending MySqli query
$query = mysqli_query($connect, "SELECT * FROM users WHERE Email= '$Email'");
$numrows = mysqli_num_rows($query);
//After PHP declaration we are going to create index file[form]
if ($numrows !== 0) {
while ($row = mysqli_fetch_array($query)) {
$dbEmail = $row["Email"];
$dbPassword = $row["Password"];
}
if ($Email == $dbEmail && $Password == $dbPassword) {
header("location:ce membership birthday system control_pannel.php");
@$_SESSION("Email") == $Email;
} else
header("location:index.php?login_attempt=1");
} else
header("location:index.php?login_attempt=2");
} else
header("Location:index.php?login_attempt=0");
?>
有人可以帮我写 php 代码来限制对 cecontrol.php 的访问吗??
请逐步对每个部分进行 php 评论。
首先你必须在从数据库验证后在会话中保存用户值,比如
$_SESSION['username'] = "name";
$_SESSION['user_id'] = 1;
function check_session() {
session_start();
if ($_SESSION['user_id']=='')
{
// redirect to login
}
}
在您想要限制访问的每个页面上,您可以调用 check_session()
。
首先你需要检查用户是否登录: 您可以通过检查会话是否已设置来做到这一点。
//Check if the user is logged in
function userlogged_in()
{
return(isset($_SESSION['userid']))?true:false;
}
然后您需要将用户重定向到一个页面,该页面显示访问权限未被授权,他们需要登录才能查看该页面:
您可以通过检查 userlogged_in 函数返回的是真还是假来执行此操作
function user_restricted()
{
if (userlogged_in()=== false)
{
header('Location: permission.php ');
exit();
}
}
然后您需要在每个页面上调用 user_restricted() 函数,就在开始会话之后。