Возник такой вопрос, у меня страница профиля пользователя определяются GET параметром ( site.com/profile.php?id=1 ) в базе данных содержится таблица user в которую пользователи попадают после регистрации и им присваивается этот самый id. Как сделать, чтоб если запись в базе данных с таким id, то открывало страницу пользователя, а если записи с таким id нет, то открывало страницу 404. За ранее спасибо!
<?php
if(isset($_GET['id']) and is_numeric($_GET['id']))
{
//тут должно быть подключение к базе данных, если не предусмотрено заранее
$query = mysql_query("SELECT COUNT(*) FROM `таблица_users` WHERE id='".intval($_GET["id"])."'") or die(mysql_error());
$count = mysql_fetch_array($query);
if($count[0] > 0)
{
die("<script>location.href='http://site.com/profile.php?id=".$_GET["id"]."'</script>");
}
else
{
die("<script>location.href='http://site.com/404'</script>");
}
}
?>
Так или иначе, не забываем про безопасность и обязательно проверяем является ли $_GET["id"]
числом или приводим к типу intval($_GET["id"])
перед подстановкой в SQL запрос
А если отключить в браузере Javascript?
<?php
if(isset($_GET['id']) && (int)($_GET['id'])!==0 /*если придет строка в параметре*/ )
{
//тут должно быть подключение к базе данных, если не предусмотрено заранее
$query = mysql_query("SELECT COUNT(*) FROM `таблица_users` WHERE id='".intval($_GET["id"])."'") or die(mysql_error());
$count = mysql_fetch_array($query);
if($count[0] > 0)
{
header( 'Refresh: 0; url=/profile.php?id=".$_GET["id"]' );
}
else
{
header( 'Refresh: 0; url=/error404.html' );
}
}
?>
Данные из базы можно получить многими способами, поэтому этот момент пропустим.
Оба соседних ответа предлагают сделать ненужные редиректы. Если для страницы пользователя это ещё можно как-то оправдать, то страница 404 должна иметь статус 404, а не 302/200.
$user_id = isset($_GET['id']) ? (int)$_GET['id'] : false;
$user = $user_id ? getUserDataById($user_id) : false;
if ($user) {
// Рендерим страницу профиля пользователя include/echo/UserPage::render($user)
?>
<h1><?=htmlspecialchars($user['name'])?></h1>
...
<?php
} else {
header('404 Not found');
readfile($_SERVER['DOCUMENT_ROOT'].'/errors/404.html');
exit();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
ЗдравствуйтеЕсть таблица с диалогами и сообщениями (обычный ассоциативный запрос)
В Eclipse в редакторе кода пытаюсь открыть из своего кода класс драйвера orgpostgresql