2013-02-17 2 views
0

На данный момент у меня есть чрезвычайно простая система входа в систему администратора. Я могу войти в систему через мою страницу admin_login.php, у которой есть скрипт с моей страницы login.php. Я могу обновлять записи из admin_control_panel.php. Моя основная забота заключается в том, что каждый может напечатать эти URL прямо в адресной строке и обойти процедуру входа в систему.Необходимое руководство по перенаправлению пользователя, если он не вошел в систему на панели администратора

Мой код на данный момент не основан на безопасности (я просто пытаюсь получить все основные функциональные возможности и функции, и тогда я сосредоточусь на безопасности).

Я знаю, что мне нужно использовать сеансы для отслеживания входа пользователя или нет, но я немного запутался относительно того, где я буду выполнять этот сеанс.

Мои вопросы: на каких страницах я включаю код ?, где на страницах я включаю эти сеансы? и что я должен включить в эти файлы?

То, что я хочу, чтобы иметь возможность перенаправить пользователя на страницу входа в систему, если они не вошли в систему.

admin_login.php

<?php 

$dbhost = 'x'; 
$dbuser = 'x'; 
$dbpass = 'x'; 

$con = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('x'); 

?> 

<html> 

<head> 
<link rel="stylesheet" type="text/css" href="css/master.css"> 
</head> 

<body> 

<form method="post" action="login.php"> 

User:<input name="username" type="text"> 
Pass:<input name="password" type="password"> 

<input name="submit" type="submit" value="Submit"> 

</form> 

</body> 

</html> 

login.php

<?php 

$dbhost = 'x'; 
$dbuser = 'x'; 
$dbpass = 'x'; 

$con = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('x', $con); 

$query = "SELECT username FROM members ". 
     "WHERE username=\"$_POST[username]\" ". 
     "AND password = \"$_POST[password]\""; 

$result = mysql_query($query, $con);   

mysql_data_seek($result, 0); 

if (mysql_num_rows($result) == 0) 
    header("Location: admin_login.php"); 
else 
    header("Location: admin_control_panel.php"); 
?> 

admin_control_panel.php

<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Untitled 3</title> 
</head> 

<body> 

<?php 

include('./upload.html'); 

?> 

</body> 

</html> 

Спасибо заранее.

ответ

1

Лучший способ сделать это с помощью sessions. В login.php сделать что-то вроде этого

if (mysql_num_rows($result) == 0) { 
    header("Location: admin_login.php"); 
} else { 
    header("Location: admin_control_panel.php"); 
    session_start(); 
    $_SESSION['user'] = $_POST['username']; 
} 

Сейчас в admin_control_panel.php в верхней части файла, просто добавьте этот PHP код, чтобы проверить, если $ _SESSION [ «пользователя»] существует.

<?php 
if (! isset($_SESSION['user'])) { 
    header("Location: admin_login.php"); 
} 
?> 

В основном с помощью этого кода вы создадите сеанс с пользовательскими данными, если логин будет правильным. Если это не так, он по умолчанию перенаправляется на страницу входа. Теперь, когда кто-то пытается получить доступ к странице admin_control_panel, мы сначала проверим, установлен ли сеанс. Если это правда, он может получить доступ к странице, если нет, он будет перенаправлен на логин.

Для получения дополнительного чтения о сессии: PHP.net Session manual и w3schools.com Session manual

* Примечание. Чтобы выйти из системы, вы должны уничтожить сеанс, чтобы использовать функцию session_destroy();.

0

Включите session_start(); в верхней части вашего сценария, а затем вы могли бы сделать что-то вроде этого:.

if (mysql_num_rows($result) == 0){ 
    header("Location: admin_login.php"); 
} else { 
    $_SESSION['permission'] = 'admin'; 
    header("Location: admin_control_panel.php"); 
} 

Затем необходимо реализовать функцию, чтобы проверить, если администратор вошел в

function verifyAdmin() { 
    if(!isset($_SESSION['permission']) || $_SESSION['permission'] != 'admin'){ 
     header("Location: admin_login.php"); 
    } 
} 

Теперь в верхней части каждой страницы администратора просто добавьте verifyAdmin();. Не забудьте добавить session_start(); в начало любой страницы, где используются сеансы.

Смежные вопросы