Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Массив $Globals

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
zypikov
Отправлено: 02 Июня, 2011 - 12:51:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Попался мне скриптик
PHP:
скопировать код в буфер обмена
  1. function html ($path){
  2.    if (is_file($path)){$path = implode ('', @file ($path));}
  3.       foreach ($GLOBALS as $key=>$val){print "$key=$val<br />\n";
  4.  
  5.              if (! is_array ($val) and !is_object ($val) and ereg ("%$key%",$path)){
  6.                $path = str_replace ("%$key%",$val,$path);
  7.               }
  8.            }
  9.      if (ereg("%.*%",$path)){
  10.        preg_match_all ("/(?<=%)\w+(?=%)/", $path, $array);
  11.        while (list($key, $val) = each ($array[0])){print "$key=$val<br />\n";
  12.               $path = ereg_replace ("%$val%",'',$path);
  13.               }
  14.        }
  15.    return $path;
  16. }
  17.  
  18. $URL = basename ( $_SERVER['PHP_SELF'] );
  19. if ( isset ( $_POST['text']) && ($_POST['text'] == 'blue')) {
  20. $c_submit = "e0e8ff";
  21. $c_line = "b2c6ff";
  22. $submit_text = "ff0000";
  23. $c_dats = "f4f8ff";
  24. $dats_text = "0000ff";
  25.  
  26. }
  27. else{
  28. $c_submit = "f6e7d4";
  29. $c_line = "f6c5a6";
  30. $submit_text = "842F15";
  31. $c_dats = "f6f7e8";
  32. $dats_text = "ff0000";
  33. }
  34. //unset ($_POST['text']);
  35. print html ( "forma.htm" )


В нем при отправки из формы (если текст равен blue) меняется цвет формы и ее границ.
По неопытности, давно , я решил проверить что попадает в суперглобольный массив Globals.

Получил следущее:

CODE (html):
скопировать код в буфер обмена
  1. GLOBALS=Array
  2. _ENV=Array
  3. HTTP_ENV_VARS=Array
  4. _POST=Array
  5. HTTP_POST_VARS=Array
  6. _GET=Array
  7. HTTP_GET_VARS=Array
  8. _COOKIE=Array
  9. HTTP_COOKIE_VARS=Array
  10. _SERVER=Array
  11. HTTP_SERVER_VARS=Array
  12. _FILES=Array
  13. HTTP_POST_FILES=Array
  14. _REQUEST=Array
  15. URL=phphtml.php
  16. c_submit=e0e8ff
  17. c_line=b2c6ff
  18. submit_text=ff0000
  19. c_dats=f4f8ff
  20. dats_text=0000ff


Я считал что должна быть следущая распечатка
CODE (html):
скопировать код в буфер обмена
  1. GLOBALS=Array
  2. URL=phphtml.php
  3. c_submit=e0e8ff
  4. c_line=b2c6ff
  5. submit_text=ff0000
  6. c_dats=f4f8ff
  7. dats_text=0000ff


Откуда появляются другие массивы? Это все из-за суперглобальности Globals?


-----
У всего есть обратная сторона.
 
 Top
DlTA
Отправлено: 02 Июня, 2011 - 13:18:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




все правильно
в $_GLOBALS содержатся ВСЕ данные
в том чисте и $_GET, $_POST, $_SESSIONS и т.д.
(Добавление)
и ссылка на самого себя.)
 
 Top
zypikov
Отправлено: 02 Июня, 2011 - 18:27:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




DlTA пишет:
и ссылка на самого себя.)

Зачем? Когда она может понадобиться?


-----
У всего есть обратная сторона.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Июня, 2011 - 20:36:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Будьте внимательнее: $GLOBALS и $_GLOBALS - это разные вещи!!!
 
 Top
zypikov
Отправлено: 04 Июня, 2011 - 00:48:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




DeepVarvar пишет:
Будьте внимательнее: $GLOBALS и $_GLOBALS - это разные вещи!!!

Ну тогда уж подробней расскажи, раз уж начал DeepVarvar)). Чем отличаются, когда используется тот или тот.
И помойму тоже относиться и массивам $_GET, $_POST, т.е. $POST не есть $_POST. Я уже кстати попался на этом нехило. В скрипте именно через $_POST вытаскивались переменные. Я стал его дорабатывать и использовал $POST. Представьте мое удивление, когда я ниче не получил, ни перем. ни значения.


-----
У всего есть обратная сторона.
 
 Top
DlTA
Отправлено: 04 Июня, 2011 - 00:56:35
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




zypikov пишет:
Зачем? Когда она может понадобиться?
этот вопрос надо переадресовать разработчикам PHP
 
 Top
OrmaJever Модератор
Отправлено: 04 Июня, 2011 - 01:26:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




zypikov пишет:
Чем отличаются, когда используется тот или тот.

ну 2 вариант вобще не существует Растерялся
а первый сам лично не использовал но надеюсь то когда-нибудь пригодится Закатив глазки Например проверить если ли переменая, или взять её в другой области видимости (например вызвать из функции глобальную переменую)
zypikov пишет:
И помойму тоже относиться и массивам $_GET, $_POST, т.е. $POST не есть $_POST. Я уже кстати попался на этом нехило. В скрипте именно через $_POST вытаскивались переменные. Я стал его дорабатывать и использовал $POST. Представьте мое удивление, когда я ниче не получил, ни перем. ни значения.

это ошибки новичков которые мало читают а сразу берутся писать Улыбка Нужно знать что все переменые от клиента начинаются на $_

(Отредактировано автором: 04 Июня, 2011 - 01:27:29)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 04 Июня, 2011 - 09:34:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




zypikov пишет:
Представьте мое удивление, когда я ниче не получил, ни перем. ни значения.

Вот честно - не представляю удивления. Совершенно другое написание переменной, для любого языка это другая переменная, PHP не исключение. Вы ведь не считаете Маша и Миша одним лицом только от того, что у них 75% имени одинаковы?

OrmaJever пишет:
Нужно знать что все переменые от клиента начинаются на $_

Нужно знать синтаксис языка, на котором пишете. А то я, наверное, тоже удивлю сильно, сказав, что $_POST, $_Post, $_post - 3 совершенно разные переменные, не имеющие между собой ничего общего.


-----
PostgreSQL DBA
 
 Top
zypikov
Отправлено: 07 Июня, 2011 - 18:34:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Цитата:
это ошибки новичков которые мало читают а сразу берутся писать Улыбка Нужно знать что все переменые от клиента начинаются на $_
Это ошибка не совсем новичка, а ошибка из-за усталости. Потом я посмотрел другие скрипты и понял что просто ступил.


Цитата:
Нужно знать синтаксис языка, на котором пишете. А то я, наверное, тоже удивлю сильно, сказав, что $_POST, $_Post, $_post - 3 совершенно разные переменные, не имеющие между собой ничего общего.

Да это точно Радость


-----
У всего есть обратная сторона.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB