PHP.SU

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

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

> Найдено сообщений: 27
dmitry Отправлено: 04 Января, 2012 - 15:36:07 • Тема: Отображение адресов на карте Москвы • Форум: Вопросы новичков

Ответов: 1
Просмотров: 103
Есть задача отображать место на карте Москвы (Московской области) по адресу.
Какими способами такое решается?

Заранее спасибо.
P.S. Карта может быть любая, гугл, яндекс или что то еще.
dmitry Отправлено: 04 Января, 2012 - 14:44:23 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 18
Просмотров: 669
Viper пишет:
dmitry честно сказать? Хе.**й страдаете. От DDoS вас не защитит никакой php или другой серверный язык. Проблема должна решаться на уровне оборудования. К примеру аппаратные фаерволы.
То что вы пытаетесь реализовать защиту на уровне ПО решит проблему на первые пару часов потом ваш сайт ляжет глубоко и надолго.


Меня не досят пару часов, меня досят примерно по 10 - 20 минут. Мне бы этого за глаза хватило.
(Добавление)
Саныч пишет:
dmitry пишет:
т.е. если у браузера выключены куки, то сесси никакой не будет? Вопрс же четко был поставлен, БЕЗ БАЗЫ, БЕЗ КУКОВ, БЕЗ ФАЙЛОВ. только переменная.
Если куки выключены то будет пытаться передать идентификатор через get.

На ваш четкий вопрос уже сто раз четко ответили.


Если куки выключены то вообще не работают сессии.
(Добавление)
как только вызываю эту инструкцию, перестает работать ...

dmitry Отправлено: 04 Января, 2012 - 14:17:34 • Тема: Глобальные переменные • Форум: Вопросы новичков

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


т.е. если у браузера выключены куки, то сесси никакой не будет? Вопрс же четко был поставлен, БЕЗ БАЗЫ, БЕЗ КУКОВ, БЕЗ ФАЙЛОВ. только переменная.
(Добавление)
Мелкий пишет:
Ещё раз: защиту от DDoS надо делать уровнем ниже.

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

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

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

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


СУПЕР! по моему то что нужно, тока вопрос, обязательно сервер создавать или можно без него обойтись?

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $m = new Memcached();
  4. $m->addServer('localhost', 11211);
  5.  
  6. $m->set('int', 99);
  7. $m->set('string', 'a simple string');
  8. $m->set('array', array(11, 12));
  9. /* expire 'object' key in 5 minutes */
  10. $m->set('object', new stdclass, time() + 300);
  11.  
  12. var_dump($m->get('int'));
  13. var_dump($m->get('string'));
  14. var_dump($m->get('array'));
  15. var_dump($m->get('object'));
  16. ?>
  17.  
dmitry Отправлено: 04 Января, 2012 - 14:00:04 • Тема: Глобальные переменные • Форум: Вопросы новичков

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

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

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

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

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


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

уточните пожалуйста, т.е. если какой то скрипт обратится к моему файлу, то сессия не будет создана? Для меня это очень важно понять. Если сессия не будет создана то данный вариант мне не подходит.
dmitry Отправлено: 04 Января, 2012 - 13:14:42 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 18
Просмотров: 669
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.  


этот код меня от ДДОС атаки как нибудь спасет? Если да то может как то его можно оптимизировать?
dmitry Отправлено: 04 Января, 2012 - 12:23:24 • Тема: Глобальные переменные • Форум: Вопросы новичков

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

Сессии на ботов распространяются или они только если браузером открывается страница?
dmitry Отправлено: 04 Января, 2012 - 11:53:02 • Тема: Глобальные переменные • Форум: Вопросы новичков

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


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

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


Но чего то мой сервак не поддерживает.
Моя задача хранить данные в памяти пхп и время от времени их обновлять. КАК ЭТО СДЕЛАТЬ?
dmitry Отправлено: 04 Января, 2012 - 11:06:50 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 18
Просмотров: 669
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.  
dmitry Отправлено: 04 Января, 2012 - 10:23:27 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 18
Просмотров: 669
Почему переменная $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.  
dmitry Отправлено: 20 Декабря, 2011 - 12:28:18 • Тема: запрос на удаление строки из базы... • Форум: Вопросы новичков

