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 :: Глобальные переменные

 PHP.SU

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


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

> Описание: помогите пожалуйста
dmitry
Отправлено: 04 Января, 2012 - 10:23:27
Post Id


Новичок


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


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




Почему переменная $GLOBALS['test'] постоянно пустая? Я ведь ей назначаю значение.

Как написать этот кусок кода, чтобы значение сохранялось в переменной, НЕ В ФАЙЛЕ, а именно в переменной.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (empty($GLOBALS['test']))
  4. {
  5.         $GLOBALS['test'] = 'text';
  6.     echo $GLOBALS['test'];
  7. }
  8.  
  9. ?>
  10.  



помогите пожалуйста, уже выбился из сил.
спасибо.
P.S. Модераторы не удаляйте пожалуйста эту тему. Пока не научусь создавать глобальные переменные не отступлюсь.


или как назначить значение переменной global?
PHP:
скопировать код в буфер обмена
  1.  
  2. function check()
  3. {
  4.     global $test;
  5.     if (empty($test))
  6.     {
  7.         $test = 1;
  8.     }
  9. else
  10. {
  11.    $test++;
  12. }
  13.    
  14.     return $test;
  15. }
  16.  

(Отредактировано автором: 04 Января, 2012 - 10:30:41)

 
 Top
Ch_chov
Отправлено: 04 Января, 2012 - 10:50:57
Post Id



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


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




А почему вы думаете, что значение не сохраняется?
 
 Top
sKaa
Отправлено: 04 Января, 2012 - 10:57:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


 
 Top
dmitry
Отправлено: 04 Января, 2012 - 11:06:50
Post Id


Новичок


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


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




Ch_chov пишет:
А почему вы думаете, что значение не сохраняется?


Потому что при повторном вызове скрипта снова выполняется эхо, а мне нужно:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4. if (empty($GLOBALS['test']))
  5. {
  6.         $GLOBALS['test'] = 'text';
  7.     echo $GLOBALS['test'];
  8. }
  9. else
  10. {
  11.         echo 'переменная $GLOBALS['test'] уже имеет значение!';
  12. }
  13. ?>
  14.  
  15.  
 
 Top
Саныч Модератор
Отправлено: 04 Января, 2012 - 11:33:13
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




dmitry пишет:
Потому что при повторном вызове скрипта снова выполняется эхо, а мне нужно:
эээ нет. Почитайте про глобальные и локальные переменные. Вы явно не знаете в чем их суть. А в вашем случае нужны сессии.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
dmitry
Отправлено: 04 Января, 2012 - 11:53:02
Post Id


Новичок


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


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




Саныч пишет:
dmitry пишет:
Потому что при повторном вызове скрипта снова выполняется эхо, а мне нужно:
эээ нет. Почитайте про глобальные и локальные переменные. Вы явно не знаете в чем их суть. А в вашем случае нужны сессии.


В том то и дело что они не подходят! А мне нужно значение хранить постоянно в переменной. Как мне это сделать?

Пробовал это:


Но чего то мой сервак не поддерживает.
Моя задача хранить данные в памяти пхп и время от времени их обновлять. КАК ЭТО СДЕЛАТЬ?
 
 Top
Саныч Модератор
Отправлено: 04 Января, 2012 - 11:57:33
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Для начало неплохо было бы научиться читать.
Я ж вам написал уже:
Саныч пишет:
А в вашем случае нужны сессии.

Еще добавлю, можно куки, но это уже будет храниться на машине пользователя.
Еще вариант - записывать в файл.
Еще - в базу.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
sKaa
Отправлено: 04 Января, 2012 - 11:59:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Паттерн Registry, пожалуй можно даже запилить с интерфейсом ArrayAccess, Countable, магические __set __get методы. Можно даже с синглтоном если вы новичок )))
Вдаваться тут в подробности как и че не особо хочется потому-что возможно я неправильно интерпретировал в своем понимание ваше туманное :
dmitry пишет:
хранить данные в памяти пхп и время от времени их обновлять
 
 Top
dmitry
Отправлено: 04 Января, 2012 - 12:23:24
Post Id


Новичок


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


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




С сессиями попробовал работает отлично! Но вопрос в следующем:

Сессии на ботов распространяются или они только если браузером открывается страница?

(Отредактировано автором: 04 Января, 2012 - 12:24:08)

 
 Top
