2015-02-09 7 views
0

Предполагая, что у меня есть файловой структуры так:PHP модули: как «подключить» файлы для AJAX запросы

/ 
index.php     // holds db connection, login information, ... 
... 
/someSubSite 
    content_someSite.html // basic structure, texts, forms, ... 
    styles_someSite.css  // styling of content_someSite.html 
    backend_someSite.php // should send answers of AJAX requests 
    frontend_someSite.js // sends AJAX requests 
          // (when a form is submitted) 
    ... 

подключение к БД в index.php реализуются через PDO. Поэтому, очевидно, я не могу напрямую использовать этот db-объект в backend_someSite.php, потому что он объявлен и инициализирован в index.php -> две разные области действия, без взаимодействия между этими файлами.

Итак, теперь мой вопрос: что является лучшим способом решить эту проблему?

Должен ли я просто создавать PDO для каждого php-файла для каждого подсайта? И поделиться регистрационной информацией, собранной index.php через сеанс PHP?

В принципе вопрос: Что является лучшим способом для обмена информацией или даже весь PDO и другие объекты между index.php и backend_some (суб) Site.php когда подсайты опрашиваются с помощью AJAX в веб-интерфейсе ,

+0

PHP читает файловую систему. Ajax отправляет на веб-сервер. Вы можете создать local_index.php в каталоге someSite и включить index.php в код. –

+0

Не помещайте информацию о своей БД в доступную в Интернете директорию. Почему ваша логика подключения к БД не была бы включена в файл include, который мог бы быть включен каким-либо вспомогательным сайтом, который в этом нуждался? –

+0

Но * index.php * делает много всего, соединение db, информацию для входа и т. Д. ... не будет ли эта концепция приводить к нагрузкам if-statement, потому что каждый подсайт должен использовать это? – daniel451

ответ

1

Непонятно, что еще находится в index.php. Если это буквально так, как вы описали, вы можете include его в backend_someSite.php.

Если у него есть другие вещи, например, все, что выводится в браузере, тогда вы должны сделать файл, содержащий ТОЛЬКО такие вещи, как информация о подключении (я бы предложил называть его config.php), а затем вместо этого включить этот файл (оба в index.php и backend_someSite.php)

+0

Да, index.php делает разные вещи. Таким образом, ваша концепция дизайна будет крошечными php-скриптами, для db-соединения и т. Д., Которые включены в каждый php-файл, который нуждается в соединении ?! Что бы вы сделали с регистрационной информацией, когда пользователь вошел в систему один раз? Хранить его в php-сессии? – daniel451

+0

Да, один крошечный сценарий php, содержащий всю информацию, общую для разных страниц. Это обычная практика. Для входа в систему вы наверняка используете для этого базу данных. Вы хотите только сохранить состояние пользователя в сеансе. – rjdown

+0

Разве это не проблема производительности, когда каждый дочерний узел содержит файл типа «* dbConnection.php *»? – daniel451

1

может быть, вы могли бы попытаться поместить код с информацией о соединении в виде отдельного файла, назвав его connection.php

<?php 

try { 
    $connection = new PDO('db_driver:host=myhost;dbname=db_name', 'username', 'password'); 
} catch (PDOException $e) { 
    die(print ("Error!: " . $e->getMessage())); 
} 
?> 

это всего лишь пример. Затем вы можете указать include файл в любом другом .php, которому необходимо подключиться к базе данных и использовать переменную $connection.

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

все зависит от вас