В настоящее время я делаю игру, которая требует доступа к значениям базы данных для выполнения файла PHP с помощью ajax. Файл PHP работает, когда я помещаю ссылку в браузер, но не при вызове ajax. Это потому, что переменные сеанса не передаются.
Я не могу изменить index.html на index.php в моей игре Node, потому что это вызывает много проблем, поэтому мне нужен способ передать переменные из моей базы данных в мой javascript без использования прямого кода PHP в моем javascript.
Вот мой PHP-код:
mysql.php
function __construct()
{
$this->dns= 'mysql:dbname=cashball_accounts;host=localhost;charset=utf8';
$this->username= 'myUser';
$this->password= 'myPass';
$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;
}
}
?>
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();
}
?>
Мой код JS:
$.ajax({
type: "POST",
url: 'http://cashballz.net/game/5game/subtract5.php',
data: {},
success: function (data) {
alert(data);
}
});
Поэтому, когда я помещаю ссылку в браузер, код PHP в порядке и отлично выполняется, но когда я вызываю его из AJAX, файл выполняется, но переменные сеанса не определены.
Что мне делать?
(Я мог бы передать переменные в файл JS и поместить их как данные в AJAX, но я не знаю, как передать переменные сеанса, не имея index.php.
Все мои файлы узлов находятся в другой папке, которая не включает PHP, а файлы PHP находятся в одной папке вместе со всеми другими файлами PHP.
Спасибо за помощь.
Они находятся в одном домене, но узел работает на сервере в этом домене (порт 3000). Я думал о создании глобального файла для запуска переменных по всему сценарию, но я не знаю, что для него использовать и будет ли он работать.
Меня немного смущает вопрос. Вы хотите использовать файл cookie между PHP и Node? Может быть, почитайте немного и сузьте свой вопрос. Это может быть хорошее прочтение: Безопасный обмен данными между php и node.js через cookie
Можно ли просто добавить эту строку в мою конфигурацию: AddHandler php5-script .php .html, чтобы я мог просто добавить php в файл html в Node, не меняя его расширения?
Да, вы можете интерпретировать свои HTML-файлы с помощью PHP. Похоже на плохой дизайн, если вы не можете просто изменить имя в своем приложении. Опять же, не совсем понимая, о чем вы спрашиваете, я напоминаю вам, что могу управлять DOM в веб-браузере. Безопасно ли то, что вы представляете себе? Никогда не доверяйте этим проклятым пользователям.
Я не могу изменить index.html на index.php, потому что он находится в узле, поэтому мне нужен способ записать php в index.html для передачи переменной сеанса



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


"переменные сеанса не передаются". Находятся ли они в разных доменах (видя CORS)? Вы смотрели модули аутентификации для узла? Может быть, токен-подход? Нравится JWT? npmjs.com/package/njwt