Автор Тема: Variables  (Прочитано 3199 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kuulest

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Variables
« : 10 Апреля 2002, 12:12:06 »
Privet vsem!
Mne interestno kto kak peredayet peremenniye mejdu scriptami.
Ya obichno delayu sleduyushim obrazom:

1st script:
$o_vars=array(\'var1\'=>\'value1\',\'var2\'=>\'val2\');//itd
$query_str=urlencode( serialize($o_vars)  );
/*Dalee vozmojni varianti no ya obichno prosto kleyu znachenie $query_str k url(chto estestvenno skazivaetsya na vneshnem vide etogo neschastnogo url), libo peredayu cherez hidden fields.
*/
?>

2nd script:
if (is_string(urldecode($QUERY_STRING))){
   extract( unserialize(urldecode($QUERY_STRING) ) );
}
?>

V obshem, v zavisimosti ot situazii ya ispolzuyu hidden fields, script prevedenniy vishe, libo sessii. Mne bilo bi interestno uznat kak eto delayut drugie. Esli mojno to jelatelno privodite kod (hotya bi psevdokod).

Vsem horoshego dnya,
Stay Kuul.
I bet you knew it !!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Variables
« Ответ #1 : 10 Апреля 2002, 18:23:50 »
Лучший вриант (ИМХО) это сессии. Поскольку данные полученные из сессии можно считать безопасными (ИМХО), если перед записью в сессию они были проверены.
А данные полученные из скрытых полей или как в примере приведенном выше нужно в каждом скрипте проверять.

На phpclub как-то Dima предлагал добавить в скрытое поле  в котором будет хеш суммы всех передаваемых переменных и в скрипте проверять:

if (md5($a.$b.$c) == $hash) { echo "все нормально";}

 Идея конечно интерсная, но что будет если взломщик узнает, что используется такой метод?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Variables
« Ответ #2 : 11 Апреля 2002, 01:01:16 »
Макс прав, необходимо использовать сессии.
То есть, грубо говоря, хранить информацию не у пользователя, а на сервере.

Макс, что если не использовать md5, а шифровать относительно какого-то жестко заданного ключа на сервере?
с уважением,
магистр белой магии.

Оффлайн Fury

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 64
  • +0/-0
  • 0
    • Просмотр профиля
Variables
« Ответ #3 : 11 Апреля 2002, 14:00:17 »
Я использую сессии.
Сначала unset всем нужным переменным, а потом их значения из сессии вынимаю.
Рыжая бестия

Оффлайн FILA

  • кендер
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 2
    • Просмотр профиля
Variables
« Ответ #4 : 11 Апреля 2002, 14:21:58 »
Fury , и при этом register_globals=Off  ???
И вечный бой, покой нам только снится...

Оффлайн Fury

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 64
  • +0/-0
  • 0
    • Просмотр профиля
Variables
« Ответ #5 : 11 Апреля 2002, 15:13:03 »
FILA
register_globals=On
Рыжая бестия

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Variables
« Ответ #6 : 11 Апреля 2002, 16:13:29 »
Fury
Цитировать
Сначала unset всем нужным переменным, а потом их значения из сессии вынимаю.

ИМХО лучше сделать один массив $sess и в него все переменные записывать:

unset($sess);

$sess=array();
$sess[\'login\']=$login;
$sess[\'usert_type\']=$user_type;

session_register(\'sess\');


Dm
Цитировать
Макс, что если не использовать md5, а шифровать относительно какого-то жестко заданного ключа на сервере?
Да, наверное это будет безопаснее.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Variables
« Ответ #7 : 12 Апреля 2002, 00:00:51 »
кстати, иногда удобно задать register_globals=off в .htacess как параметр php. Лишние созданные переменные просто бесят.
Иногда охота написать:
foreach($HTTP_GET_VARS as $key => $val) unset($$key);
foreach($HTTP_POST_VARS as $key => $val) unset($$key);
чтоб ничего лишнего скрипту не передали! :)
с уважением,
магистр белой магии.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28