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

dimagolov

Новичок
fixxxer, у тебя температура?

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

Beavis

Banned
dimagolov
Ну зачем прям всегда... Например, если при валидации формы произошла ошибка, обычно редирект не делают
 

dimagolov

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

CjEcho

Новичок
Автор оригинала: 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, при нажатии на них отображается эта же страница, но уже с другой фотографией (другим элементом БД)...
 

Beavis

Banned
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">
 

CjEcho

Новичок
Заработало! Огромное спасибо, <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;
}
 

CjEcho

Новичок
Спасибо, за всё!

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

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