Heliax

Members
  • Content count

    19
  • Joined

  • Last visited


Reputation Activity

  1. Heliax liked a post in a topic by malahovnet in "Ад вебмастера" - А что это для вас?   
    Когда прописывают эти колеса - это Ад))

  2. Slavik liked a post in a topic by Heliax in Закрыть сайт на реконструкцию   
    Классика жанра: сайт полностью сливают на локальную машину под LAMP (вместе с БД), затем, всё что нужно правят (тестируют и ещё правят). Когда нужный результат достигнут, заливают всё обратно на сервер. Выгоды: быстрый апгрейд сайта без лишних головняков. Думаю, что у вас такой вариант по какой-то причине не прокатывает. Если так, то печаль. Править глобально сайт прямо на боевом сервере - это ответственное и рискованное предприятие.
  3. Frocenter liked a post in a topic by Heliax in Нужен совет по PHP   
    Я бы предпочёл вариант с использованием SWITCH, т.к. он более логичен, причём сделал бы чуть иначе:
    switch (strip_tags(trim($_POST['form-id']))){   case 1:     # Здесь выполнение любого кода и вывод результатов.   break; } Функции предназначены для выноса того участка кода, который неоднократно выполняется (и здесь не имеется в виду многократное выполнение всего php-скрипта).
     
    А вообще.. лучший вариант в плане производительности определяется экспериментальным путём: нужно получить среднеарифметические значения затраченного времени на выполнение разных версий скрипта. Полученные результаты, разумеется, сравнить между собой и выяснить.. какая версия шустрее.
  4. pest251 liked a post in a topic by Heliax in Нужен совет: как правильно сделать партнерскую ссылку   
    Если желаете чтобы в коде страницы небыло лишних ссылок, но посетители их видели (линки на партнёрки), то сделайте псевдо-ссылки посредством CSS и JavaScript.
     
    Вот простой пример (но можно куда хитрее замутить):
     
    CSS:
    .psevdoLink { color: #0000a0; text-decoration: underline; } .psevdoLink:hover { color: #0000ff; text-decoration: underline; cursor: pointer; } JS (с применением jQuery):
    jQuery(document).ready(function(){ //...код... // Обработчик псевдо-ссылок. jQuery('span.psevdoLink').bind('click', function(){ var myLinkID = jQuery(this).attr('id'), partnerLink = ''; switch(myLinkID){ case 'myLink1': partnerLink = 'my-partner1.ru'; break; case 'myLink2': partnerLink = 'my-partner2.com'; break; } if(partnerLink){ partnerLink = 'http://'+partnerLink; window.open(partnerLink, '_self'); } }); //...код... }); HTML:
    Съешь ещё этих <span class="psevdoLink" id="myLink1">мягких французских булок</span>, да выпей <span class="psevdoLink" id="myLink2">чаю</span>.
  5. campusboy liked a post in a topic by Heliax in Доработка таймер на javascript   
    Вот.. набросал на скору руку. Дальше сам. Надеюсь, принцип работы будет понятен.
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Отслеживание бафов</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <style type="text/css"> .myControlSection {margin-bottom: 7px;} .myControlSection button {width: 100px; height: 40px; font-weight: 700; cursor: pointer;} .myControlSection .newBuffAppendButton {width: 260px; margin-left: 14px;} .buffUnit {width: 48px; height: 48px; border: 1px solid #000; border-radius: 3px;} .buffUnit span {margin-left: 3px;} .buffClass1 {background: #ffffcc;} .buffClass2 {background: #ffff33;} .buffClass3 {background: #ffcccc;} .buffClass4 {background: #ccff66;} .buffClass5 {background: #ffcc66;} .buffClass6 {background: #99ccff;} .buffClass7 {background: #ffcc00;} .buffClass20 {background: #99ffff;} </style> <script type="text/javascript"> var myBuffTimer, // Собственно, наш таймер. buffTimingArr = {}; // «Реестр» - для хранения инфы о бафах, организуем на базе объектов. // Если на сайте есть другие фреймворки кроме jQuery и они между собой конфликтуют, то замени все символы $ на jQuery // Наличие ошибок в JS хорошо показывает IE :-) Для отладки скриптов будет очень полезно. $(document).ready(function(){ // Управление. $('button#myStartButton').unbind('click').bind('click', function(){ myBuffInit(); // Инициализация. myTimerForCalculateBuffs(); // Стартуем таймер. }); $('button#myStopButton').unbind('click').bind('click', function(){ clearTimeout(myBuffTimer); // Останавливаем таймер. // Сбрасываем на странице значения в ноль. $('div.buffUnit').each(function(){ $(this).find('span').html('0'); }); }); $('button#myRestartButton').unbind('click').bind('click', function(){ clearTimeout(myBuffTimer); // Останавливаем таймер. myBuffInit(); // Заново инициализируем. myTimerForCalculateBuffs(); // Стартуем таймер. }); $('button.newBuffAppendButton').unbind('click').bind('click', function(){ var currentBuffCount = $("div.buffUnit").length, // Сколько уже бафов есть на странице. newBuffID = 'buff'+currentBuffCount+1, // Выделяем ID для нового бафа. buffTimeValue = Math.floor(Math.random() * 100)+10, // Генерируем его продолжительность (от 10 до 100 сек). buffClass = 'buffClass'+(Math.floor(Math.random() * 7)+1); // Какого цвета будет новый баф (от 1 до 7). buffTimingArr[newBuffID] = buffTimeValue+'|0'; // Внесём новый баф в «реестр», и выкатим его на страницу. $('div#myBuffContainer').append('<div id="'+newBuffID+'" class="buffUnit '+buffClass+'"><span>'+buffTimeValue+'</span><input type="hidden" value="'+buffTimeValue+'" /></div>'); //alert(buffTimeValue); }); }); // Инициализация: соберём инфу по каждому бафу в «реестр». function myBuffInit(){ var buffID, buffTimeValue; $('div.buffUnit').each(function(){ buffID = $(this).attr('id'); // ID бафа ... buffTimeValue = $(this).find('input').val(); // ... и его длительность. buffTimingArr[buffID] = buffTimeValue+'|0'; // Запоминаем инфу о бафе (0 - это служебка для таймера: сколько баф уже действует). $('div#'+buffID).show().find('span').html(buffTimeValue); // Отсветим его длительность на странице. }); } // Зацикленый таймер для пересчёта валидности бафов. function myTimerForCalculateBuffs(){ var buffID, buffTimerArr, buffMaxTime, buffCurrentTime; // Проверяем каждый баф в «реестре» - не закончился ли он. for(buffID in buffTimingArr){ buffTimerArr = buffTimingArr[buffID].split('|'); // Текущая инфа о длительности бафа. buffMaxTime = parseInt(buffTimerArr[0]); // Сколько баф должен действовать. buffCurrentTime = parseInt(buffTimerArr[1]); // Сколько баф уже действует. buffCurrentTime++; if(buffCurrentTime == buffMaxTime){ // Если время истекло, то ... delete buffTimingArr[buffID]; // ... забываем про него ... $('div#'+buffID).hide(300); // ... и делаем какое-либо нужное нам действие. }else{ // Если время бафа не истекло, то ... buffTimingArr[buffID] = buffMaxTime+'|'+buffCurrentTime; // ... запомним сколько он уже действует, и ... $('div#'+buffID).find('span').html(buffMaxTime-buffCurrentTime); // ... отсветим на странице обратный отсчёт. } } // clearTimeout(myBuffTimer); // На случай, если таймер будет глючить. // Авто-перезапуск таймера через 1 сек. myBuffTimer = setTimeout(function(){ myTimerForCalculateBuffs(); }, 1000); } </script> </head> <body> <div class="myControlSection"> <button id="myStartButton">Старт</button> <button id="myStopButton">Стоп</button> <button id="myRestartButton">Рестарт</button> <button class="newBuffAppendButton">Добавить новый баф</button> </div> <div id="myBuffContainer"> <div id="buff1" class="buffUnit buffClass1"><span>0</span><input type="hidden" value="10" /></div> <div id="buff2" class="buffUnit buffClass2"><span>0</span><input type="hidden" value="90" /></div> <div id="buff3" class="buffUnit buffClass3"><span>0</span><input type="hidden" value="30" /></div> <div id="buff4" class="buffUnit buffClass4"><span>0</span><input type="hidden" value="25" /></div> <div id="buff5" class="buffUnit buffClass5"><span>0</span><input type="hidden" value="45" /></div> <div id="buff6" class="buffUnit buffClass6"><span>0</span><input type="hidden" value="150" /></div> <div id="buff7" class="buffUnit buffClass7"><span>0</span><input type="hidden" value="15" /></div> <!-- И так далее, можно добавлять динамически: как посредством PHP, так и с помощью JS --> <div id="buff20" class="buffUnit buffClass20"><span>0</span><input type="hidden" value="200" /></div> </div> </body> </html> bufftest.php
  6. campusboy liked a post in a topic by Heliax in Доработка таймер на javascript   
    Вот.. набросал на скору руку. Дальше сам. Надеюсь, принцип работы будет понятен.
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Отслеживание бафов</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <style type="text/css"> .myControlSection {margin-bottom: 7px;} .myControlSection button {width: 100px; height: 40px; font-weight: 700; cursor: pointer;} .myControlSection .newBuffAppendButton {width: 260px; margin-left: 14px;} .buffUnit {width: 48px; height: 48px; border: 1px solid #000; border-radius: 3px;} .buffUnit span {margin-left: 3px;} .buffClass1 {background: #ffffcc;} .buffClass2 {background: #ffff33;} .buffClass3 {background: #ffcccc;} .buffClass4 {background: #ccff66;} .buffClass5 {background: #ffcc66;} .buffClass6 {background: #99ccff;} .buffClass7 {background: #ffcc00;} .buffClass20 {background: #99ffff;} </style> <script type="text/javascript"> var myBuffTimer, // Собственно, наш таймер. buffTimingArr = {}; // «Реестр» - для хранения инфы о бафах, организуем на базе объектов. // Если на сайте есть другие фреймворки кроме jQuery и они между собой конфликтуют, то замени все символы $ на jQuery // Наличие ошибок в JS хорошо показывает IE :-) Для отладки скриптов будет очень полезно. $(document).ready(function(){ // Управление. $('button#myStartButton').unbind('click').bind('click', function(){ myBuffInit(); // Инициализация. myTimerForCalculateBuffs(); // Стартуем таймер. }); $('button#myStopButton').unbind('click').bind('click', function(){ clearTimeout(myBuffTimer); // Останавливаем таймер. // Сбрасываем на странице значения в ноль. $('div.buffUnit').each(function(){ $(this).find('span').html('0'); }); }); $('button#myRestartButton').unbind('click').bind('click', function(){ clearTimeout(myBuffTimer); // Останавливаем таймер. myBuffInit(); // Заново инициализируем. myTimerForCalculateBuffs(); // Стартуем таймер. }); $('button.newBuffAppendButton').unbind('click').bind('click', function(){ var currentBuffCount = $("div.buffUnit").length, // Сколько уже бафов есть на странице. newBuffID = 'buff'+currentBuffCount+1, // Выделяем ID для нового бафа. buffTimeValue = Math.floor(Math.random() * 100)+10, // Генерируем его продолжительность (от 10 до 100 сек). buffClass = 'buffClass'+(Math.floor(Math.random() * 7)+1); // Какого цвета будет новый баф (от 1 до 7). buffTimingArr[newBuffID] = buffTimeValue+'|0'; // Внесём новый баф в «реестр», и выкатим его на страницу. $('div#myBuffContainer').append('<div id="'+newBuffID+'" class="buffUnit '+buffClass+'"><span>'+buffTimeValue+'</span><input type="hidden" value="'+buffTimeValue+'" /></div>'); //alert(buffTimeValue); }); }); // Инициализация: соберём инфу по каждому бафу в «реестр». function myBuffInit(){ var buffID, buffTimeValue; $('div.buffUnit').each(function(){ buffID = $(this).attr('id'); // ID бафа ... buffTimeValue = $(this).find('input').val(); // ... и его длительность. buffTimingArr[buffID] = buffTimeValue+'|0'; // Запоминаем инфу о бафе (0 - это служебка для таймера: сколько баф уже действует). $('div#'+buffID).show().find('span').html(buffTimeValue); // Отсветим его длительность на странице. }); } // Зацикленый таймер для пересчёта валидности бафов. function myTimerForCalculateBuffs(){ var buffID, buffTimerArr, buffMaxTime, buffCurrentTime; // Проверяем каждый баф в «реестре» - не закончился ли он. for(buffID in buffTimingArr){ buffTimerArr = buffTimingArr[buffID].split('|'); // Текущая инфа о длительности бафа. buffMaxTime = parseInt(buffTimerArr[0]); // Сколько баф должен действовать. buffCurrentTime = parseInt(buffTimerArr[1]); // Сколько баф уже действует. buffCurrentTime++; if(buffCurrentTime == buffMaxTime){ // Если время истекло, то ... delete buffTimingArr[buffID]; // ... забываем про него ... $('div#'+buffID).hide(300); // ... и делаем какое-либо нужное нам действие. }else{ // Если время бафа не истекло, то ... buffTimingArr[buffID] = buffMaxTime+'|'+buffCurrentTime; // ... запомним сколько он уже действует, и ... $('div#'+buffID).find('span').html(buffMaxTime-buffCurrentTime); // ... отсветим на странице обратный отсчёт. } } // clearTimeout(myBuffTimer); // На случай, если таймер будет глючить. // Авто-перезапуск таймера через 1 сек. myBuffTimer = setTimeout(function(){ myTimerForCalculateBuffs(); }, 1000); } </script> </head> <body> <div class="myControlSection"> <button id="myStartButton">Старт</button> <button id="myStopButton">Стоп</button> <button id="myRestartButton">Рестарт</button> <button class="newBuffAppendButton">Добавить новый баф</button> </div> <div id="myBuffContainer"> <div id="buff1" class="buffUnit buffClass1"><span>0</span><input type="hidden" value="10" /></div> <div id="buff2" class="buffUnit buffClass2"><span>0</span><input type="hidden" value="90" /></div> <div id="buff3" class="buffUnit buffClass3"><span>0</span><input type="hidden" value="30" /></div> <div id="buff4" class="buffUnit buffClass4"><span>0</span><input type="hidden" value="25" /></div> <div id="buff5" class="buffUnit buffClass5"><span>0</span><input type="hidden" value="45" /></div> <div id="buff6" class="buffUnit buffClass6"><span>0</span><input type="hidden" value="150" /></div> <div id="buff7" class="buffUnit buffClass7"><span>0</span><input type="hidden" value="15" /></div> <!-- И так далее, можно добавлять динамически: как посредством PHP, так и с помощью JS --> <div id="buff20" class="buffUnit buffClass20"><span>0</span><input type="hidden" value="200" /></div> </div> </body> </html> bufftest.php
  7. campusboy liked a post in a topic by Heliax in Доработка таймер на javascript   
    Чтобы избежать запуска нескольких копий таймера одновременно, нужно удалить кнопку Старт вместе с её обработчиком (её я воткнул для примера). Кнопку Рестарт переименовать в Старт/Рестарт (её обработчик как раз именно так и работает).
  8. Transformer liked a post in a topic by Heliax in Скрипт загрузки рекламы   
    Самый простой вариант, с применением jQuery.
    jQuery(document).ready(function(){ jQuery('div#banner').load("banner.html"); });
  9. Heliax liked a post in a topic by 1seo in Движок или чистый HTML?   
    смешно слушать теоретиков... кэш - не, не слышал.
  10. SanShet liked a post in a topic by Heliax in Вопрос по Wordpress   
    В .htaccess нужно добавить строчку (только для Apache):
    # Запрет на открытие файлов браузером (пример). AddType application/octet-stream .rar .doc .pdf .xls .png .jpg .jpeg .mp3