PHP register_globals=off
$_GET['']
$HTTP_GET_VARS (или $_GET)
$HTTP_POST_VARS (или $_POST)
$HTTP_POST_VARS (или $_POST)
э-э-э... а дальше? Совсем туплю...
есть, к примеру, ?a=1&b=qwerty&c=333.
Как сразу всё обозвать, чтобы не писать каждый раз
есть, к примеру, ?a=1&b=qwerty&c=333.
Как сразу всё обозвать, чтобы не писать каждый раз
$a=$_GET["a"];
$b=$_GET["b"];
$c=$_GET["c"];
extract -- Import variables into the current symbol table from an array
т.е. пишешь
extract($_GET);
extract($_POST);
т.е. пишешь
extract($_GET);
extract($_POST);
надо extract сделать
ща найду как
ща найду как
а, во выше написали
разобрался. тхкс.
Еще раз, это все было, используй лучше $_REQUEST (по поиску погляди)
вопрос - а нах?
А потому уже года два как разработчики РНР не рекомендуют использовать register_globals=on и всё больше хостеров данную опцию оставляют как есть.
В т.ч. и мой хостер тоже скоро так сделает - звонил Дениска, предупреждал
В т.ч. и мой хостер тоже скоро так сделает - звонил Дениска, предупреждалЕсть одна подстава: на некоторых хостах бывает (я так и не понял что это за директива) что $_GET и $_POST не работаю, поэтому лучше сразу писать $HTTP_GET_VAES и $HTTP_POST_VARS
HTTP POST variables: $_POSTтак что это не директива, а версия PHP
Note:
Introduced in 4.1.0. In earlier versions, use $HTTP_POST_VARS.
А директивой можно как раз $HTTP_GET_VARS и $HTTP_POST_VARS отключить.
extract -- Import variables into the current symbol table from an arrayТаким образом сводя безопасность скрипта на тот же уровень, что был при regidter_globals=on. Это способ для тех, кто пишет в стиле register_globals=on, а хостится на хостинге где он отключен.
т.е. пишешь
extract($_GET);
extract($_POST);
полностью согласен, кстати 
я так не делаю

я так не делаю

