我正在构建一个html5(phaser js)游戏,我需要构建一个排行榜。代码片段是这样的:
restart_game: function() {
// Start the 'main' state, which restarts the game
//this.game.time.events.remove(this.timer);
//this.game.time.events.remove(this.timer2);
//this.game.state.start('main');
var string="score.php?score="+this.score;
window.open(string);
},
在window.open函数中我希望将得分值传递给另一个页面,我将要求提供玩家的名字,然后将得分和名称都插入数据库。但我无法将分数值传递到三页。 我怎样才能做到这一点?我需要AJAX还是只需PHP和Javascript就足够了?
答案 0 :(得分:2)
您可以使用浏览器Cookie吗?你可以在cookie中保存得分值并在需要时访问它吗?阅读本文关于如何使用cookie链接https://developer.mozilla.org/en-US/docs/Web/API/document.cookie
要像这样保存到cookie:
document.cookie="score=54; expires=Thu, 18 Dec 2013 12:00:00 GMT";
在PHP中,您可以阅读cookie
if(isset(($_COOKIE['score'])) {
$score = $_COOKIE['score'];
}
在JS中读取cookie:
var score = document.cookie;
答案 1 :(得分:1)
您可以使用会话变量将变量保留在内存中,并且可以访问它,直到您的会话处于活动状态。
<?php
error_reporting(E_ALL);
session_start();
if (isset($_POST['session'])) {
$session = eval("return {$_POST['session']};");
if (is_array($session)) {
$_SESSION = $session;
header("Location: {$_SERVER['PHP_SELF']}?saved");
}
else {
header("Location: {$_SERVER['PHP_SELF']}?error");
}
}
$session = htmlentities(var_export($_SESSION, true));
?>
有关详细信息,请查看Here
答案 2 :(得分:1)
查找jQuery
restart_game: function() {
var score = this.score;
$.ajax({
url: 'save_score.php',
data: {score: score},
method: 'POST'
}).done(function() {
window.location = "other_page.php";
});
},
save_score.php
session_start();
if(isset($_POST['score']) && strlen($_POST['score']) > 0) {
$score = intval($_POST['score']);
$_SESSION['score'] = $score;
}
other_page.php
session_start();
var_dump($_SESSION);
答案 3 :(得分:0)
您可以在php中使用$ _SESSION变量来跟踪会话中的用户相关数据。它需要cookie。