За последние 24 часа нас посетили 50468 программистов и 3116 роботов. Сейчас ищут 1355 программистов ...

Register globals

Тема в разделе "PHP для новичков", создана пользователем Greg1978, 23 ноя 2008.

  1. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Скажите пожалуйста если на хосте включен register globals можно как то самому отключать его или как то обходить.
     
  2. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    ДА привык писать с отключенным register globals да и не безопасно
     
  3. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    [deleted]

    После бессонной ночи написал тут чушь. Перечитал, подумал.
    Удаляю. Сорри.
     
  4. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    admyx
    То есть если включен register globals то $_POST[$name] не будет существовать в любом варианте и будут выбраны переменные $default ?
    Ещё проблема я хотел поставить CMS joomla а там требования как раз к выключенному register globals.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Небезопасно писать для включеных глобалсов. Писать надо так, чтобы вкл/выкл глобалсов никак не влиял на работу и безопасность скрипта.
     
  6. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    [deleted]
     
  7. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    А я думал что register globals только задаёт способ передачи параметров между скриптами и формами.
    Экранирует ведь только magic_...? :?
     
  8. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Но многие бесплатные движки требуют отключения этого параметра или это как то иначе обходится в CMS ах
     
  9. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Так. Стоп!
    Я написал полнейшую чушь.
    Извини, просто всю ночь работал, еще не спал, а сейчас сижу пью пиво и работаю.
    Я не специально((((((((

    Короче. Все ранее написал про magic_quotes.

    А про регистер_шлобалс надо так:

    допустим, есть у тебя поле input и его имя siksi.

    Если регистер_шлобалс включен, ты можешь написать сразу $siski.
    Но не нужно.
    Нужно писать $_POST['siski'] = ну и далее по тексту......

    Еще раз извини)
     
  10. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Да ничего страшного :D
    Значит можно писать как при отключенном только это будет под полным контролем, хотя даже если register globals включен.Выборка из глобальных массивов будет как и при выключенном?
     
  11. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Ога))

    if(is_numeric($_POST['siski']))
    $siski_2 = $_POST['siski'];

    if(is_numeric($_GET['siski']))
    $siski_2 = $_GET['siski'];

    типа того)
     
  12. Именно.
     
  13. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Спасибо!!!
     
  14. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Greg1978
    Да, можно. И многие разработчики, кстати, так и рекомендуют делать.
    Добавляешь в .htaccess:
    Код (Text):
    1. php_flag register_globals 0
    Зачем это надо? Помнится, в каких-то старых версиях PHP4 можно было написать script.php?_SERVER[REMOTE_ADDR]=127.0.0.1, и вроде как даже работало ;) потом это естессно залатали, но осадок как говорится остался...
     
  15. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Всем спасибо!!!
    Большое спасибо!!!
     
  16. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Погодите, погодите) А зачем он нужен register_globals? Дело в том что на своем локалхосте я могу написать для получения данных поля и например $_POST['variable'] и $variable. Говорит ли это о том что у меня включен register_globals? Влияет ли он на что либо?
     
  17. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    free-bits
    Да, если работает и $variable тоже - значит включен.
    На что влияет - читай выше.
     
  18. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Ясн, спасибо=)
     
  19. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Это самое, значица, есть такая типа фишка, ну вы поняли, короче, ближе к делу, функцию unregister_globals() видел в исходнике PunBB, она типа, это самое, "вырубает" register_globals. Советую типа посмотреть, о как.
     
  20. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Может это пользовательская функция?
     
  21. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Да, именно так.
     
  22. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Кстати, вот она:
    PHP:
    1. <?
    2. //
    3. // Unset any variables instantiated as a result of register_globals being enabled
    4. //
    5. function unregister_globals()
    6. {
    7.     $register_globals = @ini_get('register_globals');
    8.     if ($register_globals === "" || $register_globals === "0" || strtolower($register_globals) === "off")
    9.         return;
    10.  
    11.     // Prevent script.php?GLOBALS[foo]=bar
    12.     if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS']))
    13.         exit('I\'ll have a steak sandwich and... a steak sandwich.');
    14.    
    15.     // Variables that shouldn't be unset
    16.     $no_unset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES');
    17.  
    18.     // Remove elements in $GLOBALS that are present in any of the superglobals
    19.     $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
    20.     foreach ($input as $k => $v)
    21.     {
    22.         if (!in_array($k, $no_unset) && isset($GLOBALS[$k]))
    23.         {
    24.             unset($GLOBALS[$k]);
    25.             unset($GLOBALS[$k]);    // Double unset to circumvent the zend_hash_del_key_or_index hole in PHP <4.4.3 and <5.1.4
    26.         }
    27.     }
    28. }