|
PHP / MySQL Создание динамических Веб-ресурсов |
28.03.2016, 20:43
|
#1
|
Бывалый
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений (для 853 пользователей)
|
прямой доступ к БД
в общем, развиваю кругозор. Хочу сделать мобильное приложение для сайта. Сайт на joomla.
Суть вопроса:
Мне нужно из приложения получать некоторые данные из БД (меню, категории, товары и др..)
Сейчас я делаю так:
Создал пхп файл на сервере и в нем подключаюсь к своей БД и и выдергиваю нужные записи.
<?php $host="localhost"; $username="bd_user"; $password="pasword"; $db_name="bd_name"; $res= array();
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name") or die ("cannot select DB");
$query= mysql_query("SELECT * FROM `jos_users` ",$con); while ($row = mysql_fetch_array($query, MYSQL_NUM)) { $res[] = $row[1]; } $mytest = $_POST['mytest']; if (isset($_POST)){ if ($mytest == "test"){ echo json_encode($res); } else{ echo json_encode("null"); } } mysql_close($con); ?>
Я во всем этом полный ноль, но чувствую что так делать нельзя. Слышал что нужно делать API
Просветите пожалуйста!
__________________
Абсолютли!
|
(Offline)
|
|
28.03.2016, 21:29
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: прямой доступ к БД
Так делать, как бы можно на самом деле. Так раньше все и делали, быстро и просто.
Главное это работает, и не имеет серъезных проблем.
Можно конечно сделать API - что по сути один хрен, будет бежать к бд, и просить данные. Просто ты будешь их будешь уже получать не со скрипта сервера и пихать сразу в html, а будешь скорее делать AJAX запрос с клиента на путь API, и уже эти данные на клиенте темплейтить.
Но по сути тот же API endpoint, будет также к бд коннектиться.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
|
|
28.03.2016, 22:10
|
#3
|
Бывалый
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений (для 853 пользователей)
|
Ответ: прямой доступ к БД
Еще вопрос. Еще глупее.
Вот в джумле я могу создать пхп файл и потом его получить www.site.ru/test.php
А в некоторых движках это не прокатывает.
Я перехожу по ссылке www.site.ru/test.php и вижу 404
Куда копать? Я даже не знаю как у гугла спросить
__________________
Абсолютли!
|
(Offline)
|
|
28.03.2016, 22:41
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: прямой доступ к БД
Такое происходит т.к. URL - не есть путь к файлу. А лишь "строка", которая сообщается твоему веб серверу при соединении. Далее уже веб сервер делает решение что делать дальше.
Например в apache, используя .htaccess можно все это дело координально менять.
Так повелось что по стандарту и простоте доступ идёт как к файлам к корню веб директории, но это легко меняется. И в современных вебсайтах и движках обычно так и делают.
Это называется Pretty URL: http://www.desiquintans.com/cleanurls
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.03.2016, 23:42
|
#5
|
Бывалый
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений (для 853 пользователей)
|
Ответ: прямой доступ к БД
ну так и как добраться до файла в этом случае?
вот например есть файл в директории /template/view/feedback.php
и я могу его открыть так: www.site.ru/feedback
но если я там же создам файл /template/view/test.php, то я получаю 404
htaccess выглядит так:
AddType image/x-icon .ico AddDefaultCharset UTF-8 Options +FollowSymlinks Options -Indexes
<IfModule mod_rewrite.c> RewriteEngine on #RewriteBase /
#Перенаправление на www.site~ #RewriteCond %{HTTP_HOST} !^www. #RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} \.(ini|php)$ RewriteRule ^(.*) index.php [L,QSA] </IfModule>
<IfModule mod_php5.c> php_flag magic_quotes_gpc Off </IfModule>
__________________
Абсолютли!
|
(Offline)
|
|
29.03.2016, 01:26
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: прямой доступ к БД
Читай документацию про routing в joomla.
По .htaccess видно (как обычно), что все запросы перенапрявляются на index.php, который далее уже реализует routing.
А вообще начинать такое изучать сразу с движком - это лишь экстра проблемы.
Если хочешь учиться таким вещам, то лучше бери "голый" PHP + MySQL.
А лучше вообще бери что-то современное и более продуктивное, например node.js или golang.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.03.2016, 11:09
|
#7
|
Бывалый
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений (для 853 пользователей)
|
Ответ: прямой доступ к БД
Читай документацию про routing в joomla.
|
в джумле то какраз все работает. Но направление понятно.
А вообще начинать такое изучать сразу с движком - это лишь экстра проблемы.
Если хочешь учиться таким вещам, то лучше бери "голый" PHP + MySQL.
|
думаю что это долго и скучно.
А лучше вообще бери что-то современное и более продуктивное, например node.js или golang.
|
но мне то надо не сайт написать, а приложение к готовому сайту. Ктому же основы nodejs я уже знаю (как-то делал маленькую ммо), мне пока хватит.
__________________
Абсолютли!
|
(Offline)
|
|
29.03.2016, 14:08
|
#8
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: прямой доступ к БД
Сообщение от ant0N
ну так и как добраться до файла в этом случае?
вот например есть файл в директории /template/view/feedback.php
и я могу его открыть так: www.site.ru/feedback
но если я там же создам файл /template/view/test.php, то я получаю 404
|
Можно вляпать костыль по быстрому
RewriteCond %{REQUEST_URI} test$ - под это правило будут попадать любые запросы к сайту, заканчивающиеся на "test". При необходимости правило можно уточнить. Флаг [L] - last, если правило сработало, дальнейшие правила не выполняются.
AddType image/x-icon .ico AddDefaultCharset UTF-8 Options +FollowSymlinks Options -Indexes
<IfModule mod_rewrite.c> RewriteEngine on #RewriteBase /
#Перенаправление на www.site~ #RewriteCond %{HTTP_HOST} !^www. #RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
#Если запрашивают test, редирект на скрипт template/view/test.php RewriteCond %{REQUEST_URI} test$ RewriteRule ^(.*) template/view/test.php [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} \.(ini|php)$ RewriteRule ^(.*) index.php [L,QSA] </IfModule>
<IfModule mod_php5.c> php_flag magic_quotes_gpc Off </IfModule>
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.03.2016, 16:02
|
#9
|
Бывалый
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений (для 853 пользователей)
|
Ответ: прямой доступ к БД
Сообщение от DStalk
Можно вляпать костыль по быстрому
RewriteCond %{REQUEST_URI} test$ - под это правило будут попадать любые запросы к сайту, заканчивающиеся на "test". При необходимости правило можно уточнить. Флаг [L] - last, если правило сработало, дальнейшие правила не выполняются.
AddType image/x-icon .ico AddDefaultCharset UTF-8 Options +FollowSymlinks Options -Indexes ....... </IfModule>
|
спасибо, но я нашел решение проще. Покурив маны по движу, узнал что если их хитрый механизм ничего не находит, то ищет такой файл в дериктории "pages"
создал там test.php и теперь все работает!
__________________
Абсолютли!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:39.
|