Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Есть ли ошибка в коде?

2.0K
16 июля 2004 года
Yuri Koslow
86 / / 15.03.2004
Есть ли ошибка в коде?
При правельно введенном пароле регистрируется переменная сессии
<?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;
}
}
3.2K
16 июля 2004 года
triptyl
30 / / 16.06.2003
Цитата:
Originally posted by Yuri Koslow
...
$HTTP_SESSION_VARS['vaild_user']=$username;
...



Вместо этого надо бы написать:

 
Код:
$valid_user = $username; // присваиваем переменной $valid_user значение $username
session_register ( "valid_user" ); // регистрируем переменную valid_user в сессии
2.0K
17 июля 2004 года
Yuri Koslow
86 / / 15.03.2004
Цитата:
Originally posted by triptyl


Вместо этого надо бы написать:

 
Код:
$valid_user = $username; // присваиваем переменной $valid_user значение $username
session_register ( "valid_user" ); // регистрируем переменную valid_user в сессии



Да но разве при сипользовании
$HTTP_SESSION_VARS['vaild_user']=$username;
я не регистрирую переменную сессии?
когда ж я работаю с глобальными переменными?
Просто такой способ регистрации переменных сессии я встечал не однократно.
Или может я чего не понимаю?

3.2K
17 июля 2004 года
triptyl
30 / / 16.06.2003
Вот что об этом думает 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.
2.0K
18 июля 2004 года
Yuri Koslow
86 / / 15.03.2004
Цитата:
Originally posted by triptyl
Вот что об этом думает 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[] это длинное название
а то это среднее название, а есть еще короткие названия супер глобальных переменных.

3.2K
18 июля 2004 года
triptyl
30 / / 16.06.2003
translate.ru

Так как PHP должен знать, какие глобальные переменные зарегистрированы как переменные сессии, пользователи должны регистрировать переменные, используя session_register (). Вы можете избежать этого, просто занося в массив $_SESSION.
6.3K
20 июля 2004 года
Silya
22 / / 27.03.2004
Цитата:
Originally posted by Yuri Koslow


Было бы не прлохо все это по русски.
Мои не большине знания англ. позволили мне догадаться что $_SESSION массив где хранятся переменные сессии... вот только
$HTTP_SESSION_VARS[] это длинное название
а то это среднее название, а есть еще короткие названия супер глобальных переменных.



Юрий Козлов, $HTTP_SESSION_VARS[] - это устаревшее название массива $_SESSION.

Советую почитать мануал, где как раз об этом в русской версии написано именно на русском.

ЧИТАЙ МАНУАЛ - там о всех суперглобальных массивах очень хорошо написано

2.0K
21 июля 2004 года
Yuri Koslow
86 / / 15.03.2004
Цитата:
Originally posted by Silya


Юрий Козлов, $HTTP_SESSION_VARS[] - это устаревшее название массива $_SESSION.

Советую почитать мануал, где как раз об этом в русской версии написано именно на русском.

ЧИТАЙ МАНУАЛ - там о всех суперглобальных массивах очень хорошо написано



Но а как же обратная совместимость?
вполне возможно что в 5 версии уже более не используют длинные названия суперглобальных пер.
но в 4 которая стоит у меня поддреживает оба способа.
Конечно откзавшись от такого способа регистрации сессии я смогу пользоваться на прямую именами зарегестрированных переменных,
Тогда какой смысл мне вообще обращаться к $_session?
Просто для мнея остается загадкой почему скрипт не работает, хотя должен.
При попытке писать
$http_session_vars[dd]=$d;
$d=1;
print $d;
все работает,
но почему то не работает когда я использую
$http_session_vars[dd] внутри функции,
хотя супер глобальные переменные должны быть видимы внути ф-ии, или я ошибаюсь?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог