За последние 24 часа нас посетили 19080 программистов и 1638 роботов. Сейчас ищут 926 программистов ...

Проблемы с Index

Тема в разделе "PHP для новичков", создана пользователем Majestic, 25 ноя 2013.

  1. Majestic

    Majestic Новичок

    С нами с:
    21 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте!
    У меня траблы с Index-ом.Сверстал сегодня простенький сайт,дабы потренироваться с PHP.Создал базу данных и закинул туда весь контент. Хотел сделать,чтобы была одна страничка индекс и туда генерировался весь контент из БД.Сайт состоит из 3-х страниц: index,history,showplace. Чтобы проще было объяснить, скину структуру БД и код на PHP.
    БД(Mysql) состоит и 6 полей: 1-id , 2- page (здесь,названия страниц из которых состоит сайт:index,history,showplace) , 3-title , 4-meta_d, 5- meta_k, 6-text (основной контент).
    Вот меню:
    Код (Text):
    1. <ul>
    2.     <li><a href="index.php?page=index">Главная</a></li>
    3.     <li><a href="index.php?page=history">История</a></li>
    4.     <li><a href="index.php?page=showplace">Достопримечательности</a></li>
    5. </ul>
    Код PHP,который находиться на страничке индекс и генерирует контент при нажатии на пункт меню:
    Код (Text):
    1. require_once('mysql/connect_db.php');//Подключение к БД
    2. $page=strtolower(trim(strip_tags($_GET['page'])));//Проверка что пришло
    3. $query ="SELECT * FROM settings WHERE page='$page'";//запрос к БД
    4. $result = mysqli_query($link,$query);
    5. mysqli_close($link);
    6. $text_page = mysqli_fetch_array($result);
    7. switch($page){
    8.     case 'index' : $text_page;break;
    9.     case 'history' :  $text_page;break;
    10.     case 'showplace' :  $text_page;break;
    11.     }
    Проблема вот в чем - При нажатии на главную страницу(index),в адресную строчку приходят параметры index.php?page=index, а хочется чтоб был просто index, без этих параметров.Но никак не могу вытащить для неё контент из бд,т.к. в меню так же стоят эти параметры.Помогите сообразить,как всё это организовать.Надеюсь доступно объяснил,я ещё совсем зелёный в PHP(стаж месяц).
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ответ на ваш вопрос:
    Код (Text):
    1.  
    2. $page = isset($_GET["page"]) ? $_GET["page"] : "index"; // Если передан Get-параметр, используем его
    3.                                                          // Если нет - ставим значение по умолчанию ("index")
    То, как вы готовите переменную $page к подстановке в запрос, вас от SQL-инъекции не спасёт. Более правильный подход:
    Код (Text):
    1.  
    2. $sql = sprintf("select * from settings where page='%s'", mysqli_real_escape_string($link, $page));
    В вёрстке меню не нужно будет указывать тогда для главной никаких параметров
     
  3. Majestic

    Majestic Новичок

    С нами с:
    21 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    Спасибо,всё заработало!
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    switch default
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ха, только заметил. А нафига у вас вообще switch здесь?