Отправить комментарий, предложения или отзыв

#php #mysql

#php #mysql

Вопрос:

Привет, я хочу внедрить систему комментариев, но проблема в том, что если пользователь обновит страницу, она снова будет сохранена в базе данных. Я сделал то же самое на своем другом веб-сайте, но там это для одной страницы, поэтому я использовал заголовок (местоположение: index.php ) там так , что обновление не работает , но здесь я использую template.php файл , который используется на 200 страницах , поэтому я поместил форму комментария в template.php (который включен во все страницы). Пожалуйста, помогите мне с этим.Я просто хочу, чтобы комментарий не сохранялся снова и снова, если пользователь обновляет страницу. Спасибо.

После долгого чтения это код, который я использую в своей форме action =»addcomment.php » и addcomment.php имеет следующий код

 <?php
require_once("appvars.php");
require_once("connectvars.php");
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if(function_exists('get_magic_quotes_gpc') amp;amp; get_magic_quotes_gpc() === 1){
  $_POST = array_map( 'stripslashes', $_POST );
  $_GET = array_map( 'stripslashes', $_GET );
  $_COOKIE = array_map( 'stripslashes', $_COOKIE );
}
if (isset($_POST['commentsubmit']))
{
$type=mysqli_real_escape_string($dbc,trim($_POST['type']));
$name=mysqli_real_escape_string($dbc,trim($_POST['username']));
$email=mysqli_real_escape_string($dbc,trim($_POST['useremail'];))
$subject=mysqli_real_escape_string($dbc,trim($_POST['subject']));
$comment=mysqli_real_escape_string($dbc,trim($_POST['usercomment']));
$link=mysqli_real_escape_string($dbc,trim($_POST['link']));
$query = "INSERT INTO comments (`type`,`name`,`email`,`subject`,`comment`,`date`,`link`) VALUES         ('$type','$name','$email','$subject','$comment',NOW(),'$link')";
$result=mysqli_query($dbc, $query) or die('error query'); 
?>
  

Пожалуйста, дайте мне знать, как перенаправить на ссылку, хранящуюся в переменной $link, и отправьте благодарность, если запрос выполнен успешно

Комментарии:

1. Я ничего не знаю о вашей реализации, но я думаю, что Post / Redirect / Get может решить вашу проблему.

2. Код, добавленный для header("Location: $link", 302); exit(); } получения ошибки перенаправления, не может изменить информацию заголовка — заголовки, уже отправленные

3. ошибка «невозможно изменить заголовок» возникает, когда вывод уже отправлен в браузер (ie. повторите ‘foo’, но также и при наличии пробела перед открытым тегом php ( <?php )

Ответ №1:

Обычной практикой является отправка формы в ie. submit.php , которая сохраняет комментарий и возвращает (перенаправляет) пользователя обратно на страницу, где был размещен комментарий. Обновление просто обновит страницу, а не перезагрузит. Другие решения используют форму ajax или передают уникальный идентификатор с формой, чтобы ее нельзя было опубликовать дважды.

Комментарии:

1. спасибо, это именно то, что сказал мой frnd, мог бы указать код перенаправления …. хотя я его ищу

2. перенаправление так же просто, как и написание header('Location: somesite.php'); , смотрите также nl3.php.net/manual/en/function . header.php и faqs.org/rfcs/rfc2616.html