так а что же - в каждом скрипте ручками вытаскивать все переменные из массива? Хм... это ж геморрой.
Хотя это и гемморой, но это правильно:
Можно например так :
Можно например так :
function ini($varname, $defvalue = '') {
global $_POST, $_GET;
if(isset($_POST[$varname] {
$$varname = $_POST[$varname];
return;
}
if(isset($_GET[$varname] {
$$varname = $_GET[$varname];
return;
}
$$varname = $defvalue;
}
Пасиба.
Следующий вопрос. Конфигурация Duron1400/256/XP/Apache 1.3.28/PHP 4.3.4 as a module.
Есть обычный скрипт ресайзинга картинок:
Рендеринг в ИЕ странички с десятком картинок такого вида занимает, на глаз, около 2 секунд. Это нормально? А что же тогда будет, если на такой сервак одновременно зайдут человек 100?
Следующий вопрос. Конфигурация Duron1400/256/XP/Apache 1.3.28/PHP 4.3.4 as a module.
Есть обычный скрипт ресайзинга картинок:
<?
extract($_GET);
$r=imagecreatefromjpeg($img_id.".jpg");
if ($rs_type==1)
{
if (imagesx($r)>=imagesy($r {$new_w=$maxsize; $new_h=$maxsize*(imagesy($r)/imagesx($r;}
else {$new_h=$maxsize; $new_w=$maxsize*(imagesx($r)/imagesy($r;}
}
elseif ($rs_type==2)
{
$new_w=$maxsize; $new_h=$maxsize*(imagesy($r)/imagesx($r;
}
elseif ($rs_type==3)
{
$new_h=$maxsize; $new_w=$maxsize*(imagesx($r)/imagesy($r;
}
$dst_img=ImageCreateTrueColor($new_w,$new_h);
ImageCopyResized($dst_img,$r,0,0,0,0,$new_w,$new_h,ImageSX($rImageSY($r;
imagepng($dst_img);
?>
Рендеринг в ИЕ странички с десятком картинок такого вида занимает, на глаз, около 2 секунд. Это нормально? А что же тогда будет, если на такой сервак одновременно зайдут человек 100?
Блин не удачно написал, напиши с оберткой, а то обертку влом писать. тогда посмотрю что у меня, а еще вставь лучше микротайм, чтобы точно знать, что тормозит.
define ('_PHPSITELIB_GENTIME', 1);
if (_PHPSITELIB_GENTIME) $_phpsitelib_gen = get_micro_time;
<your code>
if (_PHPSITELIB_GENTIME) {
print "<p>Generated " . (get_micro_time - $_phpsitelib_gen) . " sec.</p>";
}
define ('_PHPSITELIB_GENTIME', 1);
if (_PHPSITELIB_GENTIME) $_phpsitelib_gen = get_micro_time;
<your code>
if (_PHPSITELIB_GENTIME) {
print "<p>Generated " . (get_micro_time - $_phpsitelib_gen) . " sec.</p>";
}
Fatal error: Call to undefined function: get_micro_time in c:\program files\apache group\apache\htdocs\photo\index.php on line 2
З.Ы. Обертка - это кто?
RE> З.Ы. Обертка - это кто?
Ну откуда этот скрипт вызывается
RE> Fatal error: Call to undefined function: get_micro_time in c:\program files\apache group\apache\htdocs\photo\index.php on line 2
Странно у меня работает. Версия php м.б. другая
Ну откуда этот скрипт вызывается
RE> Fatal error: Call to undefined function: get_micro_time in c:\program files\apache group\apache\htdocs\photo\index.php on line 2
Странно у меня работает. Версия php м.б. другая
или не включен какой-то модуль...
Сори: у меня там своя библиотека подключается.
вот:
function get_micro_time {
list($usec, $sec) = explode(' ', microtime;
return float)$usec + (float)$sec);
}
вот:
function get_micro_time {
list($usec, $sec) = explode(' ', microtime;
return float)$usec + (float)$sec);
}
0.00353693962097 sec.
Хм... или это ИЕ тормозит, или я чего-то не понимаю...
Хм... или это ИЕ тормозит, или я чего-то не понимаю...
это очень хорошее время обычно требование 0.005-0.01 и то последнее уже плохо, в опере протесть
так же... В общем, и там, и там - от 0.002 до 0.011, при этом память загружена конкретно и окон полно висит.
Имхо более прикольная версия (мой вариант
/**
* Вспомогательная ф-я. Ищет в запросе первый аргумент.
* Если находит - кладет его в глобальные переменные (в случае уст. флага $set_glob)
* со значением из запроса, если нет - со значением, которое передано в ф-ию
* @author Rumata
* @param string $var_name имя переменной
* @param string $def_val дефолтовое значение
* @param string $type Тип переменной. Если mixed, то приведение не производится
* @param bool $set_glob Флаг, показывающий, надо ли устанавливать значение глобальной переменной
* @return mixed Переменная, которая была установлена
*/
function pretest($var_name, $def_val, $type, $set_glob = false) {
if (isset($_REQUEST[$var_name] {
$tmp = $_REQUEST[$var_name];
} else {
$tmp = $def_val;
}
if ($type != "mixed" && $type != "")
settype($tmp, $type);
if ($set_glob) $GLOBALS[$var_name] = $tmp;
return $tmp;
}
нормально все будет, если и 200 человек зайдут....
помню у меня как то 30000 картинок перерисовались за 35 секунд.... так что в принципе нормально....
ЗЫ А сайт с 45000 HTML страниц создаеться за 3 минуты
помню у меня как то 30000 картинок перерисовались за 35 секунд.... так что в принципе нормально....
ЗЫ А сайт с 45000 HTML страниц создаеться за 3 минуты

function ini($varname, $defvalue = '') {
global $_POST, $_GET;
if(isset($_POST[$varname] {
$$varname = $_POST[$varname];
return;
}
if(isset($_GET[$varname] {
$$varname = $_GET[$varname];
return;
}
$$varname = $defvalue;
}
Я вообще PHP не знаю, но у меня есть ощущение, что эта фигня делает всё тот же extract, а следовательно даёт тот же эффект, что register_globals.
так а что же - в каждом скрипте ручками вытаскивать все переменные из массива? Хм... это ж геморрой.Чууувааак! Праграммировать граматна эта вааще конкретный геморрой! Радуйся что ты выбрал один из наиболее безгеморройных (читай безграмотных) языков.
Я вообще PHP не знаю, но у меня есть ощущение, что эта фигня делает всё тот же extract, а следовательно даёт тот же эффект, что register_globals.
напомнило:
совковые времена, съезд или ещё какое заседание.... :
Я книгу .... (фамилия неугодного власти писателя) конечно же не читал, но считаю что .... (обсирание)
Короче, эта функция делает как раз не то же самое, что register_globals=On, а как раз помогает в работе, если register_globals=Off
Не, ну не скажи. Эта ф-ия, на самом деле, хуже, чем extract т.к. вытаскивает переменные не в том порядке - по умолчанию берутся сначала из GET, потом POST. А вообще так лучше, чем extract, т.к. ты лично отвечаешь за каждую вынутую переменную, а не вынимаешь их всех скопом. В этом отношении моя функция еще более продвинута, т.к. задает строгую типизацию.
Да, я ошибся.
Типизацию она не задаёт конечно, но главное что в глобальные переменные экспортируются только те, что ты скажешь, а не все.
Но мне всё равно это не нравится, потому что эти переменные полученные извне (т.н. tainted) ничем не отличаются от твоих собственных переменных. Удобно, когда ты сразу видишь $cgi->param('var' а не $var. Я когда пишу веб-скрипты, то никогда не делаю: $var = $cgi->param('var' что бы затем юзать $var. Я всегда пишу длинный вариант, что бы было наглядно видно, что используются tainted данные.
Но мне всё равно это не нравится, потому что эти переменные полученные извне (т.н. tainted) ничем не отличаются от твоих собственных переменных. Удобно, когда ты сразу видишь $cgi->param('var' а не $var. Я когда пишу веб-скрипты, то никогда не делаю: $var = $cgi->param('var' что бы затем юзать $var. Я всегда пишу длинный вариант, что бы было наглядно видно, что используются tainted данные.
Оставить комментарий
uncle17
Наконец-то хочу перейти к такому.Как переменные из гета-поста вытаскиваются? Не помню...