Я пытаюсь подключиться к sql db через php, но кажется, что мой хостинг-провайдер заблокировал доступ к подключению к удаленным db, поэтому мне сказали использовать http и «разобрать ключ» на моей другой учетной записи хостинга (с помощью другой хостинг-провайдер) и запускать запросы mysql оттуда, а затем отправить данные обратно в оригинал.
Мне нужно подключиться к db и проверить определенную информацию в определенных строках. Затем, используя функцию if
, обрабатывая другой код в зависимости от того, что возвращается из db (если информация верна и находится в правильной строке, обработайте x-код и если информация неверна в db, обработайте код y).
^^ thats запрос, который я пытаюсь запустить ^^
У меня все это работает, а затем фактическое подключение к части db, поскольку мой хостинг-провайдер заблокировал ее. Они сказали мне использовать http (как объяснялось выше), но я понятия не имею, как это сделать.
Может кто-нибудь объяснить (на английском языке пожалуйста), как я буду использовать http, чтобы сделать что-то вроде этого? Или лучше, проще?
Я не могу сменить хостинг-провайдеров ….
благодаря
Вы можете использовать CURL для запроса этой php-страницы на другом сервере, а затем обработать ответ.
Пример создания запроса на завивание
$encoded = ''; // include GET variables foe example. POST will be similar foreach($_GET as $name => $value) { $encoded .= urlencode($name).'='.urlencode($value).'&'; } // chop off last ampersand $encoded = substr($encoded, 0, strlen($encoded)-1) $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "myOtherHostThatBlockedMysqlAccess.com/mysqlPage.php"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); $output = curl_exec($ch); curl_close($ch);
Итак, что мы делаем в предыдущем примере – мы запрашиваем mysqlPage.php на сервере, который имеет доступ к вашей базе данных Mysql. На этой странице вам нужно будет ввести логику доступа Mysql. После того, как вы извлечете записи из db – вы, вероятно, закончите с каким-то массивом, как $ someDbArray, вы можете сериализовать этот массив и просто повторить его:
echo serialize($someDbArray);
Независимо от того, что вы откликнулись, вы будете доступны внутри переменной $ output, являющейся выходом CURL. Таким образом, вы можете просто удалить свой массив следующим образом:
$myDataArray = unserialize(output);
Однако, если вы спросите меня, лучшим решением будет получение хостинга, который не ограничивает доступ из любой точки. Предполагаю, вы используете общий хостинг? Я бы переключил, по крайней мере, на VPN или выделенный сервер. Я имею в виду – в любом случае – через REST или CURL – латентность будет огромной. Кроме того, я не уверен, какие данные вы будете передавать, но подумайте о безопасности. Вы должны будете использовать https, по крайней мере.
Лучше вы создадите некоторую службу REST на удаленном сайте. Таким образом, он может обеспечить безопасную и удобную интеллектуальную обработку данных (чтение / запись) со стандартным механизмом HTTP.
Если вы можете запустить демон на своем сервере, попробуйте DBSlayer . Кроме того, он предоставляет HTTP-интерфейс для MySQL.