За последние 24 часа нас посетили 20814 программистов и 1135 роботов. Сейчас ищут 379 программистов ...

как обойти ERR_CACHE_MISS ?

Тема в разделе "PHP для новичков", создана пользователем art_pr, 29 июн 2022.

  1. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    Привет всем, есть форма на сайте с поиском клиентов, когда задаешь даты поиска и нажимаешь найти, находит список клиентов, метод post все как обычно, но при возврате на страницу поиска выходит ошибка ERR_CACHE_MISS, много читал в инете кто то советует перейти на get кто то прописывать в сессии, на get нельзя перейти в моем случае, а в сессии бы и рад записать но браузер раньше выводит ошибку и не доходит до обработки php, подскажите пожалуйста кто знает, как отловить ошибку и чтоб нормально отработал поиск, не зависимо от перехода по страницам.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Err_cache_miss. Страница просит повторно отправить ранее введенные данные

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

    Ванг тут нету... показывайте код поиска
     
  3. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    Да все так, вот код
    Код (Text):
    1.     <div class="search-form">
    2.                         <form id="search_funding" action="<?php echo get_url( 'funding' . DS . 'search' ); ?>" method="post">
    3.                             <fieldset>
    4.                                 <p class="date_type left">
    5.                                     <label for="funding[date_type]">Search by:</label>
    6.                                     <select name="funding[date_type]">
    7.                                         <option value="funding_date"> Funding Date </option>
    8.                                         <option value="repayment_date"> Payment Date </option>
    9.                                     </select>
    10.                                 </p>
    11.                                 <p class="date left">
    12.                                     <label for="funding[date]">Date:</label>
    13.                                     <input id="funding_date" class="datepicker" onclick="displayDatePicker('funding[date]');" name="funding[date]" type="text" value="" />
    14.                                 </p>
    15.                             </fieldset>
    16.                             <fieldset>
    17.                                 <p class="or"> Or </p>
    18.                             </fieldset>
    Но дело скорее всего в обработке браузера потому что выходит вот такое окно:
    upload_2022-6-29_17-41-25.png
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Где код обработчик?
    Есть ли js который отправляет, перенаправляет итд?
     
  5. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    Движок не мой, потому не все знаю, но есть вот такой обработчик в backend
    Код (Text):
    1.     $('#search_funding').validate( {
    2.                 rules: {
    3.                     'funding[funding_date]': {
    4.                         required: function( element ) {
    5.                             return ( $("#funding_date_from").val() == '' && $("#funding_date_to").val() == '' );
    6.                         }
    7.                     },
    8.                     'funding[date_from]': {
    9.                         required: function( element ) {
    10.                             return ( $("#funding_date").val() == '' && $("#funding_date_to").val() != '' );
    11.                         }
    12.                     },
    13.                     'funding[date_to]': {
    14.                         required: function( element ) {
    15.                             return ( $("#funding_date").val() == '' && $("#funding_date_from").val() != '' );
    16.                         }
    17.                     }
    18.                 },
    19.             errorPlacement: function() { },
    20.             submitHandler: function( form ) {
    21.                 form.submit();
    22.             }
    23.         });
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    ну для начала это не совсем бэкенд, это вообще JS
    ... судя по всему идет проверка и если норм все то идет та самая отправка form.submit();
    похоже что используется какая-то библиотека.. validate
    когда у нее срабатывает submitHandler ? похоже что прямо при показе формы- проверяет - заполнены ли какие-то поля - если да - то отправляет....
    наверное после отправки формы - принимающий бэкенд php потом отпять отправляет на эту же старницу - а поля остаются заполненными ... вот и идет цикл бесконечный...
    найдите для начала где в php идет обработка формы - и посмотрите чем заканчивается - уберите временно редирект опять на форму
     
  7. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    Есть обработчик поиска, но в нем все стандартно, из массива $_POST вытаскиваются даты введенные на форме
    и затем делается render страницы поиска, там куча проверок но все они не про ошибку... убрал рендер страницы, выходит просто пустая страница. Ошибка так же осталась, эта ошибка выходит всегда и у всех, дело не в коде а в поведении браузера или веб сервера, просто кто то на это не обращает внимания а кто то пытается обработать ошибку. Ошибка происходит именно когда ты что то поискал, потом перешел на другую страницу потом в браузере нажал стрелку и вернулся на страницу результата поиска, вот тут бац и ошибка )
    Код (Text):
    1.    $data = (object)$_POST['funding'];
    2.  
    3.  
    4.             $date_type = $data->date_type;
    5.  
    6.             $sort_url .= DS . $date_type;
    7. ......
    8.  
    9.                 if (!empty($data->attorney)) {
    10.                     $q_attorney = Attorney::findById($data->attorney);
    11.  
    12.                     $this->setLayout('backend');
    13.                     $this->display('funding' . DS . 'search', array('attorneys' => $attorneys, 'date_type' => $date_type, 'date' => $date, 'funding' => $funding, 'q_attorney' => $q_attorney, 'sort_url' => $sort_url, 'status' => $status));
    14.                 } else {
    15.                     $this->setLayout('backend');
    16.                     $this->display('funding' . DS . 'search', array('attorneys' => $attorneys, 'date_type' => $date_type, 'date' => $date, 'funding' => $funding, 'sort_url' => $sort_url, 'status' => $status));
    17.                 }
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Я вам выше написал в чем дело...
    Поместите весь этот скрипт на событие отправки формы
    $((form). submit(function (e) {
    Тут весь скрипт с validate
    })
     
    art_pr нравится это.
  9. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    я извиняюсь, но я ничего не понял...скрипт js поместить в $((form) ? Не работает, скрипты вообще перестают работать...
     
  10. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    Ооооо! ) нашел решение! перед стартом сессии, надо задать параметры сессии чуть другие:
    session_cache_limiter('private, must-revalidate');
    session_cache_expire(60);
    все отлично работает, только нельзя так делать на страницах оплаты, а то снимать с карты будет каждый раз )
    Спасибо за участие Adsoft!
     
  11. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    ну я макет же показал... я не знаю вашу разметку там....укажите ид формы которую отправляете $('#search_funding') если у вас
    <form id="search_funding"...
    ой ли... костыль костыльный - в инспекторе включите непрерывные логи - и посмотрите сколько раз страница перезагружается
     
  12. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    Не буду спорить возможно костыль, но я так понял что это вопрос сессий, браузер запрашивает при нажатии кнопки возврата из кэша страницу которой уже нету в кэше, и ошибка выходит на уровне браузера, если разрешить сессии кэш не затирать какое то время то все работает.
     
  13. art_pr

    art_pr Новичок

    С нами с:
    30 ноя 2020
    Сообщения:
    14
    Симпатии:
    0
    кстати посмотрел по логам, страница search один раз загружается(та что выше это я заходил первый раз, потом возврат делал):
    upload_2022-7-1_9-37-36.png