2011-07-28 126 views
4

在确保我的工作我的站点的管理员区的尝试由包含限制直接的页面访问

if (isset($_POST['password']) && isset($_POST['userName'])) { 
     if($_POST['password']==$pass && $_POST['userName']==$username) 
     { 
      header('Location: admin.php') ; 
     } 

这重定向到一个文件在同一文件夹名为admin.php的一个的index.php 。问题是我可以访问这个文件,如果我写localhost/folder/admin.php。请告诉我如何限制直接访问此页面。访问它的唯一方法应该是在用户名和密码后从index.php中获取。

回答

6

设置会话变量,并检查它everytimes有人访问admin.php的

<?php 
    if (isset($_POST['password']) && isset($_POST['userName'])) { 
     if ($_POST['password'] == $pass && $_POST['userName'] == $username) { 
      if (!session_id()) 
       session_start(); 
      $_SESSION['logon'] = true; 

      header('Location: admin.php'); 
      die(); 
     } 
?> 

//admin.php 

if (!session_id()) session_start(); 
if (!$_SESSION['logon']){ 
    header("Location:index.php"); 
    die(); 
} 
4

设置表示用户已成功登录的会话值,在每个需要保护的页面上检查该值,如果未设置该值,则重定向至登录。

7

你应该看看PHP会议。您可以在该重定向文件中设置会话变量“isLogged”,然后在admin.php中检查该会话变量是否已注册,如果没有重定向到登录页面!

session_start(); 
if (isset($_POST['password']) && isset($_POST['userName'])) { 
     if($_POST['password']==$pass && $_POST['userName']==$username) 
     { 
      header('Location: admin.php') ; 
      $_SESSION['isLogged'] = true; 
     } 

admin.php的

session_start(); 
if(!$_SESSION['isLogged']) { 
    header("location:login.php"); 
    die(); 
} 

注:在session_start();必须在$ _SESSION全局可用之前调用。