Переменные сеанса не определяются с помощью AJAX - Node.js - PullRequest
0 голосов
/ 28 июня 2018

Проблема:

Здравствуйте, я пытаюсь вызвать php-файл из node.js с помощью AJAX, но когда я это сделаю, переменные сеанса возвращают неопределенное значение, а база данных не обновляется. Тем не менее, файл php работает, потому что я проверил его по ссылке в браузере. К сожалению, я не могу просто определить переменные сеанса как данные для AJAX, потому что я не могу включить php в javascript или html. (Узел JS не позволяет мне изменить мой index.html на index.php).


Что работает:

  • Файл: Когда я размещаю php-файл как ссылку в браузере, база данных корректно обновляется, и все работает отлично.
  • AJAX: Когда я вызываю php-файл из AJAX, он отображает сообщение об успехе, но когда я изменил сообщение об успехе на одну из переменных сеанса, он возвращает пустое значение. (Вот как я узнал, что переменные являются проблемой)

Код:

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() 
{ 

$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; 
} 

} 
?>

JS:

app.js

   $.ajax({
    type: "POST",
    url: 'http://cashballz.net/game/5game/subtract5.php',
    data: {}, 
    success: function (data) {
        alert(data);
    }
});

Вывод:

Я думал, что когда я развертываю сервер узлов из index.php (индексный файл моего сайта, а не узла, который является index.html), тогда я мог бы отправлять переменные php в виде файла json с глобальной базой данных и получать к нему доступ. от узла, но я попытался исследовать это и понятия не имею, как это работает.

Я новичок в PHP, поэтому я открыт для множества разных решений!

P.S. Предпочтение отдается наиболее безопасному решению, потому что мой сайт использует реальные деньги.

Спасибо за помощь!

...