Forum Webscript.Ru

Программирование => PHP => Тема начата: Kuulest от 10 Апреля 2002, 12:12:06

Название: Variables
Отправлено: Kuulest от 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.
Название: Variables
Отправлено: Макс от 10 Апреля 2002, 18:23:50
Лучший вриант (ИМХО) это сессии. Поскольку данные полученные из сессии можно считать безопасными (ИМХО), если перед записью в сессию они были проверены.
А данные полученные из скрытых полей или как в примере приведенном выше нужно в каждом скрипте проверять.

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

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

 Идея конечно интерсная, но что будет если взломщик узнает, что используется такой метод?
Название: Variables
Отправлено: Dm от 11 Апреля 2002, 01:01:16
Макс прав, необходимо использовать сессии.
То есть, грубо говоря, хранить информацию не у пользователя, а на сервере.

Макс, что если не использовать md5, а шифровать относительно какого-то жестко заданного ключа на сервере?
Название: Variables
Отправлено: Fury от 11 Апреля 2002, 14:00:17
Я использую сессии.
Сначала unset всем нужным переменным, а потом их значения из сессии вынимаю.
Название: Variables
Отправлено: FILA от 11 Апреля 2002, 14:21:58
Fury , и при этом register_globals=Off  ???
Название: Variables
Отправлено: Fury от 11 Апреля 2002, 15:13:03
FILA
register_globals=On
Название: Variables
Отправлено: Макс от 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, а шифровать относительно какого-то жестко заданного ключа на сервере?
Да, наверное это будет безопаснее.
Название: Variables
Отправлено: Dm от 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);
чтоб ничего лишнего скрипту не передали! :)