повторная передача данных при рефреш

npokypop

Новичок
повторная передача данных при рефреш

Hi!
Есть скрипт script.php для пополнения счета пользователей
PHP:
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head> 
<html> 
<? 
$hostname = "localhost"; 
$user = "dbuser"; 
$password = "dbpasswd"; 
$database = "dbuname"; 
$link = mysql_connect ($hostname, $user, $password); 
mysql_select_db($database, $link); 
$result=mysql_query("SELECT id,login,full_name FROM users WHERE is_deleted='0' ORDER BY users.full_name ASC"); 
if (isset($_POST['submit'])) 
{
// команда для передачи платежа на имя пользователя с необходимыми ключами
exec("/commands ".$_POST[sum]." -a ".$_POST[name]." -i"); 
echo 'It was made a payment on personal<br> account number '.$_POST[name].' at the rate of '.$_POST[sum].' roubles.'; 
} 
echo '<form method="post" action="script.php">'; 
echo '<select name="name">'; 
while ($row = mysql_fetch_array($result)) 
{ 
echo '<option value="'.$row[id].'">'.$row[full_name].'</option>'; 
} 
echo '</select>'; 
echo '<br>'; 
echo '<input type="text" name="sum" value="">'; 
echo '<br>'; 
echo '<input type="submit" name="submit" value="Make payment">'; 
echo '</form>'; 
?> 
</html>
Все работает, но!
Как запретить (предотвратить) повторную передачу данных (повторное пополнение счета!) при рефреше страницы?
 

npokypop

Новичок
Да, спасибо за ссылку, я смотрел ее прежде чему задать вопрос, уже голову себе свернул...
не полуается! с пхп недавно начал...
в лучшем случае добился только того, что браузер вновь не запрашивает подтвержение на повторную передачу данных, а сами данные тогда не передаются!!
 
npokypop, видимо плохо читал
PHP:
 /* 
          записываем данные
        */
        /*Заставляем браузер запросить нашу страницу с формой повторно*/
        header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?ok'); // любо на другой скрипт
        /*
            желательно при этом помнить о пользователях, у которых 
            отключены куки и которые могут потерять идентификатор сессии,
            но это отдельный разговор
        */
        exit;
 

Фанат

oncle terrible
Команда форума
что выводит
echo ('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?ok');
 

npokypop

Новичок
Сенкс, уже лучше, браузер не ругается, тьфу, не запрашивает повтор, данные передаются, но теперь эхо не выводится об успешном платеже
PHP:
echo 'It was made a payment on personal<br> account number '.$_POST[name].' at the rate of '.$_POST[sum].' roubles.';
как теперь это побороть?
 

Фанат

oncle terrible
Команда форума
это надо выводить после редиректа, проверяя параметр ok
 

SiMM

Новичок
Location не приводит к тому, что браузер формирует POST-запрос, соответственно, ничего в $_POST ты и не увидишь. Передавай эти данные GET'ом, в URL'е Location'а
 

npokypop

Новичок
Фанат
Все так, но тупо выводит ответ (эхо)
It was made a payment on personal
account number at the rate of roubles.
А надо типа
It was made a payment on personal
account number 1 at the rate of 100 roubles
Можно конечно ограничиться и одним "универсальным" ответом но хотелось бы вытащить эти значения _POST[name] и $_POST[sum]
 
Сверху