【问题标题】:PHP make echo json_encode() not display information on pagePHP make echo json_encode() 不在页面上显示信息
【发布时间】:2017-03-27 02:48:08
【问题描述】:

我正在尝试制作的HTML prize hunt game 有问题。我遇到的问题是,当我想从数据库中获取一个值时,我必须使用AJAX call on a html page。但是为了让它起作用,我需要回显json_encode(),然后有人能够去那个侧页(www.website.com/jsonencode.php)并找到奖品的location。 任何帮助表示赞赏:)

PHP 代码:

<?php

ini_set('display_errors', 1); 
error_reporting(E_ALL);
$servername = "localhost";
$username = "fkwills";
$password = "password";
$dbname = "FKDatabase";

$conn = mysqli_connect($servername, $username, $password);
mysqli_select_db($conn, $dbname);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


$query = ("SELECT `markerLocation`, `markerCode`, `used`, `active` FROM `markerInfo`");
$result = mysqli_query($conn, $query);
$result1 = mysqli_fetch_row($result); 

echo json_encode(array("markerLocation"=>$result1[0],"markerCode"=>$result1[1],"used"=>$result1[2], "active"=>$result1[3]));

?>

HTML 代码:

var markerCode;
var used;
var active;
var markerLocation;


 function downloadCode() {
        $.ajax({
        type: 'GET',
        url: 'getMarkerPage.php',
        dataType: "json",
        success: function(data) {
            markerCode = data.markerCode;
            used = data.used;
            active = data.active;
            markerLocation = JSON.parse(data.markerLocation);
        },
        error: function(data) {
        console.log(data);
        }
    }); 
}

是的,我调用函数downloadCode();

【问题讨论】:

  • 我不太明白这个游戏是如何运作的,但结果应该只是您想要发送给您的用户的结果。如果是猜谜游戏,客户端应该询问服务器 4 是否是正确的数字,并且服务器会回答“是或否”。你不应该把所有的结果都发给客户来问他是否正确。这就像向您发送我的密码列表,询问您的密码是否在那里。
  • 如果您有“要存储的临时数据”,例如之前猜测的数字或尝试次数,您可以将其存储在更难调整的会话 cookie 中。 php.net/manual/en/reserved.variables.session.php 但是当浏览器关闭时您将丢失该信息。您也可以将内容存储在 cookie 中,但这很容易调整(就像发出 ajax 请求或欺骗 POST 表单值一样简单。我认为最好的方法是混合使用 SQL 和会话 cookie 并处理每个“敏感”服务器端的东西。

标签: php jquery html sql ajax


【解决方案1】:

你可以使用

    $.ajax({
    type: 'POST',
    ...

只有当方法是POST时才回显@PHP

if ($_SERVER['REQUEST_METHOD'] === 'POST')
    echo json_encode(//............

【讨论】:

  • 这并不能阻止任何用户随意访问信息 - ajax 不是唯一可以发出发布请求的东西。
  • 嗨,谢谢这工作,但如果有人知道如何绕过谷歌浏览器,他们仍然可以进入开发人员工具上的网络选项卡并检查它。 @Hossam
  • @PaulCrovella 为什么会这样?它对我来说很好,只是网络标签仍然是问题
  • @WilliamSharp 任何 http 客户端都可以发出 post 请求,例如wget、curl、postman,或者只是一个基本的 html 表单,任何人都可以在他们的浏览器中编写和运行。
  • @WilliamSharp 没有任何方法可以阻止这种情况 - 您必须考虑到事情的客户端完全不受您的控制。这意味着您不会向客户发送您不希望他们看到的任何信息。在游戏的情况下,您要做的是将玩家的操作发送到服务器,在那里计算这些操作的后果,然后发回您希望玩家看到的结果。
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
相关资源
最近更新 更多