За последние 24 часа нас посетили 16965 программистов и 1314 роботов. Сейчас ищут 1427 программистов ...

Сохранение значения при возврате (history.back)

Тема в разделе "HTML и CSS", создана пользователем SkyKiller, 31 мар 2008.

  1. SkyKiller

    SkyKiller Активный пользователь

    С нами с:
    1 ноя 2007
    Сообщения:
    166
    Симпатии:
    0
    Адрес:
    Новосибирск
    Приветствую!
    Может быть, ламерский вопрос и я туплю сегодня, но необходимо, чтобы у меня в форме сохранялись значения.
    Например, несколько INPUT-ов типа ТЕХТ, ухожу на проверку введёных значений. А при нажатии BACK (или javascript:history.back()) возвращаюсь на страницу, а поля уже пустые и приходится заново вбивать.
    Как решить сию проблему?
     
  2. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    бэк не решит эту проблему.

    можно сохранять введенные данные и ури переходов в сессию, и возвращать назад не яваскриптовым бэком, а просто прямой ссылкой.
     
  3. SkyKiller

    SkyKiller Активный пользователь

    С нами с:
    1 ноя 2007
    Сообщения:
    166
    Симпатии:
    0
    Адрес:
    Новосибирск
    То есть,
    Код (Text):
    1. <input type="text" .... ... ... name="Line1" value="<?php echo $_SESSION['LINE1_Val']; ?>">
    Образно так сделать? И при сабмите переприсваивать значения переменных сессии?
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    При переходе на другую/(эту же страницу с рефрешем) сеанс яваскрипта убивается.
     
  5. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    PHP:
    1.  
    2. <?php
    3. $ok = $_POST['ok'];
    4. if (isset ($ok)) echo "Hello, ".$_POST['login'];
    5.  
    6. echo "
    7. <form name='qwerty' method='post' action='?'>
    8. <input type='text' name='login' value='".$_POST['login']."'>
    9. <input type='submit' name='ok' value='Get now...'>
    10. </form>
    11. ";
    12. ?>
    13.  
    Оно? У меня работает, во всяком случае :)
     
  6. SkyKiller

    SkyKiller Активный пользователь

    С нами с:
    1 ноя 2007
    Сообщения:
    166
    Симпатии:
    0
    Адрес:
    Новосибирск
    Нет, я по-другому сделал...
    В самом начале скрипта:
    Код (Text):
    1. if (!isset($_SESSION['FORM_Name'])) $_SESSION['FORM_Name'] = '';
    А в самой форме:
    Код (Text):
    1. <input name="FORM_Name" type="text" size="30" maxlength="30" value="<?php echo $_SESSION['FORM_Name']; ?>"/>
    В обработчике формы:
    Код (Text):
    1. $tmpvar = @substr($_POST["FORM_Name"],0,30); $FORM_Name = $_SESSION['FORM_Name'] = htmlspecialchars(stripslashes($tmpvar), ENT_QUOTES);
    В таком варианте вроде работает. Всем спасибо!

    P.S. Единственная проблема в том, как сохранить значения DropDown-списков... :(
     
  7. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    пишите их также в сессию, а на странице вешаете функцию на загрузку - проверить данные и выбрать нужные поля в селектах.
     
  8. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
  9. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    SkyKiller
    Честно говоря, не понимаю, зачем тут нужно использовать сессии. Если задача именно такая (чтобы при нажати в браузере на кнопку "Назад" в value остались значения)
     
  10. SkyKiller

    SkyKiller Активный пользователь

    С нами с:
    1 ноя 2007
    Сообщения:
    166
    Симпатии:
    0
    Адрес:
    Новосибирск
    Да, задача именно такая...
    Я не могу понять одного... Почему вот этот простейший пример
    PHP:
    1. <?php
    2. // Временно, для контроля ошибок
    3. ini_set('display_errors',1);
    4.  
    5. if ($QUERY_STRING == "") {
    6.     // Выводим форму для заполнения
    7. echo '
    8. <form id="mainform" name="mainform" method="post" action="test.php?check">
    9.    <input name="FORM_Name" type="text" size="30" maxlength="30"/><br />
    10.    <input name="FORM_Day" type="text" size="2" maxlength="2"/><br />
    11.    <input type="submit" name="Submit" value="Отправить"/>
    12. </form>
    13. ';
    14.  
    15. }
    16.  
    17. else    // CHECK
    18.  
    19. if ($QUERY_STRING == "check") {
    20.   echo "Вернитесь <a href=\"javascript:history.back()\">назад</a> и исправьте ошибки.<br />";
    21. } // End CHECK
    22. ?>
    прекрасно работает, а более сложный (с переменными и прочими проверками полей на валидность) - не работает :(
    Весь моск уже сломал себе... В какой-то момент модернизации кода значения просто перестают сохраняться и всё...
    А в этом примере даже VALUE никакие строкам указывать не надо - и так сохраняет...