И вновь о POST запросах

  • Автор темы Автор темы CjEcho
  • Дата начала Дата начала
fixxxer, у тебя температура?

CjEcho, чтобы не было проблем с F5, после POST запроса надо ВСЕГДА делать переадресацию, чтобы браузер запросил результат поста через GET и F5 просто отобразит их повторно.
 
dimagolov
Ну зачем прям всегда... Например, если при валидации формы произошла ошибка, обычно редирект не делают
 
да ну ладно. еще как делают. на форму, в которой заполнены правильные поля и отмечены как ошибочные те, при валидации которых возникла ошибка.
какой понт дать юзеру возможность нажать Ф5 и отправить еще раз тот набор данных, который мы уже определили, как невалидный?
 
Автор оригинала: dimagolov

CjEcho, чтобы не было проблем с F5, после POST запроса надо ВСЕГДА делать переадресацию, чтобы браузер запросил результат поста через GET и F5 просто отобразит их повторно.
Но ведь проблема же не в том, что по F5 идут те же POST данные, а в том, что при нажатии на 'Submit' POST данные не передаются...


<FORM name='moderate' action='admin.php' method='post'>
<BUTTON type='submit'>Submit</BUTTON>
</FORM>

-~{}~ 24.09.09 09:33:

Хотелось бы именно редирект на ту же страницу выполнять... Кстати в mail.ru при голосовании за фото это же как то реализованно ... Ну там, рисуется фотка и кнопочки +1 +2 +3 +4 +5, при нажатии на них отображается эта же страница, но уже с другой фотографией (другим элементом БД)...
 
dimagolov
ну в том то и дело, что если он нажмет Ф5 и отправит ещё раз, ничего не произойдет.. это если форма отправилась без ошибок, и при нажатии Ф5 она бы ещё раз отправилась, тогда конечно редирект нужен..
а так это немного лишнее) придется запихивать в сессию все содержимое формы)
 
CjEcho

PHP:
<?php #ПРОВЕРКА POST ДАННЫХ


#НУЖНО ISSET А НЕ EMPTY
if(isset($_POST))
 $posterror=1;
else
 $posterror=0;

$user_login=$_POST['user_login'];
$user_password=$_POST['user_password'];

    #DEBUGGIN
    echo $posterror;
    echo $user_login;
    echo $user_password;
?>
<script>
function Khopka(HR)
{
 document.moderate.action = HR;
 document.moderate.submit();
 return false;
}
</script>
<FORM name='moderate' action='' method='post'>

    <INPUT TYPE='text' NAME='user_login' VALUE='<?php echo $user_login;?>'>
    <INPUT TYPE='text' NAME='user_password' VALUE='<?php echo $user_password;?>'>

   <a href='?кнопка=1' onClick='return Khopka(this.href);'>Одобрить и добавить</a>
    <a href='?кнопка=2' onClick='return Khopka(this.href);'>Отложить</a>
    <a href='?кнопка=3' onClick='return Khopka(this.href);'>Удалить</a>

</FORM>






а лучше:

<input type="submit" name="submit[add]" value="add">
<input type="submit" name="submit[edit]" value="edit">
<input type="submit" name="submit[delete]" value="delete">
 
Заработало! Огромное спасибо, <input type='submit'> не использую по причине незнания, как сделать масштабируюмую по ширине графическую кнопку с использованием CSS. Да и вообще, было бы очень интересно узнать возможно ли это сделать.

Последний вопрос ... с чего лучше начать изучение javascript? Может быть есть что то очень доступное и качественное...

Еще раз большое спасибо за внимание!
 
.input_button{
background: #87CEEB url(../images/m29.gif) no-repeat top;
border: 0px none;
display: inline;
line-height: 18px;
font: bold 11px Arial, Helvetica, sans-serif;
color: White;
width: 50px;
height: 18px;
text-align: left;
white-space: nowrap;
vertical-align: baseline;
cursor: pointer;
}
 
Спасибо, за всё!

Савелей
#НУЖНО ISSET А НЕ EMPTY
if(isset($_POST))
$posterror=1;
else
$posterror=0;

... интересно, но isset в любом случае пишет 1, даже если просто зайду на 'sitename.ru/admin.php', в случае же с empty всё работает корректно...
 
Сверху