Re[2]: PHP
Д> http://test1.ru/catalog.php?rubr=1
Д> В этом случае Денвер присвивает ей значение 1.
Д> Но этого почему-то не происходит при закачке файла на сервер.
Д> Подскажите, пожалуйста, в чём причина и как исправить ситуацию.
На сервере отключено register_globals
http://ru.php.net/results.php?q=register_globals&l=ru&p=wholesite
И это правильно (почему - написано там же).
Решение в-тупую:
получать это значение внутри php из $_REQUEST[...]
Правильное решение:
написать класс-оболочку массива $_REQUEST, управляющую допустимыми
значениями, что-нибудь вроде этого:
class FRequest
{
private $R;
private $filters;
function __construct($Request=array())
{
$this->R=$Request;
}
function addFilter($param,$filter_string)
{
$this->filters[$param]=$filter_string;
}
function get($param)
{
return preg_replace($this->filters[$param],'',$this->R[$param]);
}
}
и использовать:
$FRequest=new FRequest($_REQUEST);
$FRequest->addFilter('rubr','[^(0-9)]'); // параметр rubr может быть только
числовым
$rubr=$FRequest->get('rubr');
Надеюсь, что вышеприведенные решения Вам помогут, поэтому позволю себе
пару слов о философии :-)
Конечно, это решение написано из головы (т.е. не проверялось), так как
оно слишком простое, работает только с плоским массивом, и годится
только для программы из 10 строчек. Суть - в самой идее. Использовать
переменные и массивы годится только для институтской лабы: сдал и
забыл. В коммерческом программировании надо понимать, что любое
значение (число, строка, массив, ...) является объектом языка
(и объектом бизнес-модели) со своими методами доступа.
Денвер развращает. Программиста, использующего денвер, я бы даже
не пригласил на собеседование.