PDA

Просмотр полной версии : Вопрос по сессиям в Php4


fdds
16.06.2008, 13:57
Пишу тут курсовую. Есть вопрос. У сайта имеется привелигированные пользователи, у которых ест возможность администрирования сайта, чтобы войти в режиме такого пользователя нужно запустить скрипт авторизации (например auth.php) и ввести данные в форму. После проверки имени пользователя и пароля данному пользователю должны быть открыты доп. возможности на всех страницах (а именно формы для администрирования сайта).

Вопрос такой:
1) Когда и где надо вызывать session_start() - после нажатия кнопки входа в модуле auth.php, тогда как проверять, какой пользователь вошел, привелигированный или нет.

2) Или же на каждой странице в начале скрипта, тогда нужно будет создать переменную массива $_SESSION, в которой и будет граниться, привелигированный пользователь или нет. Тогда в скрипте auth.php надо будет изменить знач. этой переменной.

Какой способ более правильный и/или чаще применяется на практике.

PHP_master
02.04.2011, 18:20
1) после <?php.... в самом начале файла
2) нет не обязательно

Азат00
28.06.2011, 01:02
после <?php.... в самом начале файла

Не обязательно, иногда может быть лучше проверить куку пхпсессид, если она есть включить и проверять _Сессион. Ну если не обязательно чтобы без кук работало, но нужно, чтобы не включалась сессия всем подряд.

function login_form($error='') {
header ("HTTP/1.1 403 Forbidden");
require('login-form.php');
die(); /*форма и скрипт стоп*/
}
function uvalid($user,$login){
if($uid){/*юзер найден*/
session_start();
$_SESSION['admin']=$uid;
header("Location: Куда надо после логина");
exit;
} else {
login_form('Ooops не совпало')
}
}
function _v($p){/*контроль входных данных*/}

$r=null;
$r=isset($_POST['user'])&&isset($_POST['login'])?uvalid(_v($_POST['user']),_v($_POST['login'])):login_form('Нет параметров');/*пришел пароль - проверка, нет - форма */
$r=empty($_COOKIE['PHPSESSID'])? login_form():session_start(); /*Чтобы не включать сессии для тех кто не логинится на сайте*/
$r=empty($_SESSION['admin'])? login_form():$_SESSION['admin'];
if(!$r){die('Что то не так');}

Fishlike
16.07.2011, 02:14
Согласен с предыдущим оратором. Но это только в том случае, если вы не будете в сессии хранить данные не привиллигированных пользователей. ;)