Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вызов ошибки 403
 
 автор: PAUELL   (16.12.2007 в 00:59)   письмо автору
 
 

Я еще делетан в PHP, и не раз для себя задавался проблемой вызова этой ошибки специально.
Вот собствено и все. Проблема в том что я хочу чтобы мой скрипт извлекающий из базы хтмл код и выводящий в линк с параметрами например (content.php?name=about) в случае с параметром каторого нет в базе данных например content.php?name=sgsgsgsg, вообщем с нипонятным, или сам скрипт content.php выдавал ошибку что страница отсутсвует.
Конечно с самим сриптом все понятно можно в Хетакес все выставить, но как же быть с параметрами, можно и правило как бы указать об отсутствии таковых страниц, но как это это не смотриться :) Охота, чтобы показывалсь красивая ошибка хостинга :)
Думаю понятно объяснил.

Тьфу-ты вот чего еще не спросил:
как зделать в MySQL чтобы определенная страница как бы отключалась на время ну всмысле она была, но только ее в админке можно было временно отключить.
Пытался сделать так - почти получилось, вот олько старницы просто не было , а мне надо чтобы ошибка отображалась.

   
 
 автор: afdm   (16.12.2007 в 01:57)   письмо автору
 
   для: PAUELL   (16.12.2007 в 00:59)
 

проверяйте параметр $_GET (рег.выражением, наверное) и, если что не так, - осуществляйте переадресацию на страницу ошибки. вроде так.
только не Хетакес, а htaccess :)

   
 
 автор: PAUELL   (16.12.2007 в 02:23)   письмо автору
 
   для: afdm   (16.12.2007 в 01:57)
 

ни то не другое не понятно ;(
можно на примере?

<?
  
// Осуществляем соединение с базой данных
  
include "../../include/config.php";

  
$name $_GET['name'];

  
$query "SELECT * FROM pages";
  
$pages mysql_query ($query);
  if (!
$pagesputerror("<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>";
    }
  }
?>

   
 
 автор: afdm   (16.12.2007 в 12:06)   письмо автору
 
   для: 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>"
;
?>

Вот как-то так наверное... :-/
Впрочем, может быть я и ошибаюсь...

   
 
 автор: afdm   (16.12.2007 в 12:41)   письмо автору
 
   для: PAUELL   (16.12.2007 в 02:23)
 

или же можно как-то вот так проверять параметр GET:

<?php
// Если параметр содержит что-то кроме цифр, то 
if(!preg_match("|^[\d]*$|",$_GET['page'])) // Осуществляем переадресацию на страницу ошибки
?>

По рег. выражениям ничем особо помочь не смогу, ибо сам плохо умею с ними работать... :)))

Но в вашем случае, думаю рег. выражения не особо помогут, т.к. жестких критериев по имени или по заголовку нет, нужно разрешать как буквы, так и цифры, все знаки препинания, вообщем всё, кроме тэгов и т.п....

   
 
 автор: PAUELL   (16.12.2007 в 16:47)   письмо автору
 
   для: afdm   (16.12.2007 в 12:41)
 

спасибо! только вот полюбому получается надо свои ошибки делать, а не хостинга :\

а что с этим? - как зделать в MySQL чтобы определенная страница как бы отключалась на время ну всмысле она была, но только ее в админке можно было временно отключить.
Пытался сделать так - почти получилось, вот олько старницы просто не было , а мне надо чтобы ошибка отображалась.

   
 
 автор: Faraon   (16.12.2007 в 19:58)   письмо автору
 
   для: PAUELL   (16.12.2007 в 16:47)
 

>вот олько старницы просто не было
А контент страницы у вас находятся в БД?
Толком не особо понятно что вам надо

   
 
 автор: PAUELL   (16.12.2007 в 20:31)   письмо автору
 
   для: 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

если непонятно перспросите!!! очень надо!

   
 
 автор: bronenos   (16.12.2007 в 17:23)   письмо автору
 
   для: afdm   (16.12.2007 в 12:41)
 

if (!is_numeric())

   
 
 автор: PAUELL   (16.12.2007 в 19:48)   письмо автору
 
   для: bronenos   (16.12.2007 в 17:23)
 

а подробнее можно?

   
 
 автор: Гость   (16.12.2007 в 19:57)   письмо автору
 
   для: PAUELL   (16.12.2007 в 19:48)
 

по русски - Если (НеЧисло())

   
 
 автор: PAUELL   (16.12.2007 в 23:26)   письмо автору
 
   для: Гость   (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
Нуи попутно вопрос, а можно ли результат допутим в переменную вывести выше самого решения?

   
 
 автор: Trianon   (17.12.2007 в 00:15)   письмо автору
 
   для: 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?
Может сперва стоит статусы выучить?

   
 
 автор: PAUELL   (17.12.2007 в 08:43)   письмо автору
 
   для: Trianon   (17.12.2007 в 00:15)
 

ну да 404, просто как-то... :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования