【问题标题】:using $_GET in PHP with https在 PHP 中使用 $_GET 和 https
【发布时间】:2012-11-16 22:21:38
【问题描述】:

我正在尝试将变量传递到 https:// 连接上的另一个页面,但没有取得多大成功。以下是查询

https://mydomain.prefix/secure/myfile.php?claim_id=12345678

然后我尝试使用以下方法检索它:

$claim_id=trim(mysqli_real_escape_string($dbc, $_GET['claim_id']));

不幸的是,这不起作用,我想知道是否是 ssl 阻止了它。如果是这样,我怎样才能将这个变量从一个 href 链接传递到我的页面?

【问题讨论】:

  • ssl 应该与您的问题无关,并且 $_GET 应该可以工作......
  • <?php echo $_GET["claim_id"]; ?> 应该返回 12345678
  • 实际上这种方法确实有效 - 出于某种原因,试图将其粘贴到 $claim_id 中,因为它没有...感谢您的帮助,但它让我感到困惑 :)
  • 声明 ID 必须是字符串还是整数?
  • 将您的合并语句分解为多个步骤,例如: $claim_id = $_GET['claim_id'];回声 $claim_id; $claim_id = mysqli_real_escape_string($dbc, $claim_id);回声 $claim_id;等以准确显示它的故障位置。

标签: php ssl https query-string get-request


【解决方案1】:

不幸的是,这不起作用

....不是对结果的有意义的描述。代码本质上没有任何问题。

尝试替换

$claim_id=trim(mysqli_real_escape_string($dbc, $_GET['claim_id']));

if (is_resource($dbc)) {
  $claim_id=trim(mysqli_real_escape_string($dbc, $_GET['claim_id']));
  print "I got " . htmlentities($claim_id) . "<br />";
} else {
  print "I have no database handle! <br />";
}
print "ERR=" . mysql_error() . "<br />";

向我们展示实际发生的事情。

【讨论】:

  • 这只是在语句中输出文本而没有错误-显然是数据库连接问题-谢谢
  • 如果是数据库连接问题应该报错。
【解决方案2】:

只是为了恢复这个问题的具体答案:

如果您遇到此类问题,请查看其他地方,而不是在您的 HTTPS 设置或 PHP GET 请求和参数中。

我遇到了这样的问题,一切都在 HTTP 上运行,而当我将系统迁移到 HTTPS 时却不行。我没有收到我期望的 GET 变量。经过几个小时试图找到一些与 HTTPS 设置和 PHP 配置和代码相关的问题后,问题变成了我没有收到 GET 变量,因为包含在 HTML 标头中的 JS 库由于以下原因没有被包含在内FF23 (https://blog.mozilla.org/tanvi/2013/04/10/mixed-content-blocking-enabled-in-firefox-23/) 中的新限制。我将 JS 包含更改为 HTTPS,一切正常。

这个特定问题的解决方案(来自 Sideshow)变成了一个数据库问题。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多