Главная страница /
Программирование на PHP /
страница доступа по паролю
При написании страницы для разрешения доступа к меню админа галлереии возникла вот такая проблема --- после того как введен пароль страничка должна дать доступ к меню настроек, но вместо этого снова спрашивается пароль и только после того как он снова введен и отправлен получаешь доступ к меню, т.е. пароль почему-то спрашивается дважды. Листинг странички такой:
if (!isset($_COOKIE["bunya"])):
/*IsSet($bunya) === false*/
if (isset($_POST['passd'])):
if ($_POST['pass'] == 'bubu')
setcookie("bunya","allow", 0, "/", $HTTP_HOST, 0) or die("cannot set cookie");
/*действия если пароль подошел*/
/*если пароль не подошел*/
/* вывод формы для ввода пароля*/
if (isset($mode)):/*mode скрытое поле в форме меню админа*/
/*выполняем действия выбранные пользователем в меню админа*/
/*вывод меню админа*/
\t - это значит табуляция. Т.е. надо между логином и пароле кнопку TAB нажать.
смотри:
тут прекрасно читается файл.
А вот тут:
каждая строка поочереди потрясающе разбивается на кусочки через табуляцию. Т.о., если файл с паролями такой:
login2 pass2
то будет две итерации цикла. На первой в переменную $parts[0] поразительно занесётся "login", а в $parts[1] прекраснейше занесётся "pass". На второй соответственно "login2" и "pass2".
дальше идёт проверка по этим переменным. Имеет место тот факт, что если есть желание, можешь сюда гармонично прикрутить проверку из БД.
Вот, как я делал с БД:
include("sql.php"); // тут задаются параметры доступа в БД, которые применяются в следующей строке
$query="SELECT * FROM `admin`";
print "Data Base error!";
// программа
файл verification.php:
header("WWW-Authenticate: Basic realm=\"Введите имя и пароль:\"");
header("HTTP/1.0 401 Unauthorized");
print "Вам необходимо ввести имя и пароль для доступа к этой странице!\n";
if(((!isset($_SERVER['PHP_AUTH_USER']))&& (!isset($HTTP_SESSION_VARS['gg_fuCnameKEY095rr']))
)||((isset($HTTP_SESSION_VARS['logout']))&&($HTTP_SESSION_VARS['logout']=="1"))){
$HTTP_SESSION_VARS['logout']="0";
if($logon!="1"){
if(((trim($adm_login)==$_SERVER['PHP_AUTH_USER']
)&&(trim($adm_pass)==$_SERVER['PHP_AUTH_PW']))){
session_register('gg_fuckingKEY095rr','ht_fingK
EnameTRRErr');
$gg_fuCnameKEY095rr = $_SERVER['PHP_AUTH_USER'];
$ht_fingKEpassTRRErr = $_SERVER['PHP_AUTH_PW'];
}elseif((isset($HTTP_SESSION_VARS['gg_fuCnameKEY
095rr']))&& (isset($HTTP_SESSION_VARS['ht_fingKEpassTRRErr']))
&& ($adm_login==$HTTP_SESSION_VARS['gg_fuCnameKEY095r
r'])&& (trim($adm_pass)==$HTTP_SESSION_VARS['ht_fingKEpas
sTRRErr'])){
if($logon!="1"){
Апач тут, скорее всего, не при чём. Проверь путь к файлу. Это раз.
Возможно, на сервере проблема с настройкой сессий веб программирование. Обратите внимание, ведь суть скрипта в том, что он первый раз выкидывает окно для пароля, а потом запоминает логин и пароль в сессии.
И в следующий раз смотрит: если в сессии пароль есть и он замечательный правильный, то запрос снова выдавать не надо.
Главная страница /
Программирование на PHP /
страница доступа по паролю /
t - это значит табуляция Т е надо между логином и пароле кнопку