Задать вопрос
@storm-coder

Как правильно перезапросить страницу в данном контексте?

Здравствуйте! Как правильно перезапросить страницу в данном контексте? В этом примере браузер выдает ошибку "ERR_TOO_MANY_REDIRECTS":

<?php
			/* Основные настройки */

define(DB_HOST, "localhost"); 
define(DB_LOGIN, "root");
define(DB_PASSWORD, "12345"); 
define(DB_NAME, "gbook");
$link = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME); // соединение с БД и выбор БД



			/* / Основные настройки */



			/* Сохранение (добавление) записи в БД */

// отфильтровать данные:
function clearStr($data) { 
	return trim(strip_tags($data));
}


if ($_SERVER['REQUEST_METHOD'] == 'POST') { // проверить, была ли отправлена форма
	$name = clearStr($_POST['name']); // принять и отфильтровать данные из формы
	$email = clearStr($_POST['email']); 
	$msg = clearStr($_POST['msg']);

	$sql = "INSERT INTO msgs (name, email, msg)
					VALUES ('$name', '$email', '$msg')";
	// создать таблицу "msgs" с полями "name, email, msg" и вставить данные '$name', '$email', '$msg' в соответствующие поля
	$result = mysqli_query($link, $sql); // отправить запрос в БД
	// еще можно написать проверку "все ли поля пришли" - http://www.cyberforum.ru/php-beginners/thread1035651.html
} 


	echo mysqli_error($link); 


header('Location: ' . $_SERVER['REQUEST_URI']); // засада
exit;


			/* / Сохранение (добавление) записи в БД */




			/* Удаление записи из БД */

if (isset($_GET['del'])) {
	$del = abs((int)$_GET['del']); 

	if ($del) { // true - положительное число
		$sql = "DELETE FROM msgs WHERE id = $del"; // формирование запроса на удаление записи
		mysqli_query($link, $sql); // выполнение запроса на удаление
	}
}


			/* / Удаление записи из БД */
?>


<h3>Оставьте запись в нашей Гостевой книге</h3>

<form method="post" action="<?= $_SERVER['REQUEST_URI']?>"> 
Имя: <br /><input type="text" name="name" /><br />
Email: <br /><input type="text" name="email" /><br />
Сообщение: <br /><textarea name="msg"></textarea><br />

<br />

<input type="submit" value="Отправить!" />

</form>


<?php
			/* Вывод записей из БД */

// Сформируйте SQL-запрос на выборку всех данных из таблицы msgs в обратном порядке:
$sql = "SELECT id, name, email, msg,
	UNIX_TIMESTAMP(datetime) as dt   
	ORDER BY id DESC";


$res = mysqli_query($link, $sql);
echo mysqli_error($link); // вывести сообщение об ошибке (если ошибка есть)
mysqli_close($link); // закрыть соединение с БД

while ($row = mysqli_fetch_assoc($res) ) { 
    $id = $row['id']; 
	$name = $row['name'];
	$email = $row['email'];
	$dt = date('d-m-Y H:i:s', $row['dt']); 
	$msg = $row['msg'];
// $row - результат выборки, количество записей

// вывести результат выборки:
echo <<<HTML
<hr>
<p>
	<a href="mailto:$email"> $name </a> @ $dt	
	<br> $msg
</p>
<p align='right'>
	<a href="{$_SERVER['REQUEST_URI']}&del=$id">Удаление</a> <!-- здесь улетает запрос на удаление записи (методом GET - ссылка) -->
</p>

HTML;
}




			/* / Вывод записей из БД */
?>


Делаю по примеру: https://www.youtube.com/watch?v=790eRMnM7vQ&list=P...
1:26:20
но у меня вылетает ошибка...
  • Вопрос задан
  • 174 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы