forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PHP / MySQL (http://forum.boolean.name/forumdisplay.php?f=135)
-   -   прямой доступ к БД (http://forum.boolean.name/showthread.php?t=20238)

ant0N 28.03.2016 20:43

прямой доступ к БД
 
в общем, развиваю кругозор. Хочу сделать мобильное приложение для сайта. Сайт на joomla.
Суть вопроса:
Мне нужно из приложения получать некоторые данные из БД (меню, категории, товары и др..)
Сейчас я делаю так:
Создал пхп файл на сервере и в нем подключаюсь к своей БД и и выдергиваю нужные записи.
PHP код:

<?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"); 

$querymysql_query("SELECT * FROM `jos_users` ",$con);
while (
$row mysql_fetch_array($queryMYSQL_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
Просветите пожалуйста!

moka 28.03.2016 21:29

Ответ: прямой доступ к БД
 
Так делать, как бы можно на самом деле. Так раньше все и делали, быстро и просто.
Главное это работает, и не имеет серъезных проблем.

Можно конечно сделать API - что по сути один хрен, будет бежать к бд, и просить данные. Просто ты будешь их будешь уже получать не со скрипта сервера и пихать сразу в html, а будешь скорее делать AJAX запрос с клиента на путь API, и уже эти данные на клиенте темплейтить.

Но по сути тот же API endpoint, будет также к бд коннектиться.

ant0N 28.03.2016 22:10

Ответ: прямой доступ к БД
 
Еще вопрос. Еще глупее.
Вот в джумле я могу создать пхп файл и потом его получить www.site.ru/test.php
А в некоторых движках это не прокатывает.
Я перехожу по ссылке www.site.ru/test.php и вижу 404
Куда копать? Я даже не знаю как у гугла спросить

moka 28.03.2016 22:41

Ответ: прямой доступ к БД
 
Такое происходит т.к. URL - не есть путь к файлу. А лишь "строка", которая сообщается твоему веб серверу при соединении. Далее уже веб сервер делает решение что делать дальше.
Например в apache, используя .htaccess можно все это дело координально менять.
Так повелось что по стандарту и простоте доступ идёт как к файлам к корню веб директории, но это легко меняется. И в современных вебсайтах и движках обычно так и делают.
Это называется Pretty URL: http://www.desiquintans.com/cleanurls

ant0N 28.03.2016 23:42

Ответ: прямой доступ к БД
 
ну так и как добраться до файла в этом случае?
вот например есть файл в директории /template/view/feedback.php
и я могу его открыть так: www.site.ru/feedback
но если я там же создам файл /template/view/test.php, то я получаю 404

htaccess выглядит так:
PHP код:

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} !-[OR]
RewriteCond %{REQUEST_URI} \.(ini|php)$
RewriteRule ^(.*) index.php [L,QSA]
</
IfModule>

<
IfModule mod_php5.c
php_flag magic_quotes_gpc Off
</IfModule


moka 29.03.2016 01:26

Ответ: прямой доступ к БД
 
Читай документацию про routing в joomla.
По .htaccess видно (как обычно), что все запросы перенапрявляются на index.php, который далее уже реализует routing.

А вообще начинать такое изучать сразу с движком - это лишь экстра проблемы.
Если хочешь учиться таким вещам, то лучше бери "голый" PHP + MySQL.
А лучше вообще бери что-то современное и более продуктивное, например node.js или golang.

ant0N 29.03.2016 11:09

Ответ: прямой доступ к БД
 
Цитата:

Читай документацию про routing в joomla.
в джумле то какраз все работает. Но направление понятно.

Цитата:

А вообще начинать такое изучать сразу с движком - это лишь экстра проблемы.
Если хочешь учиться таким вещам, то лучше бери "голый" PHP + MySQL.
думаю что это долго и скучно.

Цитата:

А лучше вообще бери что-то современное и более продуктивное, например node.js или golang.
но мне то надо не сайт написать, а приложение к готовому сайту. Ктому же основы nodejs я уже знаю (как-то делал маленькую ммо), мне пока хватит.

DStalk 29.03.2016 14:08

Ответ: прямой доступ к БД
 
Цитата:

Сообщение от ant0N (Сообщение 305064)
ну так и как добраться до файла в этом случае?
вот например есть файл в директории /template/view/feedback.php
и я могу его открыть так: www.site.ru/feedback
но если я там же создам файл /template/view/test.php, то я получаю 404

Можно вляпать костыль по быстрому:)

RewriteCond %{REQUEST_URI} test$ - под это правило будут попадать любые запросы к сайту, заканчивающиеся на "test". При необходимости правило можно уточнить. Флаг [L] - last, если правило сработало, дальнейшие правила не выполняются.

PHP код:

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_URItest$
RewriteRule ^(.*) template/view/test.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-[OR]
RewriteCond %{REQUEST_URI} \.(ini|php)$
RewriteRule ^(.*) index.php [L,QSA]
</
IfModule>

<
IfModule mod_php5.c
php_flag magic_quotes_gpc Off
</IfModule


ant0N 29.03.2016 16:02

Ответ: прямой доступ к БД
 
Цитата:

Сообщение от DStalk (Сообщение 305076)
Можно вляпать костыль по быстрому:)

RewriteCond %{REQUEST_URI} test$ - под это правило будут попадать любые запросы к сайту, заканчивающиеся на "test". При необходимости правило можно уточнить. Флаг [L] - last, если правило сработало, дальнейшие правила не выполняются.

PHP код:

AddType image/x-icon .ico
AddDefaultCharset UTF
-8
Options 
+FollowSymlinks
Options 
-Indexes
.......
</
IfModule


спасибо, но я нашел решение проще. Покурив маны по движу, узнал что если их хитрый механизм ничего не находит, то ищет такой файл в дериктории "pages"
создал там test.php и теперь все работает!


Часовой пояс GMT +4, время: 01:44.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot