За последние 24 часа нас посетили 17709 программистов и 1717 роботов. Сейчас ищут 984 программиста ...

что можно использовать вместо include?

Тема в разделе "PHP для новичков", создана пользователем ionico, 16 авг 2008.

  1. ionico

    ionico Активный пользователь

    С нами с:
    16 авг 2008
    Сообщения:
    73
    Симпатии:
    0
    Здравствуйте, подскажите пожалуйста новичку.
    Я только недавно начал изучать PHP, хочу сразу уяснить несколько моментов, чтобы в последствии не наделать ошибок. У меня есть несколько вопросов.
    1) Если в файле php.ini отключены директивы allow_url_fopen и allow_url_include, то будут ли подгружаться страницы функцией include? Например в такой ситуации, если по нажатию на ссылку, строка адреса приобретает вид:
    http://www.my_site.ru/index.php?page=mypage

    а в страничке index.php присутствует такой код:
    Код (Text):
    1.  
    2. if ($page!=""){
    3. include ("$page.html");
    4. }
    2) Можно ли обезопасить свой сайт от PHP-инъекций, добавив такого рода проверку?
    Код (Text):
    1.  
    2. if ($page!=""){
    3. $page=str_replace("/","",$page);
    4. $page=str_replace(".","",$page);
    5. if(file_exists($page)) {
    6. include ("$page.html");
    7. }
    8. }
    3) каким ещё методом можно воспользоваться кроме include для построения основной страницы с подгрузкой других? Нигде не могу найти материалов по этой теме =(
    Я построил index.php приблизительно так:
    Код (Text):
    1.  
    2. <?php
    3. echo "<html><head><title>My Site</title>";
    4. echo "<link rel='stylesheet' type='text/css' href='style.css'/>";
    5. echo "</head>";
    6. echo "<body><div id='container'>";
    7.  
    8. echo "<div id='header'>";
    9. @ include ("header.html");
    10. echo "</div>";
    11.  
    12. echo "<div id='navbar'>";
    13. @ include ("navbar.php");
    14. echo "</div>";
    15.  
    16. echo "<div id='wrapper'>";
    17. echo "<div id='content'>";
    18. if (@$page<>"") {
    19.     include ("$page.html");
    20. }
    21. else {
    22.     include ("main.html");
    23. }
    24. echo "</div></div>";
    25.  
    26. echo "<div id='navigation'>";
    27. @ include ("menu.php");
    28. echo "</div>";
    29.  
    30. echo "<div id='news'>";
    31. @ include ("news.php");
    32. echo "</div>";
    33.  
    34. echo "<div id='footer'>";
    35. @ include ("footer.php");
    36. echo "</div>";
    37.  
    38. echo "</div></body></html>";
    39. ?>
    т.е. при помощи include в "див'ы" подгружаются другие отдельные странички...
    можете прокомментировать данный метод?

    Заранее Огромнейшее СПАСИБО за ваш ответ.
    С уважением, Дмитрий.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    ionico
    Будут.
     
  3. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    2. Так лучше вообще не делать, так сказать от греха подальше.
    Лушче предусмотреть все возможные варианты $page, типа:
    PHP:
    1. <?
    2.  
    3. switch($page) {
    4.     case "...":
    5.         // ...
    6. }
    3. Можно сделать так:
    HTML:
    1.     ...
    2.     <body>
    3.          ...
    4.          <? include "" ?>
    5.          ...
    6.          <? include "" ?>
    7.          ...
    8.     </body>
    9. </html>
    Ну ты понял. :)
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
  5. dAllonE

    dAllonE Guest

    2. Можно так сделать:

    а) Страницы с контентом на самом деле живут в БД.
    б) Всякие там гостевые книги живут так: example.com/www/guestbook/index.php

    Т.е. получаем строчку www.example.com/?page=guestbook

    Вначале смотрим есть ли у нас такая папка как guestbook и есть ли в ней index.php
    Если нету, то ищем по БД страничку с таким названием.
    Ну а если ничего не нашли выдаем 404 или главную

    3. Ну как вариант всякие разные шаблонизаторы... Например Smarty
     
  6. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    dAllonE, автор топика — новичок, нах ему Smarty?
     
  7. ionico

    ionico Активный пользователь

    С нами с:
    16 авг 2008
    Сообщения:
    73
    Симпатии:
    0
    почему они живут в БД? О_о
    у меня они находятся в корневом каталоге, там же, где и index.php
    разве так нельзя делать?

    ааааааа... я запутался...

    метод со свитчем
    Код (Text):
    1.  
    2. switch ($page) {
    3.  case blablabla
    4. }
    мне оч понравился
     
  8. Anonymous

    Anonymous Guest

    ionico, не слушай dAllonE. Точнее слушай, но этак через полгода, когда основы подучишь)
     
  9. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    ionico, во-во, меня слушай, видишь даже Олег меня рекомендует. :-Р
     
  10. Anonymous

    Anonymous Guest

    KISS - золотое правило.
     
  11. ionico

    ionico Активный пользователь

    С нами с:
    16 авг 2008
    Сообщения:
    73
    Симпатии:
    0
    у меня тут другая беда...
    я выгрузил все файлы на хостинг, чтобы проверить работоспособность, так вот, при нажатии на ссылку и превращении строки адреса в нечто такое:
    http://www.mysite.ru/index.php?page=about

    переменная $page в index.php в любом случае пустая О_о
    в чём проблема?

    на моём компе, в localhost всё работает нормально...
     
  12. Anonymous

    Anonymous Guest

  13. ionico

    ionico Активный пользователь

    С нами с:
    16 авг 2008
    Сообщения:
    73
    Симпатии:
    0
    ОГРОМНОЕ СПАСИБО =) осознал и применил осознанное )
    всё работает...
     
  14. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Увы большинство воспринимают это правило как "KIS-&-S" :D
     
  15. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Вот это я так и не понял. О_о
     
  16. Anonymous

    Anonymous Guest

    http://ru.wikipedia.org/wiki/Принцип_KISS
     
  17. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Горбунов Олег, спасибо, почитаем.
     
  18. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Как группу такую они его воспринимают. :)
     
  19. dAllonE

    dAllonE Guest

    Vitas, ну все когда-то были новичками)