Скажите пожалуйста если на хосте включен register globals можно как то самому отключать его или как то обходить.
admyx То есть если включен register globals то $_POST[$name] не будет существовать в любом варианте и будут выбраны переменные $default ? Ещё проблема я хотел поставить CMS joomla а там требования как раз к выключенному register globals.
Небезопасно писать для включеных глобалсов. Писать надо так, чтобы вкл/выкл глобалсов никак не влиял на работу и безопасность скрипта.
А я думал что register globals только задаёт способ передачи параметров между скриптами и формами. Экранирует ведь только magic_...? :?
Но многие бесплатные движки требуют отключения этого параметра или это как то иначе обходится в CMS ах
Так. Стоп! Я написал полнейшую чушь. Извини, просто всю ночь работал, еще не спал, а сейчас сижу пью пиво и работаю. Я не специально(((((((( Короче. Все ранее написал про magic_quotes. А про регистер_шлобалс надо так: допустим, есть у тебя поле input и его имя siksi. Если регистер_шлобалс включен, ты можешь написать сразу $siski. Но не нужно. Нужно писать $_POST['siski'] = ну и далее по тексту...... Еще раз извини)
Да ничего страшного Значит можно писать как при отключенном только это будет под полным контролем, хотя даже если register globals включен.Выборка из глобальных массивов будет как и при выключенном?
Ога)) if(is_numeric($_POST['siski'])) $siski_2 = $_POST['siski']; if(is_numeric($_GET['siski'])) $siski_2 = $_GET['siski']; типа того)
Greg1978 Да, можно. И многие разработчики, кстати, так и рекомендуют делать. Добавляешь в .htaccess: Код (Text): php_flag register_globals 0 Зачем это надо? Помнится, в каких-то старых версиях PHP4 можно было написать script.php?_SERVER[REMOTE_ADDR]=127.0.0.1, и вроде как даже работало потом это естессно залатали, но осадок как говорится остался...
Погодите, погодите) А зачем он нужен register_globals? Дело в том что на своем локалхосте я могу написать для получения данных поля и например $_POST['variable'] и $variable. Говорит ли это о том что у меня включен register_globals? Влияет ли он на что либо?
Это самое, значица, есть такая типа фишка, ну вы поняли, короче, ближе к делу, функцию unregister_globals() видел в исходнике PunBB, она типа, это самое, "вырубает" register_globals. Советую типа посмотреть, о как.
Кстати, вот она: PHP: <? // // Unset any variables instantiated as a result of register_globals being enabled // function unregister_globals() { $register_globals = @ini_get('register_globals'); if ($register_globals === "" || $register_globals === "0" || strtolower($register_globals) === "off") return; // Prevent script.php?GLOBALS[foo]=bar if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) exit('I\'ll have a steak sandwich and... a steak sandwich.'); // Variables that shouldn't be unset $no_unset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES'); // Remove elements in $GLOBALS that are present in any of the superglobals $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array()); foreach ($input as $k => $v) { if (!in_array($k, $no_unset) && isset($GLOBALS[$k])) { unset($GLOBALS[$k]); unset($GLOBALS[$k]); // Double unset to circumvent the zend_hash_del_key_or_index hole in PHP <4.4.3 and <5.1.4 } } }