2014-10-17 2 views
0
<?php 
$rs = mysql_query("SELECT * FROM users WHERE id='$_SESSION[user_id]'"); 
while ($row= mysql_fetch_array($rs)) 
{ 
    $starter= $row['id']; 
    $user_name= $row['user_name']; 
} 


$starterID=$starter; 
$companyID=$_GET['id']; 


$input = $_POST['message']; 


date_default_timezone_set('Europe/Helsinki'); 
$timestamp = date('h:i', time()); 


$file = $companyID." and ".$starterID.".txt"; 


if (file_exists($file)) { 
    $file = $companyID." and ".$starterID.".txt"; 
} else { 
    $file = $starterID." and ".$companyID.".txt"; 
} 


$current = file_get_contents($file); 

$current.= "<b>$user_name</b> <br> $input $timestamp\n<br>"; 

if(isset($_POST['message'])){ 
file_put_contents($file, $current); 
} 

echo $current; 
?> 

<form action="" method="post"> 
<input type="text" name="message" autocomplete="off"> 
<input type="submit"> 
</form> 

Так что это мой очень простой чат между двумя зарегистрированными пользователями.Обновление страницы представляет мою форму

Когда пользователь с ID 154 начинает разговор с ID 156, создается файл 154 и 156.txt. В этом файле хранятся все сообщения.

Моя проблема заключается в следующем: когда, скажем, пользователь 154 пишет сообщение и отправляет его, нажимая кнопку отправки, страница обновляется, и сообщение сохраняется в файле, а также печатается. После этого поле ввода очищается, но если пользователи обновляют страницу, то одно и то же сообщение сохраняется и печатается снова.

Что делать, чтобы предотвратить повторное обновление страницы?

+0

вы можете проверить последние сообщения, если это sa меня или нет. Если же то же самое, не выполняйте никаких действий. – Khushboo

+0

это будет происходить каждый раз, когда вы обновляете предыдущий контент, в результате ваш 'if (isset ($ _ POST ['message']))' выполняет и сохраняет содержимое. Используйте предложение @Apul Gupta – Ronser

+1

'unset ($ _POST) 'в последнем скрипте. –

ответ

1

Ваша страница по-прежнему сохраняет значение $_POST. Итак, если вы обновите его. iIts перейдет в файл print.

Итак, добавьте header для перенаправления пользователя, как это:

if(isset($_POST['message'])){ 
    file_put_contents($file, $current); 
    header('Location:Your_File_name.php') 
} 
0

Я попробовал все предложение, но, к сожалению, те, не работает для меня.

Я сделал некоторые дополнительные исследования и обнаружили, что лучшее решение для этого случая и мне было следующее:

исходный код:

if(isset($_POST['message']) && $_POST != null){ 
file_put_contents($file, $current); 
} 

решение:

if(isset($_POST['message']) && $_POST != null){ 
file_put_contents($file, $current); 
echo' <script type="text/javascript"> 
location.reload(); 
</script>'; 
} 

Спасибо за предложения , они дали мне лучшую идею, что искать :)