Очистка формы при перезагрузке страницы средствами PHP

Тема в разделе "PHP", создана пользователем funnywheel, 7 авг 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. funnywheel

    funnywheel

    Регистр.:
    6 авг 2010
    Сообщения:
    178
    Симпатии:
    111
    Ситуёвина:

    1. Проверяется GeoIP юзера
    2. В зависимости от города определяется несколько переменных, которые выводятся в верстку (телефон, адрес и др. - не суть важно)
    3. Генерится селект со списком городов, с указанным атрибутом selected для option'a с определенным ранее городом. (селект служит для возможности вручную выбрать город)

    Трабл:
    1. Если выбрать город вручную, после чего перезагрузить страницу - значение select'a после перезагрузки остается прежним (кэшируется гдето или хз как это работает, всегда раньше сбрасывал при помощи jQuery и не заморачивался).
    2. Остальные мои данные выводятся, естественно, для города, который определяется через геоип.

    Вопрос:
    Как сбросить select при загрузке страницы средствами php? А если у кого-то просвященного будет достаточно времени, то хотелось-бы узнать, где и какого черта это значение вообще хранится.
     
  2. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    160
    Симпатии:
    46
    Скорее всего это куки. Данные сохраняются в браузере. Тебе нужно установить либо короткое время либо удалить.
     
    E-body нравится это.
  3. funnywheel

    funnywheel

    Регистр.:
    6 авг 2010
    Сообщения:
    178
    Симпатии:
    111
    Вроде-бы нет. В Firefox в "Настройки->Приватность->Удалить отдельные куки" нет никаких упоминаний. Точнее куки есть, но не те, авторизации всякие, гугл аналитикс и тд.
    Ничего связанного с формами я там не вижу.

    На jQuery сброс input'ов, select'ов и других элементов формы производится методом .reset(), выглядит как-то так:
    Код:
    $('#formid').reset();
    
    Вот мне нужен аналог, только на PHP.
     
  4. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.718
    Симпатии:
    5.693
    Можно перефразировать вопрос.
    Я чо то написал или стырил и не пойму как работает...
    Вы мне объясните, потому как я хер знает, но кода нет.
    Аналог очистки форм: type reset
    Код покажите, а то флудобред
     
    Q_BASIC нравится это.
  5. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Может в localstorage сохраняться, а так хз. Ничего не понятно, был бы исходник
     
  6. funnywheel

    funnywheel

    Регистр.:
    6 авг 2010
    Сообщения:
    178
    Симпатии:
    111
    Забавно, думал расписал достаточно понятно. Сейчас перефразирую:

    Есть лендинг. К нему подключен GeoIP скриптец, вот код:
    PHP:
      require_once './SxGeo.php';
      
    $ip $_SERVER['REMOTE_ADDR'];
       
    $SxGeo = new SxGeo('SxGeoCity.dat');
       
    $city $SxGeo->get($ip);
       
    $cityName = ($city['city']['name_en']);
    В зависимости от определенного города, который получаю в $cityName отрабатывает switch:
    PHP:
    switch ($cityName) {
        case 
    "Moscow":
           
    $citylilst =  ''
                 
    '<option value="Москва" selected="" >Москва</option>'
    //           список option'ов
                 
    '<option value="Нижний Новгород">Нижний Новгород</option>';
           
    $phone 'номер телефона';
           
    $addr 'адрес';
           
    $c_city 'Москва';
           
    $map 'карта';
           break;
    //     остальные case'ы, default по аналогии
    }
    Далее в верстку выводится в селекты:
    PHP:
    <?php echo $cityList?>
    и соответственно остальные переменные.

    Теперь вопрос
    Если мы заходим с IP из МСК - скрипт нормально отрабатывает, все соответствующие значения выводятся.

    Но, если мы вручную изменяем значение select'a, например на Нижний Новгород, после перезагрузки страницы значение select'a остается "нижний новгород", а все переменные выводятся, как и должны, для Москвы.

    Как сбросить данные формы, которые указал пользователь при перезагрузке (загрузке) страницы на php, т.к. если сбросить их на JS - потеряю то, что сгенерил switch.
     
  7. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.718
    Симпатии:
    5.693
    Полагаю что причина в браузере.
    <select autocomplete="off" ... >
     
    Последнее редактирование: 7 авг 2015
  8. funnywheel

    funnywheel

    Регистр.:
    6 авг 2010
    Сообщения:
    178
    Симпатии:
    111
    увы, не то... автокомплит ведь несет несколько другую задачу, подставляет значения в текстовые инпуты, которые вводились на этом/других сайтах в поля, имеющие точно такой атрибут name

    Зато обнаружил, что перезагрузка со сбросом кэша, по [ctrl]+[f5], сбрасывает сохраненное значение.
    Может есть вариант, когда юзер перезагружает страничку, делать перезагрузку с кэшем? графики на странице не очень много, не думаю что пойдет значительно в ущерб производительности.

    UPD: таки да, нашел
    PHP:
    header("Cache-Control: no-cache, must-revalidate");
    UPD2: если у селекта не указано
    HTML:
    autocomplete="off"
    то и заголовок с no-cache не срабатывает
     
    Последнее редактирование: 8 авг 2015
Статус темы:
Закрыта.