|
|
|
| Я еще делетан в PHP, и не раз для себя задавался проблемой вызова этой ошибки специально.
Вот собствено и все. Проблема в том что я хочу чтобы мой скрипт извлекающий из базы хтмл код и выводящий в линк с параметрами например (content.php?name=about) в случае с параметром каторого нет в базе данных например content.php?name=sgsgsgsg, вообщем с нипонятным, или сам скрипт content.php выдавал ошибку что страница отсутсвует.
Конечно с самим сриптом все понятно можно в Хетакес все выставить, но как же быть с параметрами, можно и правило как бы указать об отсутствии таковых страниц, но как это это не смотриться :) Охота, чтобы показывалсь красивая ошибка хостинга :)
Думаю понятно объяснил.
Тьфу-ты вот чего еще не спросил:
как зделать в MySQL чтобы определенная страница как бы отключалась на время ну всмысле она была, но только ее в админке можно было временно отключить.
Пытался сделать так - почти получилось, вот олько старницы просто не было , а мне надо чтобы ошибка отображалась. | |
|
|
|
|
|
|
|
для: PAUELL
(16.12.2007 в 00:59)
| | проверяйте параметр $_GET (рег.выражением, наверное) и, если что не так, - осуществляйте переадресацию на страницу ошибки. вроде так.
только не Хетакес, а htaccess :) | |
|
|
|
|
|
|
|
для: afdm
(16.12.2007 в 01:57)
| | ни то не другое не понятно ;(
можно на примере?
<?
// Осуществляем соединение с базой данных
include "../../include/config.php";
$name = $_GET['name'];
$query = "SELECT * FROM pages";
$pages = mysql_query ($query);
if (!$pages) puterror("<h4>Ошибка при обращении к модулю Дополнительного контента</h4>");
while ($p = mysql_fetch_array($pages))
{
if($name == $p['name'])
{
$mtitle = $p['title'];
$mkeywords = $p['keywords'];
$mdescription = $p['description'];
echo $p['content'];
}
else
{
echo "<h4>Запрашиваемая вами старница не существует</h4>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: PAUELL
(16.12.2007 в 02:23)
| |
<?php
// Ну допустим, если переданный параметр GET не равен параметру в базе (как-то так :-/)
if ($_GET['name'] != $p['name'])
// То осуществляем переход на страницу ошибки (не забудьте изменить 404.php на свою страницу)
echo "<html><head>
<meta http-equiv='refresh' content='0; url=404.php'>
</head>";
?>
|
Вот как-то так наверное... :-/
Впрочем, может быть я и ошибаюсь... | |
|
|
|
|
|
|
|
для: PAUELL
(16.12.2007 в 02:23)
| | или же можно как-то вот так проверять параметр GET:
<?php
// Если параметр содержит что-то кроме цифр, то
if(!preg_match("|^[\d]*$|",$_GET['page'])) // Осуществляем переадресацию на страницу ошибки
?>
|
По рег. выражениям ничем особо помочь не смогу, ибо сам плохо умею с ними работать... :)))
Но в вашем случае, думаю рег. выражения не особо помогут, т.к. жестких критериев по имени или по заголовку нет, нужно разрешать как буквы, так и цифры, все знаки препинания, вообщем всё, кроме тэгов и т.п.... | |
|
|
|
|
|
|
|
для: afdm
(16.12.2007 в 12:41)
| | спасибо! только вот полюбому получается надо свои ошибки делать, а не хостинга :\
а что с этим? - как зделать в MySQL чтобы определенная страница как бы отключалась на время ну всмысле она была, но только ее в админке можно было временно отключить.
Пытался сделать так - почти получилось, вот олько старницы просто не было , а мне надо чтобы ошибка отображалась. | |
|
|
|
|
|
|
|
для: PAUELL
(16.12.2007 в 16:47)
| | >вот олько старницы просто не было
А контент страницы у вас находятся в БД?
Толком не особо понятно что вам надо | |
|
|
|
|
|
|
|
для: Faraon
(16.12.2007 в 19:58)
| | Да контент находиться в MySQL, но не удаляего его от туда надо показать что страница отсутствует.
и еще такой вопрос по ошибкам!
с HTACCESS все панятно, пошлю куда надо, но охота чтобы сраницы была с таким параметром:
error.php?=403
непонимаю как сделать отсутствующий параметр
впрочем я хотя бы так сделал error.php?n=403 (тоже хорошо)
<?
$error = $_GET['n'];
if ($error == $_GET['n'])
{
include "themes/default/error/$error.php";
}
else
{
include "themes/default/error/404.php";
}
?>
|
я хотел сделать так чтобы дизайн ошибки подулючался из другого места
в этом коде только есть пара проблем:
1) условие не хочет выполняться, а именно открывается существующая, но ели она не существует то он не открывает ошибки 404, а пишет ошибку
Warning: main(themes/default/error/.php): failed to open stream: No such file or directory in j:\home\cms.ru\www\error.php on line 8
Warning: main(): Failed opening 'themes/default/error/.php' for inclusion (include_path='.;/usr/local/php/PEAR') in j:\home\cms.ru\www\error.php on line 8
|
2)очень хочется извлеченный дизайн конкретной ошибки не подключать в процессе выполнения условия, а вывести в переменную $content
если непонятно перспросите!!! очень надо! | |
|
|
|
|
|
|
|
для: afdm
(16.12.2007 в 12:41)
| | | |
|
|
|
|
|
|
|
для: bronenos
(16.12.2007 в 17:23)
| | а подробнее можно? | |
|
|
|
|
|
|
|
для: PAUELL
(16.12.2007 в 19:48)
| | по русски - Если (НеЧисло()) | |
|
|
|
|
|
|
|
для: Гость
(16.12.2007 в 19:57)
| | Господа! Видимо мне никто не поможет?
Вообщем я похоже сам нашел более раиональное решение, а главно - работает:
<?
// Получаем параметр из строки запросов
$error = $_GET['n'];
if (!preg_match ("/500|404|403|401|400|302|301/i", $_GET['n']))
{
include "themes/default/error/404.php";
}
else
{
include "themes/default/error/$error.php";
}
?>
|
Низнаю профессионально это или нет, почти всем моим требованиям удовлетворяет.
Спасибо afdm за наводку.
Вот только хочу тперь одно спросить: как мне вывести результат не в процессе условия где include стоят, а в какю-нибуть переменную после условия?
И как все-таки зделать такой праметр - error.php?=404
Нуи попутно вопрос, а можно ли результат допутим в переменную вывести выше самого решения? | |
|
|
|
|
|
|
|
для: PAUELL
(16.12.2007 в 23:26)
| | а что мешает просто честно отправить отклик
header("HTTP/1.0 404 Not found");
echo "<html><head><title>Not found</title></head><body>Not found</body></html>";
|
И почему в теме фигурирует статус 403?
Может сперва стоит статусы выучить? | |
|
|
|
|
|
|
|
для: Trianon
(17.12.2007 в 00:15)
| | ну да 404, просто как-то... :) | |
|
|
|