Jump to content
  • 0

редирект на 404


macbeth9
 Share

Question

Все привет! Появилась небольшая проблема, которую я не в силах решить, и так, есть код

<? include ("../blocks/db.php");

if (isset($_GET['id'])) {$id = $_GET['id']; }
if (!isset($id)) {$id = 1;}
if (!preg_match("|^[\d]+$|", $id)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}
$result = mysql_query("SELECT * FROM goroda WHERE id='$id'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел.<br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
}
else
{
echo ('Ошибка');
exit();
}
?>

Видите есть вывод ошибок exit ("<p>Неверный формат запроса! Проверьте URL!"); т.е при неправильном наборе урл или не выводе информации из базы появляются они, а мне нужно чтобы вместо этого выводилась страница ошибки 404..подскажите как так сделать?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Ну сделайте файл 404.php, в котором будет что-то типа

<?php
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
echo "Страница не найдена и всё такое";
die();

И вместо exit используйте include('404.php');

Link to comment
Share on other sites

  • 0
Самое простое header ("Location: /404");

Пересылает по адресу /404. Желательно бы еще генерить заголовок ответа.

Я, кстати, думаю, что это неправильно так делать. Допустим, если ссылку откуда-то скопипастить и, например, «не зацепить» один символ, то будет непоянтно почему 404, а вот если 404 получать прямо на странице с тем адресом, который ввели, то будет несколько нагляднне что ли...

Link to comment
Share on other sites

  • 0
ммм пробывал не работает(( прописываю

header("Location: ../404.php");

exit ;

вместо

exit ("<p>Неверный формат запроса! Проверьте URL!");

появляется ошибка Warning: Cannot modify header information - headers already sent by

Ну, видимо, на страницу уже начался вывод. Заголовки надо посылать до того, как был выведен хотя бы один символ. Посему сначала логика, потом — представление.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy