我引用了一篇文章(底部提供的参考链接)来实现PHP中的Post-Redirect-Get(PRG)模式(底部提供的实现链接)。 在大多数设备中都能正常运行;但在某些特定设备中不起作用。我发现这是在一些用户报告他们无法注册新帐户后(我在那里使用过相同的PRG实现)。此问题仅限于某些特定的Android设备,尚未在任何其他平台上报告。
遇到此问题的用户在其设备中的所有浏览器中都会遇到此问题。
最初,我怀疑此问题与 PHP SESSION 有关,我在这些设备中彻底测试了会话。但是,它们正常工作(PRG实现链接中提供的会话测试实现链接)。
我没有任何设备存在此问题,因此我无法自行重现此问题。我在遇到这个问题的朋友的帮助下尝试调试,因此我仍然可以间接地重现它。
您可能无法重现此问题,在这种情况下,请查看代码并查看是否有任何错误。
在2000名用户中,只有30-50名用户遇到了这个问题。
报告此问题的部分用户的设备列表 -
注意 - 我还没有在上述模型的多个设备中测试此问题,也就是说,相同的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;
?>
答案 0 :(得分:0)
启用了chrome数据保护程序的设备出现了问题。禁用它可以立即解决问题。 它仅在android设备上发生,因为chrome android上会显示“启用chrome数据保护程序”提示,但在台式机上则需要从chrome网上商店中明确安装。