Народ подскажите где ошибка или может дадите свой вариант
я сделал админку в начале каждого ее файла поcтавил код
<? include(lock.php);?>
Файл lock.php выглядет так
<?php
include("blocks/bd.php");
if (!isset($_SERVER['PHP_AUTH_USER']))
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
else {
if (!get_magic_quotes_gpc()) {
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}
$query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
if (!$lst)
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
if (mysql_num_rows($lst) == 0)
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
$pass =@mysql_fetch_array($lst);
if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
}
?>
таблицу в базе завел туда записал user Иpass
но при попытке входа хоть я и ввожу правильные данные все равно опять открывается окно авторизации а не нужные страницы
подскажите где ошибка или мож что свое посоветуете попроще?
10 июля 2009 в 9:03
А вот такой
<?php
session_start();
//Поключаем конфиг здесь имена переменных команд подключения к базе
include("config.inc.php");
//Необходимо подключиться к БД
$link = mysql_сonnect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
//Если нет сессий
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
//Если кнопка не нажата, отображаем форму
if(!$_POST['do']){
echo '<form name="1" action="" method="post">
<input name="login" type="text" value=""> <br/>
<input name="password" type="password" value=""> <br/>
<input name="do" type="submit" value="Войти">
</form>';
}
//Если кнопка нажата
if($_POST['do']) {
//Проверяем данные
$login = $_POST['login'];
$upass = $_POST['password'];
if($login !='' AND $upass !='') {
//Создаем запрос
$q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."' AND status=1");
//Проверяем существует ли хоть одна запись
if(mysql_num_rows($q1)===1) {
//Если есть, то создаем сессии и перенаправляем на эту страницу
$r=mysql_fetch_array($q1);
$_SESSION['user'] = $r['nick'];
$_SESSION['password'] = $r['password'];
$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));
@Header("Location: index.php");
}
else {echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}
}
}
else {echo 'Введите данные';}
}
else {
$q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");
if(@mysql_num_rows($q2)==1){
$r2 = @mysql_fetch_array($q2);
echo 'Вы: '.ucfirst($r2['nick']).'<br/>';
echo '<a href="index.php">главная</a> ';
echo '<a href="index.php?page=выфвффывф">ывывфывфыв</a><br/>';
if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("tpl/default.php");}
echo '<br/><br/><a href="index.php?exit=1">выход</a>';
}
}
if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: index.php");}
?>
Здесь авторизованный пользователь имеет доступа, а не нет
Почти тож самое немного может под своё пережедаешь
10 июля 2009 в 9:01
У меня вечная проблемма с кавычками, поэтому сужу по себе, я бы тут заострил внимание
$query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";