Проблема:
Здравствуйте, у меня в настоящее время есть веб-сайт с игрой, которая работает с node.js. Включает в себя gulp и socket.io.
У меня есть php-файл, который я хочу вызвать из node.js, и он возвращает сообщение об успехе (эхо в файле), но не обновляет мою базу данных.
Однако, когда я вызываю php-файл, помещая ссылку в браузере или вызывая его с помощью той же команды AJAX с моего веб-сайта, она прекрасно работает.
Итак, с моего сайта: site.com файл php работает отлично, но с моего сервера узлов: site.com:3000 он возвращает успех, но не обновляет мою БД.
Я знаю, что Node не совместим с php, но, возможно, есть обходной путь.
Я также заметил, что мои переменные пусты при вызове файла из узла.
Код:
Вот мой php-файл:
subtract5.php
<?php
header('Access-Control-Allow-Origin: http://cashballz.net:3000', false);
include 'mysql.php';
session_start();
$cash_amount = $_SESSION['cash_amount'];
$userid = $_SESSION['id'];
$_SESSION['cash_amount'] -= 0.05;
$mysql = new Mysql();
$result = $mysql->setCashAmount($cash_amount,$userid);
if($result)
{
echo "5 cents have been subtracted!";
}
else
{
session_start();
session_unset();
session_destroy();
}
?>
mysql.php
<?php
class Mysql
{
protected $dsn;
protected $username;
protected $password;
public $db;
function __construct()
{
//change this to your info (myDBname, myName, myPass)
$this->dns= 'mysql:dbname=cashball_accounts;host=localhost;charset=utf8';
$this->username= 'cashball_root';
$this->password= '1VeryBright*';
$this->db = new PDO($this->dns, $this->username, $this->password);
}
public function setCashAmount($cash_amount, $id)
{
$sql = "UPDATE users SET cash_amount = :cash_amount - 0.05 WHERE id = :id";
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':cash_amount', $cash_amount, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$result = $stmt->execute();
return $result;
}
}
?>
И мой AJAX-вызов: (app.js)
//cut 5 cents from account - php function
$.ajax({
type: "POST",
url: 'http://cashballz.net/game/5game/subtract5.php',
data: {},
success: function (data) {
alert(data);
}
});
Вывод:
Мне нужен способ, чтобы правильно запустить мой php-скрипт и обновить базу данных непосредственно из node.js. Я видел решения для этого с файлами на github, но я не понимаю, является ли это правильным решением или как реализовать их в моем коде. Может быть, есть способ вызвать файл php через другой домен в фоновом режиме с помощью ajax?
Я новичок в PHP и неплохо разбираюсь в JS, поэтому, пожалуйста, подробно опишите свои ответы.
Спасибо за вашу помощь!