У меня были проблемы с публикацией баллов от Игра Flash CC AS3 к PHP страница с База данных SQL.
Я получал ERROR #2101
сообщения в моем окне вывода.
После долгих поисков этой проблемы мне посоветовали проверить, был ли PHP проблемой.
Я создал очень простой файл Flash, код (я заменил мой фактический адрес сайта ниже):
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLLoader;
import flash.events.Event;
var userName = "Jamie";
var newScore = 1300123;
btn_submit.addEventListener(MouseEvent.CLICK, submitted);
function submitted(e:MouseEvent) {
var myrequest:URLRequest = new URLRequest("http://mysiteaddresshere.com/test_scores.php");
myrequest.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.player = userName;
variables.score = newScore;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.load(myrequest);
}
function dataOnLoad(evt:Event) {
MC_success.alpha = 100;
}
Код PHP выглядит следующим образом:
<?php
include("db.php");
// Connect to the MySQL server
$link = mysql_connect($host, $user, $pass);
if(!$link) {
die('Failed to connect to server.'.mysql_error());
}
$db = mysql_select_db($database);
if(!$db) {
die("unable to select database");
}
$gameName = "ietul";
$employeeID = 123456;
$player = $_POST['userName'];
$score = $_POST['newScore'];
//Create INSERT query
$qry = "INSERT INTO highScore (gameName,employeeID,player,score) VALUES('$gameName','$employeeID','$player','$score')";
$result = @mysql_query($qry);
echo "writing = OK";
exit();
mysql_close();
?>
include
включает в себя соединение и детали таблицы для этой базы данных.
Сама игра должна включать gameName
а также employeeID
переменные, но для тестирования я здесь жестко их закодировал.
Я загружаю игру, html и связанные файлы на тот же сайт, и когда я играю на нем, моя база данных обновляется, добавляя данные gamename и employeeID, но поля игрока и счета остаются пустыми.
Я пробовал разные версии этого, используя метод GET
, формат данных TEXT
среди других.
Я смотрю на это и исследую эту проблему уже более 1 недели … если кто-нибудь там скажет мне, что я делаю неправильно, я был бы рад услышать от вас!
Я относительно новичок в расчесывании Flash, PHP и SQL, поэтому извините, если я что-то упускаю из виду!
Еще раз спасибо,
сойка
Попробуй это :
Код AS3:
btn_submit.addEventListener(MouseEvent.CLICK, submit_on_Press)
function submit_on_Press(e:MouseEvent) {
var variables:URLVariables = new URLVariables()
variables.player = 'player_name'
variables.score = 1526
var request:URLRequest = new URLRequest('http://127.0.0.1/score/score.php')
request.method = URLRequestMethod.POST
request.data = variables
var loader:URLLoader = new URLLoader()
loader.dataFormat = URLLoaderDataFormat.VARIABLES
loader.addEventListener(Event.COMPLETE, data_on_Load)
loader.load(request)
}
function data_on_Load(e:Event) {
trace(e.target.data.writing)
}
Код PHP:
<?php
if(count($_POST) != 2) die();
$player = trim($_POST['player']);
$score = intval($_POST['score']);
$link = mysqli_connect('127.0.0.1', 'root', '', 'test') or die('Error ' . mysqli_error($link));
$query = "INSERT INTO test(player, score) Values('".$player."', ".$score.")";
$result = $link->query($query);
$link->close();
echo 'writing='.($result ? 'ok' : 'error');
?>
Для PHP я рекомендую вам использовать MySQLi потому что mysql устарела.
Вам нужно отправить переменные
myrequest.data = variables; //<------- THIS
Добавьте это в свой код
function submitted(e:MouseEvent) {
var myrequest:URLRequest = new URLRequest("http://mysiteaddresshere.com/test_scores.php");
myrequest.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.player = userName;
variables.score = newScore;
myrequest.data = variables; //<------- THIS
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.load(myrequest);
}