Перейти к публикации

zilber

местные
  • Публикации

    163
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем zilber

  1. В 09.07.2016 в 16:47, celsoft сказал:

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

    Благодарю Вас за ответ.
    Посещаемость всегда будет низкой - это внутренний сайт компании на 55 человек, в котором ведется непубличная статистика деятельности, на идеологическом каркасе DLE.
    И написано столько кода для обработки данных в каждом разделе, что храня его в одном файле - уже сложно оперировать такими простынями.
    Поэтому и возникла идея раскидать простыни по более мелким файлам по какому-либо узкому признаку, например по исполняемым функциям.

     

    Буду благодарен, если поделитесь методом "от гуру" оперирования такими простынями - не мышкой же вы прокручиваете и вряд ли находите код через поиск.
    Использую Komodo, если что.

     

    Update: посмотрел - средний вес файлов php в папке mods - 180кб

    Спасибо.

  2. Приветствую!

    Никак мне на форуме не зацепиться, прихожу и ухожу с разницей в год...

    Как известно, в DLE в одном файле PHP собраны все действия по определенной функции/разделу, прогулка по которым осуществляется через mod= & do= .
    Вопрос - ничего не утверждая, просто интересуясь - раскидать код по нескольким файлам и точно также через mod= & do= к ним обращаться - не сильно медленнее ли будет?
    Удобнее-то наверняка, простыню визировать все время не нужно.

    Буду благодарен за мнения, плюс надеюсь на коммент от CELSOFT.

    Всем спасибо.
     

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

  4. 30 минуты назад, alex32 сказал:

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

    ну я слабоват в теории и во всем остальном, собственно тоже.
    я про производительность волнуюсь)

  5. мне пришло в голову...
    а лучше использовать is_numeric или is_int?
    и имеет ли смысл регулярка на цифры, если мне доступна проверка на is_numeric (is_int)?
    если вводят номер телефона без разделителей или номер паспорта - достаточно ли проверить через is_numeric, или регуляркой - хуже не будет?

  6. Спасибо за ответ и за совет, добавил!
    Честно говоря, мне кажется я уже как-то перестарался...
    Вот на данный момент как выглядит фильтрация:

     

    Проверка на число:

    if (is_numeric($_POST['org_id'])) { $org_id = $_POST['org_id']; } else { die('попытка взлома системы'); }

     

    Очистка текста:

    $pax_job = mysqli_real_escape_string($db, trim($_POST['pax_job']));
    $pax_job = ($pax_job != '') ? strip_data($pax_job) : '';


    Проверка на соответствие регулярке:

    $err = false;
    $errtext = '';
    
    $regul = '/\D/';
    if ( preg_match($regul, $pax_pass_serie))
    { $err = true; $errtext .= 'в серии паспорта не может быть букв<br />'; }
    
    if (!$error)
    {действие} else {стоп}


    Не перестарался ли...

  7. Ну как бы апнуть тему и вдруг кто ответит...
    Проверьте, пожалуйста, мою логику:

    $fa = (isset($_POST['fa'])) ? mysqli_real_escape_string($db, trim($_POST['fa'])) : '';
    $fa = ($fa != '') ? strip_data($fa) : '';

    Рассуждаю так:
    1. Если переменная в запросе есть, то она реал-эскейпится. Если нет - остается пустой.
    2. Если переменная по результатам пункта 1 не пустая - прогоняется через функцию (режет мускульные команды).

    Заранее спасибо!

  8. Приветствую!
    В модуле я сделал такую проверку переменной из запроса, которая должна содержать только числовое значение:

    $eid = (is_numeric($_GET['eid'])) ? $_GET['eid'] : die( "<script>document.location.href = '/index.php?logout'</script>" );

    А теперь думаю - не крутовато ли? Есть ли подводные камни такой фильтрации 5-6 переменных из каждого запроса?

    Всех с наступившим!

  9. Решил так:
     

    Форма:

    $a=1;
    $b=1;
    $c=1;
    $d=1;
    
    | checkbox['.$a++.'][] | textarea1['.$b++.'][] | textarea2['.$c++.'][] | textarea3['.$d++.'][] |
    | checkbox['.$a++.'][] | textarea1['.$b++.'][] | textarea2['.$c++.'][] | textarea3['.$d++.'][] |
    | checkbox['.$a++.'][] | textarea1['.$b++.'][] | textarea2['.$c++.'][] | textarea3['.$d++.'][] |
    

    Принимаю:

    $a = $_POST['checkbox'];
    $b = $_POST['textarea1'];
    $c = $_POST['textarea2'];
    $d = $_POST['textarea3'];
    
    for($i=0; $i < $a; $i++)
                    {  
                      foreach($checkbox[$i] as $checkbox)
                      {
                        foreach($textarea1[$i] as $textarea1)
                        {
                          foreach($textarea2[$i] as $textarea2)
                          {
                            foreach($textarea3[$i] as $textarea3)
                            {
                                echo checkbox.textarea1.textarea2.textarea3;
                            }
                          }
                        }
                      }
                    }

    Согласен, Дед Мороз повесится, зато работает...
     

  10. Приветствую, друзья.

    Столкнулся с нетривиальной (для меня) проблемой...

    Есть страница, на ней таблица, которая заполняется по следующему принципу:

    #документа
    
    <form>
      <таблица>
        | checkbox | textarea | textarea | textarea |
        | checkbox | textarea | textarea | textarea |
        | checkbox | textarea | textarea | textarea |
      </таблица>
      <submit-пимпа>
    </form>

    Заполнение строками - пока foreach не треснет.
    Textarea работают как доводы для пользователя, чтобы он решил нажать checkbox.
    Отмеченные checkbox'ы передают свои value при сабмите, создается в отдельной таблице базы строка с привязкой пользователя к номеру документа и со списком ID отмеченных чекбоксов. Обработчик с радостью ждет содержимое чекбоксов в конструкции

    foreach $_POST['chkbx_id']
    { blablabla}

    Чепчики в небо, ура.

     

    И вот тут подкрался Бэтмен...
    К номеру документа и пользователю должны быть привязаны и данные из textarea тех строк, что отмечены были чекбоксами. Они, конечно, берутся из базы, но ведь шаловливый пользователь может (и имеет на это право) немного изменить информацию в любом из textarea и затем, если он захочет вернуться к документу, не видеть стандартные данные из базы, а свои, редактированные.
    То бишь создаю еще одну таблицу, к примеру doc_data. Каждая строка в которой содержит пользователя, номер созданного документа, ID чекбокса конкретной строки и содержимое textarea's этой строки.

    Сам Бэтмен: как привязать textarea из строки к чекбоксу этой строки?
    Приходят в голову игры с формами, но если foreach родил сто строк, будет сто форм, отправляемых одним submit... Мама, роди меня обратно.
    И какие тогда идентификаторы должны быть у всех 4х input одной строки/формы? Переменные типа '.$x++.' тут будут смотреться странно, или я неправ?
    Если я в обработчике приму чекбокс и успешно проверю его значение, мне нужно будет как-то идентифицировать информацию, к нему прилагающуюся.

    Внимание вопрос! /гонг/
    Какие могут быть методы решения привязки информации нескольких input к значению checkbox?



     

  11. Если что, проблему снятия значения выбранного пункта из динамического селекта решил так:

    var form = document.forms.имя формы;
    var elem = form.elements.имя селекта;
    var sel = elem.value;

    Вдруг кому пригодится.

  12. 9 минут назад, odys сказал:

    либо это:

    
    if($_GET['e_id'] == NULL){
    	$e_id = $_COOKIE['e_id'];
    } else {
    	$e_id = $_GET['e_id'];
    	SetCookie("e_id", $_GET['e_id']);
    }

    Ну а как это-то? :-)
    При отправке формы, когда значение готово к прочтению - это же впузыришь никуда без js ))

  13. 5 минут назад, odys сказал:

    да, либо на первой странице читать из параметров url

    Пока не допру, как поставить куку прежде, чем перегрузить страницу. Ведь выбранное значение становится чем-то "осязаемым", когда передается в запросе, а запрос происходит, когда страница уже перезапускается.

    А что ты имеешь в виду под параметрами url в данном контексте?

    То есть считать детали из урла вида &блабла=2&брабра=3?

  14. Фактически это выглядит так:
    Чел на странице 1. Выбрал в селекте страницу 2. Нажал открыть. Открылась страница 2.
    В селекте - выставляется страница 1 так как он для того чтобы на нее попасть - выбирал ее ранее.
    После перезагрузки страницы селект выставляет верную страницу 2.

    UPDATE

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

  15. Я понимаю, что куки мне дадут то, что в следующий раз, когда человек зашел на сайт, ему будет отмечено в селекте то, где он сидел в крайний раз...
    Но когда он в первый раз на сайте... У него нет ни сессии, ни куки... Он выбрал пункт. Пункт записался куда угодно, да хоть в оба варианта... Но в процессе инклюда модуля, значение селекта сбросится. А станет верным только при перезагрузке страницы целиком, когда браузер всосет данные сессии, или куки.
    Как бы добиться, чтобы при инклюде модуля значение уже выставлялось верным?
    Я чувствую, что я туплю где-то, как всегда...

    UPDATE

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

  16. Нет, я куки не пишу, просто обсуждаем это :)
     

    Есть index.php, в котором формируется селект из базы. Форма, в которой находится селект, отправляет выбранное значение в мод.
    В моде значение принимается, пишется в сессию

    $e_id = $_GET['e_id'];
    $_SESSION['e_id'] = $e_id;

    В сессии застревает e_id.
    Ну а в селекте файла index.php изначально проверка на наличие e_id в сессии.

    UPDATE

    Я понимаю, что сессия прибивается при закрытии браузера. Ну а тот случай, когда сессия не закрывается, когда пользователь остается...
    Блин... Я понимаю, что проблема как-то очень легко и просто диагностируется, но пока не допру

  17. Ну стой, может я не до конца понимаю...
    Записал я куку со значением селекта. Чтобы браузер ее прочитал, страница должна быть перегружена, верно ведь?
    А если она перегружена, то и использованный мной метод отлично справится, нет?

    UPDATE

    Я запутался :-)
    Повесил на кнопку подтверждения выбора перезагрузку страницы - и все равно та же история ))))

  18. Приветствую!

     

    <form action="?mod=ehl" method="GET">
          <input type="hidden" name="mod" value="ehl">
          <select name="id">
          <option value="0">сделайте выбор</option>';
          ..................
          формируется список пунктов из базы
          ..................
    
          foreach($e as $item)
                {
                      $selected = ($_SESSION['e_id'] == $item['e_id'] ? 'selected' : '');
                      echo '<option value="'.$item['e_id'].'" '.$selected.'>'.$item['e_name'].'</option>';
                }                           
    
          echo '</select>
          <button type="submit">ОТКРЫТЬ</button>
    </form>';

    При существовании сессии, содержащей e_id и при наличии соответствия, к соответствующему пункту меню приписывается selected.
    Соответственно открывается модуль ehl.php, куда передается выбранное значение e_id.
    Там оно пишется в сессию как новый e_id и используется далее в действиях на странице, через $action.

    Вопрос - как сохранить значение выбранного пункта, ведь перезагрузки страницы при подгрузке модуля не происходит, он инклюдится через include_once, при вызове.
    Если перегрузить страницу - все хорошо, селект проверяет сессию и поднимает нужный пункт. Но в момент подгрузки модуля, когда для пользователя как бы открылась новая страница, а на самом деле нет - в селекте старое значение, ведь без перезагрузки он не может проверить сессию.

    Заранее спасибо за добрый совет.

  19. Приветствую всех и поздравляю со своим возвращением! ^_^

    Вопрос в следующем...

    Если заданная константа не находится, выводится hacking attempt. Это когда подключаются внешние файлы модулей.
    А вот если передача данных происходит в одном файле?
    Теоретически понимаю, что заявленная константа в начале файла php, чтобы там внутри не происходило и как бы не делилось на if\elseif - все равно будет присутствовать. Да и в файлах DLE такой проверки внутри if\elseif нет.
    Но хотелось бы убедиться парой слов от уважаемого сообщества.

    Форумы покурил, документацию почитал, если что.

    Всем мир!

  20. вроде я уже тебе рассказывал, что page.html это результат работы .htaccess, на самом деле это index.php?do=static&page=PAGE&seourl=PAGE

    Поэтому у тебя и обрезаются любые параметры после .html

    Не помню такого, но с радостью записал ^_^

    index.php/?do=static&page=GUIDE&seourl=GUIDE&mp_mode=places&co=83 - попробовал - не хочет работать.
    Прежде чем правило писать - хотел проверить работоспособность.
    Что не так?

  21. Приветствую!

     

    sgtours.ru


    Есть модуль туристический, он работает с запросами.
    То есть главная страница: page.html, с нее пользователь уходит на дополнительные страницы вида page.html?mp_mode=places&co=50
    Так вот при переходе на такую страницу, отрезаются параметры и грузится только page.html.

    Понимаю, что решение какое-то элементарное, но уже 4 часа не могу найти в чем соль.

    Заранее спасибо!

    PS - а, вот еще - модуль подгружается явой в статическую страницу.

×
×
  • Создать...