【问题标题】:PHP Post-Redirect-Get failing in some specific Android devicesPHP Post-Redirect-Get 在某些特定的 Android 设备中失败
【发布时间】:2023-03-03 09:53:01
【问题描述】:

我参考了一篇文章(底部提供参考链接)在 PHP 中实现 Post-Redirect-Get(PRG) 模式(底部提供实现链接)。它在大多数设备上都能完美运行;但是它在某些特定设备中不起作用。在一些用户报告他们无法注册新帐户后,我发现了这一点(我在那里使用了相同的 PRG 实现)。该问题仅限于某些特定的 Android 设备,并且尚未在任何其他平台上报告

遇到此问题的用户在其设备的所有浏览器中都会遇到此问题。

最初,我怀疑这个问题与 PHP SESSION 有关,我在这些设备上彻底测试了会话。但是,它们工作得非常好(PRG 实施链接中提供了会话测试实施链接)。

我没有任何设备存在此问题,因此我无法自己重现此问题。我在遇到此问题的朋友的帮助下尝试调试,因此我仍然能够间接重现它。

您也可能无法重现此问题,在这种情况下,请查看代码,看看是否有任何问题。

在 2000 名用户中,只有 30-50 名用户面临此问题。

报告问题的部分用户的设备列表-

  • Moto Z Play,Android 7.0
  • Moto M,Android 7.0
  • 小米4i,安卓5.0.2
  • 一加 5,Android 7.0

注意-我还没有在上述型号的多个设备中测试过这个问题,也就是说,相同的 PRG 实现可能适用于所有 OnePlus 5 型号,除了那个报告问题的位置。

PRG模式实现参考-
http://wordsideasandthings.blogspot.in/2013/04/post-redirect-get-pattern-in-php.html
演示问题的实现(仅在那些特定设备中)-
http://witch-hunt-crewmemb.000webhostapp.com/stackoverflow/prg/echochamber.php

PRG 实施-

<?php
session_start();

$echoedShout = "";

if(count($_POST) > 0) {
    $_SESSION['shout'] = $_POST['shout'];

    header("HTTP/1.1 303 See Other");
    header("Location: http://witch-hunt-crewmemb.000webhostapp.com/stackoverflow/prg/echochamber.php");
    die();
}
else if (isset($_SESSION['shout'])){
    $echoedShout = $_SESSION['shout'];

    /*
        Put database-affecting code here.
    */

    session_unset();
    session_destroy();
}
?>

会话测试实施-

<?php
session_start();
if(isset($_SESSION['y'])){
    $x=$_SESSION['y'];
    unset($_SESSION['y']);
}
else{
    $_SESSION['y']='b';
    $x='a';
}
echo $x;
?>

【问题讨论】:

  • 可能是 303 状态码的问题。我会尝试 302,看看是否会改变任何东西。 (en.wikipedia.org/wiki/Post/Redirect/Get)
  • @CBroe 我尝试发送 302,没有变化。尝试在标头位置之前显式发送 302 以及隐式使用标头位置,如果没有发送其他代码,默认情况下发送 302

标签: php android session redirect


【解决方案1】:

问题出现在启用了 chrome 数据保护程序的设备上。禁用它立即解决了问题。 它只发生在 android 设备上,因为 chrome android 上会显示“启用 chrome 数据保护程序”提示,但在桌面上需要从 chrome 网上商店显式安装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多