Форум: "Прочее";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизЛогин и пароль Найти похожие ветки
← →
num (2006-09-08 08:01) [0]Добрый день! При авторизации пользователь вводит свои логин и пароль в формы, затем значения текстовых полей присваиваются переменным $PHP_AUTH_USER и $PHP_AUTH_PW. Но вот беда, если вызвать эти переменные с других скриптов на других страницах, то вылетает ошибка, что переменные не определены.С другой стороны во всех учебниках указано, что данные переменные доступны со всех страниц в одном и том же окне браузера. Что я делаю не так?
← →
SerJaNT © (2006-09-08 08:04) [1]нужно эти переменные объявить глобальными.
global $PHP_AUTH_USER, $PHP_AUTH_PW;
← →
SerJaNT © (2006-09-08 08:06) [2]Хотя вот так должно работать:
1.php<?php
$a = "preved krozavcheg";
?>
2. php<?php
include "1.php";
print $a; // выведет preved krozavcheg
?>
← →
SerJaNT © (2006-09-08 08:10) [3]
> С другой стороны во всех учебниках указано, что данные переменные
> доступны со всех страниц в одном и том же окне браузера.
>
В пределах одного скрипта и если другие скрипты подгружать через inluce, например.
← →
McSimm © (2006-09-08 10:29) [4]
> присваиваются переменным $PHP_AUTH_USER и $PHP_AUTH_PW
лучше использовать $_SERVER["PHP_AUTH_USER"]
> если вызвать эти переменные с других скриптов на других
> страницах
Домен должен быть тот же.
← →
Алхимик © (2006-09-08 10:39) [5]Может воспользоваться механизмом сессий?
http://www.codenet.ru/webmast/php/PHP-Sessions.php
вкраце:
index.php<?
other.php
session_start();
//... авторизация ...
$_SESSION["PHP_AUTH_USER"] = ...
$_SESSION["PHP_AUTH_PW"] = ...
?><?
session_start();
echo $_SESSION["PHP_AUTH_USER"];
echo $_SESSION["PHP_AUTH_PW"];
?>
← →
num (2006-09-09 13:19) [6]
> SerJaNT © (08.09.06 08:04) [1]
> нужно эти переменные объявить глобальными
Допустим, я не хочу, чтобы пользователь оставлял комментарии не будучи авторизованным, т.е. на странице с выводом текста,статьи я проверяюif ((isset($PHP_AUTH_USER))AND(isset($PHP_AUTH_PW)))
{
вывожу форму для комментария
}
Тут я просто проверил переменные на существование.Понятно, что когда пользователь не автор., то форма выводиться не должна.Однако, когда пользователь автор., объявились глобальные переменные, то должно же вроде работать, но нет...
← →
Другой © (2006-09-09 13:25) [7]Я бы тоже пригледелся к [5], т.к. сессии не зря придуманы.
← →
Другой © (2006-09-09 13:27) [8]Тем более, что создав сессию уже можно не проверять пользователя и пароль.
← →
Другой © (2006-09-09 13:27) [9][8] в других сриптах.
:)
← →
SerJaNT © (2006-09-09 13:55) [10]
> объявились глобальные переменные, то должно же вроде работать,
> но нет...
Если переменная ДО объявления глобальной была пустой то ничего выводиться не будет. Пустая переменная == false. Поэтому прежде чем использовать глобальную переменную ее нужно проверить а не пустая ли она.
Когда юзер авторизировался, пишешь в сессию что-то вроде$_session["logged"]=true;
а в том файле где проверяешь,session_start();
if ($_session["logged") {
echo "юзер вошел";
} else {
echo "сначала авторизируйся";
}
← →
num (2006-09-09 16:32) [11]мммм...как бы обяснить....
Добустим , в скрипте авторизации пишу:if ((isset($log))and(isset($pass)))
{
session_start();
session_register("auth");
$auth=1;
}
А на главной странице проверяю: если auth=1, то все ок и т.д.
Пользователь открывает браузер, заходит на главную страницу, а тут в скрипте идет проверка: если auth=1 и т.д. Но ведь он еще не авторизовывался, сессии не открывались и переменная auth не существует, пока он не автори-ся....
Если в начале главной странице присваивать auth=0, то все пройдет корректно, потом пользователь авто-ся,но когда зайдет на главную auth опять обнулится....вот это я хочу уточнить....
← →
num (2006-09-09 16:51) [12]Все разобрался,блин, isset же есть.... надо идти спать, тем более ночной ливень к этому располагает...Спасибо всем....
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c