【问题标题】:Using URL to send data to a server使用 URL 向服务器发送数据
【发布时间】:2012-11-29 19:49:58
【问题描述】:

我正在寻找一种方法来解释服务器端 URL 中的数据。 客户端,我可以控制 URL 是什么,我可以通过编程方式为 URL 生成数据,但我无法直接访问源代码。

所以最终,我正在尝试为离线游戏构建一个在线高分系统。

我可以访问 Azure 和我的专用 LAMP 服务器。我希望我的服务器等待使用类似“http://www.myappserver19002393859.com/HighScores?UserID=2fb44e3888?Score=25250”的 URL 的连接 我想从 URL 中获取用户 ID 和分数,然后重定向到具有高分表的另一个页面...

有什么建议吗?

(编辑:我可以在服务器端做任何事情,它只是我有限制的客户端。)

【问题讨论】:

  • 那么您的问题到底是什么?你所描述的在 PHP 中实现是微不足道的。
  • 我熟悉PHP,但我不是专业人士。我想我迷路了,因为我有点被锁定在应用程序的客户端。
  • 我的问题是如何从 PHP 的 URL 中解析出我想要的信息。由于应用程序只是客户端,直到单击链接......之后它只是一个浏览器,所以你是对的......我想它没有太复杂。我没有用 PHP 中的 URL 做这类事情的经验。

标签: html lamp


【解决方案1】:

使用 PHP 的 $_GET 集合。它包含 URI 查询字符串的键/值对。

在您给出的示例中,它看起来像这样:

HighScoresHandler.php

<?php
$userId = $_GET['UserID'];
$score  = $_GET['Score'];

// Validation

if( empty( $userId ) || empty( $score ) ) {
    echo "No UserID or Score provided.";
    exit();
}
$score = intval( $score );
if( $score === 0 ) {
    echo "Invalid score specified.";
    exit();
}

// Verification

// TODO: Query your database to ensure the user specified by $userID exists.
// Make sure you do this safely as not to be subject to SQL injection.

$sql = "SELECT COUNT(*) FROM Users WHERE UserID = @userId";

// Action

$sql = "INSERT INTO HighScores ( UserID, Score ) VALUES ( @userId, @score )";


?>

请注意,建议您实施某种形式的 MAC(消息验证码)或其他一些系统来验证分数是否真实,否则不会阻止任何人使用伪造的 HTTP 请求提交虚假分数(这就是为什么您有时会看到在线记分牌上发布的高分)。

【讨论】:

  • $userId = intval($userId);
  • 非常感谢。我会投票,但我还没有获得足够的代表......很难成为聪明孩子俱乐部中的聪明孩子。
  • @lvil 在问题中 userId 不是整数,所以我没有为 userId 执行任何转换/转换,但我为分数做了。
  • @Dai 对了,没注意,反正这里得验证一下
猜你喜欢
  • 1970-01-01
  • 2019-10-24
  • 2014-01-31
  • 1970-01-01
  • 2010-12-03
  • 2015-11-18
相关资源
最近更新 更多