Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Алгоритмы, задачи по программированию, логические игры _ Доступ из настольного ПО к БД на сервере через PHP

Автор: Litkevich Yuriy 5.7.2013, 21:46

Возникла надобность: получить доступ к БД сервере из ПО на локальной машине (написанное на С++).
Однако есть ограничение: к БД можно подключится только с локальной машины этой БД например из PHP сценария сайта.

Как сварганить на PHP и C++ "мост", может у же есть какие-то готовые решения (технологии) поддерживаемые библиотеками указанных языков?

Автор: academ1c 8.7.2013, 1:50

Цитата(Litkevich Yuriy @ 5.7.2013, 21:46) *
Однако есть ограничение: к БД можно подключится только с локальной машины этой БД например из PHP сценария сайта.


А можно подробнее по поводу подключения только с локалхоста ? Это такая политика или там Embeded ?

Автор: Iron Bug 8.7.2013, 6:15

к пыху можно писать расширения - свои модули на С++. может, в эту сторону копнуть? но задача какая-то странная. настройка доступа в мускуле - дело минутное.

Автор: Litkevich Yuriy 8.7.2013, 17:17

Цитата(academ1c @ 8.7.2013, 3:50) *
Это такая политика
да, это ограничения хостера обусловленное их политикой безопасности


Цитата(Iron Bug @ 8.7.2013, 8:15) *
к пыху можно писать расширения - свои модули на С++
у меня нет доступа к самому PHP, я могу только свои PHP-сценарии на сервер положить.

Автор: Iron Bug 9.7.2013, 6:52

ну, теоретически, ты можешь сделать скрипт, который будет получать запрос к базе и заполнять на основании результатов некий массив данных, а потом вызывать его из http запроса. но это извращение. :)

Автор: Litkevich Yuriy 9.7.2013, 14:31

я просто с трудом представляю как это (сеть) вообще работает.
Я пока научился скачивать вебстранички с помощью программы на Qt. А тут нужно будет с помощью программы отправлять какие-то запросы, это вроде тоже есть в примерах Qt. А вот как их получать?

Вопросы одни.

Автор: Iron Bug 10.7.2013, 6:11

как-то так, например:
http://stackoverflow.com/questions/15207380/android-retrieve-data-from-web-database-through-http-request-and-php-doesnt-wor

Автор: Litkevich Yuriy 10.7.2013, 20:08

ага что-то интересное

Автор: molchanoviv 25.8.2013, 17:01

Пусть и с месячным опозданием, но все-же. :) Самый лучший вариант написать небольшое REST-Api на php и обращаться к нему из программы посылая соответствующие HTTP запросы(GET,PUT,PATCH,DELETE) на сервер.

Автор: Litkevich Yuriy 26.8.2013, 0:42

Цитата(molchanoviv @ 25.8.2013, 19:01) *
Пусть и с месячным опозданием, но все-же
Задача не решена, так что нормально всё.


Цитата(molchanoviv @ 25.8.2013, 19:01) *
написать небольшое REST-Api на php
вот мне бы пример этого дела, а то я PHP методом научного тыка использую "если в движке моего интернет-магазина в таком-то месте сделать то-то, то это даст такой-то результат" ну и дальше по аналогии.

Автор: molchanoviv 26.8.2013, 12:08

А что за интернет магазин-то? На чем он крутится? Движок самописный или готовый какой? А вообще http://habrahabr.ru/post/144011/ почитай про REST. Можешь сам реализовать такое поведение проверяя $_SERVER['REQUEST_METHOD'] на вышеуказанные методы или взять готовый фреймворк и использовать его. Суть в чем. По запросу вида GET yourserver.net/yourtable/ получаешь данные из таблицы yourtable с сервера yourserver.net Ну и соответственно помещать по запросу PUT, удалять по DELETE, обновлять по UPDATE. Ну и конечно не забудь делать это все по https если тебе важна безопастность.

Автор: Litkevich Yuriy 26.8.2013, 20:21

на OpenCart-е

Автор: molchanoviv 27.8.2013, 12:47

Значит Plain PHP. Без фреймворков. Ну тогда придется написать скрипт вида db.php

<?php
if($_SERVER['REQUEST_METHOD'] == 'GET'){
//получить данные из базы
} elseif($_SERVER['REQUEST_METHOD'] == 'PUT') {
//записать в базу
} elseif($_SERVER['REQUEST_METHOD'] == 'PATCH') {
//обновить данные в базе
} elseif($_SERVER['REQUEST_METHOD'] == 'DELETE') {
//удалить данные из базы
} else {
//некорректный HTTP метод
}


Для авторизации достаточно использовать http://php.net/manual/ru/features.http-auth.php. В качестве формата данных удобнее всего использовать JSON.

Автор: Litkevich Yuriy 28.8.2013, 19:53

molchanoviv, можешь объяснить чем отличаются Get и Put, а то я в исходниках вижу то тот, то другой.

Автор: molchanoviv 31.8.2013, 13:08

GET это передача данных в URL-е. Обычно на него вешается получение информации. PUT-же очень похож на POST. Т.е. информация передается не в URL-е а в самом теле запроса. Обячно на PUT вешают создание информации на сервере. http://ru.wikipedia.org/wiki/HTTP#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B в вики объясняются методы HTTP

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)