尝试将PHP会话变量传递给Node JS文件

时间:2018-06-27 18:29:01

标签: javascript php json ajax html5

问题:

我目前正在制作一个游戏,该游戏需要访问数据库值才能使用ajax执行PHP文件。当我将链接放在浏览器中时,PHP文件有效,但被ajax调用时则不起作用。这是因为未传递会话变量。

在我的Node游戏中,我无法将index.html更改为index.php,因为这会导致很多问题,因此,我需要一种在数据库中将变量传递到javascript的方法,而无需在javascript中使用直接的PHP代码。 / p>


代码:

这是我的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文件都位于一个文件夹中。

感谢您的帮助。

0 个答案:

没有答案