Есть ли ошибка в коде?
При правельно введенном пароле регистрируется переменная сессии
<?php
session_start();
require_once("db_fns.php");
require_once("user_auth_fns.php");
require_once("data_valid_fns.php");
//Объявление коротких имен
$username=$HTTP_POST_VARS['username'];
$passw=$HTTP_POST_VARS['passw'];
//Если пользователь попал сюда со странички login_form.php
if ($username && $passw)
{
//Проверяем что такой логин и пароль сущестуют
//и регестрируем если все ок переменную сессии
if(login($username,$passw))
{
$HTTP_SESSION_VARS['vaild_user']=$username;
}
else
{
print "Данные не верны попробуй еще раз";
exit;
}
}
//Если пользователь зашел сюда с другой страници
check_valid_user();
print "С этой страници пользователь начинает работу";
?>
Эту функцию включаю из файла user_auth_fns.php
function check_valid_user()
// see if somebody is logged in and notify them if not
{
global $HTTP_SESSION_VARS;
if (isset($HTTP_SESSION_VARS['valid_user']))
{
print 'Ваш логин'.$HTTP_SESSION_VARS['valid_user'].'.';
print '
';
}
else
{
// they are not logged in
print 'Вы не прошли аутентификацию.
';
exit;
}
}
...
$HTTP_SESSION_VARS['vaild_user']=$username;
...
Вместо этого надо бы написать:
session_register ( "valid_user" ); // регистрируем переменную valid_user в сессии
Вместо этого надо бы написать:
session_register ( "valid_user" ); // регистрируем переменную valid_user в сессии
Да но разве при сипользовании
$HTTP_SESSION_VARS['vaild_user']=$username;
я не регистрирую переменную сессии?
когда ж я работаю с глобальными переменными?
Просто такой способ регистрации переменных сессии я встечал не однократно.
Или может я чего не понимаю?
If register_globals is enabled, then each global variable can be registered as session variable. Upon a restart of a session, these variables will be restored to corresponding global variables. Since PHP must know which global variables are registered as session variables, users need to register variables with session_register() function. You can avoid this by simply setting entries in $_SESSION.
Вот что об этом думает http://www.php.net/manual/ru/ref.session.php:
If register_globals is enabled, then each global variable can be registered as session variable. Upon a restart of a session, these variables will be restored to corresponding global variables. Since PHP must know which global variables are registered as session variables, users need to register variables with session_register() function. You can avoid this by simply setting entries in $_SESSION.
Было бы не прлохо все это по русски.
Мои не большине знания англ. позволили мне догадаться что $_SESSION массив где хранятся переменные сессии... вот только
$HTTP_SESSION_VARS[] это длинное название
а то это среднее название, а есть еще короткие названия супер глобальных переменных.
Так как PHP должен знать, какие глобальные переменные зарегистрированы как переменные сессии, пользователи должны регистрировать переменные, используя session_register (). Вы можете избежать этого, просто занося в массив $_SESSION.
Было бы не прлохо все это по русски.
Мои не большине знания англ. позволили мне догадаться что $_SESSION массив где хранятся переменные сессии... вот только
$HTTP_SESSION_VARS[] это длинное название
а то это среднее название, а есть еще короткие названия супер глобальных переменных.
Юрий Козлов, $HTTP_SESSION_VARS[] - это устаревшее название массива $_SESSION.
Советую почитать мануал, где как раз об этом в русской версии написано именно на русском.
ЧИТАЙ МАНУАЛ - там о всех суперглобальных массивах очень хорошо написано
Юрий Козлов, $HTTP_SESSION_VARS[] - это устаревшее название массива $_SESSION.
Советую почитать мануал, где как раз об этом в русской версии написано именно на русском.
ЧИТАЙ МАНУАЛ - там о всех суперглобальных массивах очень хорошо написано
Но а как же обратная совместимость?
вполне возможно что в 5 версии уже более не используют длинные названия суперглобальных пер.
но в 4 которая стоит у меня поддреживает оба способа.
Конечно откзавшись от такого способа регистрации сессии я смогу пользоваться на прямую именами зарегестрированных переменных,
Тогда какой смысл мне вообще обращаться к $_session?
Просто для мнея остается загадкой почему скрипт не работает, хотя должен.
При попытке писать
$http_session_vars[dd]=$d;
$d=1;
print $d;
все работает,
но почему то не работает когда я использую
$http_session_vars[dd] внутри функции,
хотя супер глобальные переменные должны быть видимы внути ф-ии, или я ошибаюсь?