Ответов: 12
Просмотров: 516
MBmusic пишет:
эмм, вставил ваш код, чето не работает(
мб там в запросе на удаление надо чето типа LIMIT 1 дописать и еще чтото...


Вы выделите переменную. Иначе вы не сможете удалить данные из базы.
PHP:
скопировать код в буфер обмена
  1.  
  2. $id = 20; // Все которые равны 20
  3. mysql_query("DELETE FROM posts WHERE 'id'=".$id);
  4.  


В данном случае нужно удалить все записи, в которых id равно 20.
dmitry Отправлено: 20 Декабря, 2011 - 12:17:45 • Тема: symlink — Создаёт символическую ссылку • Форум: Работа с файловой системой и файлами

Ответов: 1
Просмотров: 1171
Как я понимаю, это:
Если вызвать $link то выполнится $target?

НО я нашел программный код в котором и $target и $link являются живыми файлами ...
Т.е. если вызываешь один файл то будет обрабатываться сразу и другой?
А тогда в какой последовательности?
Если вызвать $target, то $link обработается?

Вообще зачем так мудрить если у нас есть два живых файла, которые можно вызывать?

PHP:
скопировать код в буфер обмена
  1.  
  2. bool symlink ( string $target , string $link )
  3.  


Поясните пожалуйста начинающему программисту для чего это вообще придумали?
А то в документации нет подробного описания для каких случаев это нужно и можно применять ...
Буду признателен за вашу помощь.
dmitry Отправлено: 18 Декабря, 2011 - 10:20:58 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 15
Просмотров: 597
Я Вас понимаю. Согласен, что более эстетично хранить такую информацию в базе, НО разберем работу скрипта на другом уровне (простите за сишный подход):

Ваша предлагаемая схема будет примерно такой:
Приложение -> SQL сервер -> Файловая система.

Моя текущая схема:
Приложение -> Файловая система.

Моя желаемая схема:
Приложение -> ОЗУ.

Конечная цель:
1. Скорость работы.
2. Минимальная нагрузка на сервак.
dmitry Отправлено: 17 Декабря, 2011 - 19:26:34 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 15
Просмотров: 597
Прошу Вас меня не ругать, за то что переспрашиваю.

В данном конкретном случае у каждого пользователя будет свое значение переменной?

caballero пишет:

include('qwe.php');
 
global $test_global ;
echo $test_global ;


Я спрашиваю относительно моего кода.

В примере ниже, я храню список злоумышленников в текстовом файле. Проверяю текстовый файл, если есть ип адрес злоумышленника, то не пускаю его на сайт. НО я подумал, зачем мне хранить это дело в файле, когда я могу хранить это в глобальной переменной. Таким образом, я хотел сократить нагрузку на жесткий диск ... Наверное глупо, но если будет посещаемость 10 000 посетителей в сутки то нагрузка будет серьезная ... Так оставить или все же переделывать на глобальную переменную?

PHP:
скопировать код в буфер обмена
  1.  
  2. $target_dir = ABSPATH.'/wp-content/elv';
  3.  
  4. if (file_exists($target_dir."/list_hack.txt"))
  5. {
  6.         $list_hack = file_get_contents($target_dir."/list_hack.txt");
  7.         if (strpos($list_hack,$_SERVER['REMOTE_ADDR']."\t".date("Y") ."-". date("m")."-". date("d")) !== false)
  8.         {
  9.                 @header("HTTP/1.1 414 Request-URI Too Long");
  10.                 @header("Status: 414 Request-URI Too Long");
  11.                 @header("Connection: Close");
  12.                 @exit;
  13.                 // Не пускаем на сайт хакеров в течении текущего дня.
  14.         }
  15. }
  16.  


Еще попутная проблема, которую я определил ... Может кто то подскажет мне ...
Выполнение доходит до этой строки, а потом выполняется другой плагин.
PHP:
скопировать код в буфер обмена
  1.  
  2. if (strpos($list_hack,$_SERVER['REMOTE_ADDR']."\t".date("Y") ."-". date("m")."-". date("d")) !== false)
  3.  

По этому наверное работает все это через раз ...
Можно глянуть на наглядном примере:
http://elvish[dot]biz?test.php
мы увидим белый экран. Должно сохраниться в файл ип адрес и
Нас не должно вообще пускать на сайт ... НО нас будет пускать т.к. плагин кеша обрабатывается...
Если посетить страницу, которая не кешируется, тогда мы снова видим молоко.
Пример: http://elvish[dot]biz/wp-admin (будет молоко).

Где то в вордпресе можно установить приоритет выполнения плагинов? Вроде где то встречал, но не сохранил и сейчас найти не могу.

Раньше плагин работал исправно, сейчас все перемешалось и работать отказывается.
dmitry Отправлено: 17 Декабря, 2011 - 18:29:15 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 15
Просмотров: 597
Я понял вашу мысль, спасибо. т.е. мы должны где то инициализировать переменную, а потом этот файл всегда подключать ...

Другой вопрос. Содержание переменной
echo $test_global ;
для разных пользователей будет одно и тоже?

Пример:
Я получаю данные из формы и кладу их в глобальную переменную ...
Другой пользователь заходит на сайт и он увидит значение глобальной переменной?

В общем вопрос такой, какие есть варианты?
Мне нужно два типа глобальных переменных использовать:
1. Глобальная переменная должна содержать одинаковое значение для всех посетителей.
2. Для каждого пользователя переменная должна держать свое значение.

Как правильно реализовать оба варианта?
dmitry Отправлено: 17 Декабря, 2011 - 17:50:22 • Тема: Глобальные переменные • Форум: Вопросы новичков

Ответов: 15
Просмотров: 597
Данил_123 пишет:
dmitry вы думаете,то что вы там написали мы не знаем.. Я угадал это в теле функции, тогда global тут не помощник, гоу код.. - return знаете? - а мы напишем..


тока сразу предупреждаю, не смейтесь над моей писаниной, я всю жизь на Сях писал, для меня этот пхп как мозаляка ...
Хотел привинтить сюда не чтение из файла, а хранение данных в глобальной переменной.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. /*
  4. Plugin Name: QSP.
  5. Plugin URI: midisa.com
  6. Description: От всяких плохих запросов.
  7. Author URI: http://midisa.com
  8. Author: Dmitry Kruglov
  9. Version: 2.5
  10. */
  11.  
  12. //global $user_ID;
  13.  
  14. if ($_SERVER['HTTP_HOST'] == '178.74.67.84')
  15. {
  16.         header('Location: http://elvish.biz');
  17.         @exit;
  18. }
  19.  
  20. $target_dir = ABSPATH.'/wp-content/elv';
  21.  
  22. if (file_exists($target_dir."/list_hack.txt"))
  23. {
  24.         $list_hack = file_get_contents($target_dir."/list_hack.txt");
  25.         if (strpos($list_hack,$_SERVER['REMOTE_ADDR']."\t".date("Y") ."-". date("m")."-". date("d")) !== false)
  26.         {
  27.                 @header("HTTP/1.1 414 Request-URI Too Long");
  28.                 @header("Status: 414 Request-URI Too Long");
  29.                 @header("Connection: Close");
  30.                 @exit;
  31.                 // Не пускаем на сайт хакеров в течении текущего дня.
  32.         }
  33. }
  34.  
  35.  
  36. if(strpos($_SERVER['REQUEST_URI'],'/wp-admin/') === FALSE && strpos($_SERVER['REQUEST_URI'],'/wp-login.php') === FALSE  && strpos($_SERVER['REQUEST_URI'],'/wp-login/') === FALSE)
  37. {
  38.         if(strlen($_SERVER['REQUEST_URI']) > 240)
  39.         {
  40.                 @header("HTTP/1.1 414 Request-URI Too Long");
  41.                 @header("Status: 414 Request-URI Too Long");
  42.                 @header("Connection: Close");
  43.                 @exit;
  44.                 // Ограничеваем длинну запроса до 240 символов
  45.         }
  46.         /*  strlen($_GET['s']) == 0 */
  47.         if (strpos($_SERVER['REQUEST_URI'], "%3F") !== FALSE && empty($_GET['s']))
  48.         {
  49.                 $target_dir = ABSPATH.'/wp-content/elv';
  50.                 if(!is_dir("$target_dir"))
  51.                 {
  52.                         mkdir("$target_dir", 0755);
  53.                 }
  54.                 file_put_contents($target_dir."/list_hack.txt",$_SERVER['REMOTE_ADDR']."\t".date("Y") ."-". date("m")."-". date("d")."\t". $_SERVER['REQUEST_URI'] ."\n",FILE_APPEND);
  55.                 @header("HTTP/1.1 414 Request-URI Too Long");
  56.                 @header("Status: 414 Request-URI Too Long");
  57.                 @header("Connection: Close");
  58.                 @exit;
  59.                 // Запрещаем использовать в запросе скрипты пхп и шелл
  60.         }
  61.         if(strpos($_SERVER['QUERY_STRING'],'.php') !== FALSE || strpos($_SERVER['QUERY_STRING'],'.sh') !== FALSE)
  62.         {
  63.  
  64.                 $target_dir = ABSPATH.'/wp-content/elv';
  65.                 if(!is_dir("$target_dir"))
  66.                 {
  67.                         mkdir("$target_dir", 0755);
  68.                 }
  69.                 file_put_contents($target_dir."/list_hack.txt",$_SERVER['REMOTE_ADDR']."\t".date("Y") ."-". date("m")."-". date("d")."\t". $_SERVER['REQUEST_URI'] ."\n",FILE_APPEND);
  70.                 @header("HTTP/1.1 414 Request-URI Too Long");
  71.                 @header("Status: 414 Request-URI Too Long");
  72.                 @header("Connection: Close");
  73.                 @exit;
  74.                 // Запрещаем использовать в запросе скрипты пхп и шелл
  75.         }
  76.  
  77. }
  78.  
  79. if(strlen($_GET['s']) > 30)
  80. {
  81.         header('Location:'. "http://".$_SERVER['HTTP_HOST']);
  82.         @exit;
  83. }
  84.  
  85. if (strpos($_SERVER['REQUEST_URI'], "siteSlide.php"))
  86. {
  87.         $target_dir = ABSPATH.'/wp-content/elv';
  88.         if(!is_dir("$target_dir"))
  89.         {
  90.                 mkdir("$target_dir", 0755);
  91.         }
  92.         file_put_contents($target_dir."/test.txt",$_SERVER['REMOTE_ADDR']."\t".date("Y") ."-". date("m")."-". date("d")."\t". $_SERVER['REQUEST_URI'] ."\n",FILE_APPEND);
  93.         // Проверяем запуск зловредных программ
  94. }
  95.  
  96. if (strpos($_SERVER['REQUEST_URI'], "eval(") ||      
  97.   strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
  98.   strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
  99.   strpos($_SERVER['REQUEST_URI'], "base64"))
  100. {
  101.         $target_dir = ABSPATH.'/wp-content/elv';       
  102.         if(!is_dir("$target_dir"))
  103.         {
  104.                 mkdir("$target_dir", 0755);
  105.         }
  106.         file_put_contents($target_dir."/list_hack.txt",$_SERVER['REMOTE_ADDR']."\t".date("Y") ."-". date("m")."-". date("d")."\t". $_SERVER['REQUEST_URI'] ."\t". $_SERVER['REQUEST_METHOD'] ."\t". $_SERVER['QUERY_STRING'] ."\n",FILE_APPEND);
  107.  
  108.         @header("HTTP/1.1 414 Request-URI Too Long");
  109.         @header("Status: 414 Request-URI Too Long");
  110.         @header("Connection: Close");
  111.         @exit;
  112.         // Не даем выполнять
  113. }
  114. ?>
  115.  

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB