1

わかりました、まず第一に、私の質問を読んでくれてありがとう、できるだけ多くの情報を追加しようとします. 私は現在、Garrysmod ゲームタイプのリーダーボードを作成しています。ゲームモードのコーダーから API キーを取得しました。その API キーを使用して、STEAM_ID を使用して JSON でエンコードされた配列を抽出できます。

例: http://www.revoltgaming.com/api/?key=SENCORED_API_KEY&action=ajack_all&steamid=STEAM_0:0:5898349

以下のコードを使用すると、すべて正常に動作します。

$usr_url_everything = "http://www.revoltgaming.com/api/?key=114d788c3e40e91842f945f19c978e66&action=ajack_all&steamid=" . $_SESSION['STEAMID'];
$json_encoded = file_get_contents($usr_url_everything);
$json_decoded = json_decode($json_encoded, true);

しかし、ユーザーが初めて参加するときに、JSON 文字列を抽出して MySQL データベースに保存します。

$usr_url_everything = "http://www.revoltgaming.com/api/?key=114d788c3e40e91842f945f19c978e66&action=ajack_all&steamid=" . $_SESSION['STEAMID'];
$json_encoded = file_get_contents($usr_url_everything);
$query = "INSERT INTO vm_leaderboard (`txtUser`, `txtJson`) VALUES ('" . $_SESSION['STEAM64'] . "', '" . $json_encoded . "')";

しかし、データベースから取得したjson文字列をデコードしようとした瞬間から、機能せず、NULLが返されます。データベースに保存した json 文字列は、API ページから直接取得した文字列と同じです。

データベースから取得される文字列は次のとおりです: http://www.ishots-cave.com/revolt_/lb_applejack.php

4

2 に答える 2

2

だから私がコメントに投稿したように、それを回答に変換すると役に立ちました.JSON文字列はDBに挿入する前にサニタイズする必要があります:

$usr_url_everything = "http://www.revoltgaming.com/api/?key=&action=ajack_all&steamid=" . $_SESSION['STEAMID'];
$json_encoded = file_get_contents($usr_url_everything);
// sanitize the JSON string
$json_encoded = mysql_real_escape_string($json_encoded);
// insert in common way
$query = "INSERT INTO vm_leaderboard (`txtUser`, `txtJson`) VALUES ('" . $_SESSION['STEAM64'] . "', '" . $json_encoded . "')";

楽しみ!

于 2012-06-15T14:33:46.323 に答える
1

JSON ファイルには、おそらくクエリを変更するバックスラッシュと引用符があります。したがって、次のようにコードを再試行してください。

$query = "INSERT INTO vm_leaderboard (`txtUser`, `txtJson`) VALUES ('" . $_SESSION['STEAM64'] . "', '" . mysql_real_escape_string($json_encoded) . "')";
于 2012-06-15T14:26:28.150 に答える