Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > запись в файл гостевой при нажатии f5


Автор: supervladislav 2.7.2007, 21:35
субж !!!у меня скрипт гостевой на странице вывода ))))))всёвремя при нажатии f5 происходит запись в файл ,как 
сделать так чтоб повторная  запись не производилась.
я пробовал использовать что-то вроде вот ентого
Код

$_SERVER['REQUEST_METHOD']=='POST'

и вот ещё интересная вещь почему неработаю кукезы)))))
я использовал что-то вроде того что ниже
Код

if(!isset($_COOKIE['kolosov']))
{\\\\\\\\скрипт записи}

в броузере они включены и в списках кукезов есть ))))тоесть они сервером отправляются
Код

<<p style="text-align:center;margin-battom:5px;margin-top:0px;">
<form method=post  action="<?php $_SERVER['PHP_SELF'];?>">
<h4>имя</h4><p align=center><input type="text" name="fuck" value="<?php echo($_POST['fuck']); ?>" size=20></p>
<?php if(($_SERVER['REQUEST_METHOD']=='POST') && empty($_POST['soob'])){echo('<p style="text-align:center;color:red;"><b>надо заполнить поле &quot;имя&quot;</b></p>');} ?><br>
<h4>ваш е-майл</h4><p align=center><input type="text" name="email" value="<?php echo($_POST['email']);?>" size=20></p><?php if(($_SERVER['REQUEST_METHOD']=='POST') && empty($_POST['soob'])){echo('<p style="text-align:center;color:red;"><b>надо заполнить поле &quot;емайл&quot;</b></p>');} ?><br>
<h4>ваш адресс(типа www.adress.ru без http)</h4><p align=center>
<input type="text" name="adress" value="<?php echo($_POST['adress']);?>"
size=20></p><br>
<h4>введите ваше сообщение</h4>
<p align=center><textarea name="soob" wrap=hard  cols="26%" rows="11%"><?php echo($_POST['soob']);?></textarea>
<?php if(($_SERVER['REQUEST_METHOD']=='POST') && empty($_POST['soob'])){echo('<p style="text-align:center;color:red;"><b>надо заполнить поле &quot;сообщение&quot;</b></p>');} ?></p><br>

<center>
<INPUT type=submit value=отправить>
<INPUT type=reset value=обнулить>
</form></p>
<?php
$direct="ot";

if(!empty($_POST['fuck']) && !empty($_POST['email']) && !empty($_POST['soob']) && strlen($_POST['fuck'])<=15 &&
strlen($_POST['email'])<=50 && strlen($_POST['soob'])<=1000 && !isset($_COOKIE['kolosov']) && ($_SERVER['REQUEST_METHOD']=='POST'))
{$p=htmlspecialchars ($_POST['adress']."\n");
$b=htmlspecialchars ($_POST['email']."\n");
$c=htmlspecialchars($_POST['soob']."\n");
$a=htmlspecialchars ($_POST['fuck']."\n");
$ip=$_SERVER['REMOTE_ADDR'];
$d=date("j F Y h:i:s");
mail("[email protected]","сайт против творчества группы алиса",$c);
$vse2=array($a,$b,$c,$d,$p,$ip);
$d=implode('|',$vse2);
$cd=time();
$file=fopen("$direct/$cd.txt","w+");
$b1=strip_tags($d,'<b>');
fwrite($file,$b1);
fclose($file);
setcookie("kolosov","1",time()+200000);
header("location:http://kolosov.jino-net.ru/gest.php");

}

 ?>




</td>
</tr>
<tr>
<td colspan=2><p style="text-align:center;font-weight:bolder;color:#E48437;">все стихи и рассказы copiright by Алексей Колосов© 1999-2001</p></td>
</tr>
</table>


</body>
</html>

как сделать так чтоб данные при нажатии кнопки ф5 не субмитились 

Автор: Ravanger 3.7.2007, 15:17
сбрасывай пост данные, после того как их обработал

Код

unset($_POST)

Автор: SelenIT 3.7.2007, 16:33
Ravanger, а смысл???

supervladislav, сомневаюсь, что у Вас куки отправляются. У Вас setcookie и header вызываются после вывода, а это верная http://phpfaq.ru/headers вида "Cannot add header information - headers already sent...".

Поставьте обработку пост-данных в самое начало скрипта - до любого вывода. Тогда, по идее, и куки заработают, и редирект в 37-й строке тоже заработает и решит проблему F5 - для этого-то он там и стоит smile.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)