Viper
Отправлено: 04 Января, 2012 - 13:06:15
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




dmitry сессии создаются при запросе страницы клиентом. Неважно кто клиент. Буть то браузер или сторонняя софтина.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
dmitry
Отправлено: 04 Января, 2012 - 13:14:42
Post Id


Новичок


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


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




Viper пишет:
dmitry сессии создаются при запросе страницы клиентом. Неважно кто клиент. Буть то браузер или сторонняя софтина.


спасибо. теперь посмотрите что у меня получилось:

PHP:
скопировать код в буфер обмена
  1.  
  2. $start_mc_time = microtime(true);
  3. if ($_SESSION['antiflood'])
  4. {
  5.     $_SESSION['time_flood'] = $start_mc_time;
  6.         $test = $_SESSION['antiflood'];
  7.     $test++;
  8.     $_SESSION['antiflood'] = $test;
  9. }
  10. else
  11. {
  12.     $end_mc_time = microtime(true);
  13.     if (($end_mc_time - $_SESSION['time_flood']) < 50 )
  14.     {
  15.         exit();
  16.     }
  17.     $_SESSION['antiflood'] = 1;
  18.     $_SESSION['time_flood'] = $start_mc_time;
  19. }
  20.  


этот код меня от ДДОС атаки как нибудь спасет? Если да то может как то его можно оптимизировать?
 
 Top
Мелкий Супермодератор
Отправлено: 04 Января, 2012 - 13:36:57
Post Id



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


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


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




От DDoS атаки вас не спасёт любой вариант на PHP. Решать надо уровнем ниже. И то не спасёт, а лишь отсрочит критический момент.

Однако, судя по названию переменных - вам нужен не антиDDoS, а антифлуд.

dmitry пишет:
Сессии на ботов распространяются

Только если бот высылает сессионную куку. Если у вас используется авторизация - высылает всегда. Если нет - как получится.

В общем, опишите исходную проблему.


-----
PostgreSQL DBA
 
 Top
dmitry
Отправлено: 04 Января, 2012 - 14:00:04
Post Id


Новичок


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


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




Мелкий пишет:
От DDoS атаки вас не спасёт любой вариант на PHP. Решать надо уровнем ниже. И то не спасёт, а лишь отсрочит критический момент.

Однако, судя по названию переменных - вам нужен не антиDDoS, а антифлуд.

dmitry пишет:
Сессии на ботов распространяются

Только если бот высылает сессионную куку. Если у вас используется авторизация - высылает всегда. Если нет - как получится.

В общем, опишите исходную проблему.


на пхп пытаюсь создать простой антиддос, задача хранить значение в переменной.
хранение в базе, куках, файлах и т.д. не подходят. ТОЛЬКО В ПЕРЕМЕННОЙ.

уточните пожалуйста, т.е. если какой то скрипт обратится к моему файлу, то сессия не будет создана? Для меня это очень важно понять. Если сессия не будет создана то данный вариант мне не подходит.
 
 Top
Саныч Модератор
Отправлено: 04 Января, 2012 - 14:09:58
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Почитайте про сессии подробно, а именно про то, как они работают.
Сессию устанавливаете вы, для каждоко клиента своя сессия, хранится она на сервере. Возникает вопрос: "А как же при следующем заходе мы определим, где чия сессия?". Вот для этих целей вы отсылаете клиенту (браузеру, боту, не важно кому) запрос на установку куки. В ней хранится идентификатор вашей сессии. При последующем обращение он (клиент) должен прислать вам эту куку, по ней вы и узнаете сессию. Если он этого не сделает, то естественно и сессии никакой не будет.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Мелкий Супермодератор
Отправлено: 04 Января, 2012 - 14:14:51
Post Id



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


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


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




Ещё раз: защиту от DDoS надо делать уровнем ниже.

dmitry пишет:
хранение в базе, куках, файлах и т.д. не подходят. ТОЛЬКО В ПЕРЕМЕННОЙ.

Невозможно. PHP работает по принципу отработал-умер.
Хранение данных в оперативной памяти - memcache.

dmitry пишет:
если какой то скрипт обратится к моему файлу, то сессия не будет создана?

Создана сессия будет всегда.
Использована ли при повторном обращении - только если клиентом будет передан каким-либо способом идентификатор сессии (кука или get-параметр).


-----
PostgreSQL DBA
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB