Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> include и not found 
:(
    Опции темы
Dima85
Дата 17.5.2010, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Таким способом я подгружаю на страницу нужные мне html файлики:
Код

      <?php 
      $page = preg_replace( '#[^a-zA-Z0-9]#i',  '', $_GET['page']);
      $page = substr($page, 0, 25);
      if ($page != '') {include('page/'.$page.'.html');
      } else { echo $lang[ 'welcome']; }
      ?>


Но когда указывается в URL название файла которого нет, вылетает ошибка. Как вместо нее выводить надпись, "Такого файла нет"?

И как вам в целом код, на мой взгляд он безопасен. Или нет? 
PM MAIL   Вверх
MoLeX
Дата 17.5.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



перед загрузкой проверить на существование

Добавлено через 1 минуту и 9 секунд
file_exists()


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Guedda
Дата 17.5.2010, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Код

 <?php 
      $page = preg_replace( '#[^a-zA-Z0-9]#i',  '', $_GET['page']);
      $page = substr($page, 0, 25);
      if (($page != '') && (file_exists('page/' . $page . '.html'))) {include('page/'.$page.'.html');
      } else { echo $lang[ 'welcome']; }
      ?>

Код небезопасный.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Sanchezzz
Дата 17.5.2010, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



 smile 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Dima85
Дата 7.10.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Код

      <?php 
      $page = preg_replace( '#[^a-zA-Z0-9]#i', '', GET('page'));
      $page = substr($page, 0, 25);
      if ($page != '') {
      $filename = 'page/'.$page.'_'.$lang['lang'].'.html';
      if (file_exists($filename)) {include($filename);} else {echo "Error 404";}
      } else { 
      include('page/welcome_'.$lang['lang'].'.html'); 
      }
      ?>


Guedda, почему не безопасный? 
Я ведь ограничил ввод данных в переменную a-zA-Z0-9, ограничел даже количество данных substr($page, 0, 25).

Где я не усмотрел?

Это сообщение отредактировал(а) Dima85 - 7.10.2010, 14:11
PM MAIL   Вверх
bars80080
Дата 7.10.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Dima85 @  7.10.2010,  14:07 Найти цитируемый пост)
Я ведь ограничил ввод данных в переменную a-zA-Z0-9, ограничел даже количество данных substr($page, 0, 25).

интересно было бы увидеть, откуда вы взяли, что это панацея безопасности

не безопасный потому, что вы включаете файл, имя которого определяет пользователь.
PM MAIL WWW   Вверх
Dima85
Дата 7.10.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Тоесть если пользователь каким-то образом сможет залить туда какой-то вредный фал, то сможет его и запустить тем самым насести вред серверу.

Ну а как тогда выйти с такой ситуации? Создать список и страниц которые можно грузить? Их у меня около 1700 - слишком большой будет список.
Посоветуйте, как правельней в таком случае открывать страницы?


PM MAIL   Вверх
bars80080
Дата 7.10.2010, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Dima85 @  7.10.2010,  15:27 Найти цитируемый пост)
Создать список и страниц которые можно грузить?

да

Цитата(Dima85 @  7.10.2010,  15:27 Найти цитируемый пост)
Их у меня около 1700 - слишком большой будет список.

почему-то любая информационная лента новостей с этим справляется. а у них по сотне статей в день выпускается.

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

ну, а при заходе пользователя по некоторой ссылке, просто ищется, есть ли такая статья (страница) и отдаётся, какая нужна. более чем ты сам разрешишь, в итоге пользователь сделать не сможет
PM MAIL WWW   Вверх
DeamonShan
Дата 7.10.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



Dima85, залить все файлы в бд, и показывать странички по идентификаторам. А файлы залить в бд - 15 строчек на пхп... скрипт за вас сделает
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.