这个可能要花点时间,但请留下来陪我。
我一直在使用以下代码:
if(isset($_GET['o']) && isset($_GET['q'])){
echo("WIN 1");
if($_GET['o'] == "remove") {
echo("WIN 2");
$_SESSION['product_'.$_GET['q']]-=1;
echo("WIN 3");
if($_SESSION['product_'.$_GET['q']] < 1) {
unset($_SESSION['product_'.$_GET['q']]);
echo("WIN 4");
redirect("checkout.php");
} else {
echo("LOSE");
redirect("checkout.php");
}
}
}它没有执行任何功能,除非我使用以下方法来完成:
exit();在每个回声之后。我不知道是什么引起了这个问题。
正在传递的URL是:
localhost/cart.php?q=1&o=remove谢谢!
编辑
我是这样设置会话的(我已经删除了回声):
if(isset($_GET['q'])) {
$query = query("SELECT * FROM products WHERE product_id=".escape_string($_GET['q'])."");
confirm($query);
while($row = fetch_array($query)){
if($row['product_quantity'] != $_SESSION['product_'.$_GET['q']]){
$_SESSION['product_'.$_GET['q']]+=1;
redirect("checkout.php");
} else if($row['product_quantity_tracking'] == "No") { //CHECK TO SEE IF IT'S INVENTORY TRACKED
redirect("checkout.php");
} else {
set_message("Sorry! There isn't enough in stock to complete that request!");
redirect("checkout.php");
}
}
}这是重定向功能:
function redirect($location){
header("Location: $location");
}我希望这能帮到你!
发布于 2020-10-05 06:34:23
因此,由于某种原因,当我在cart.php上单击重定向时,它正在运行页面的其余部分,而不是像预期的那样只是重定向和退出页面。
为了解决这个问题,我必须将代码更改为:
if(isset($_GET['o']) && isset($_GET['q'])){
if($_GET['o'] == "remove") {
$_SESSION['product_'.$_GET['q']]-=1;
if($_SESSION['product_'.$_GET['q']] < 1) {
unset($_SESSION['product_'.$_GET['q']]);
redirect("checkout.php");
exit();
} else {
redirect("checkout.php");
exit();
}
}
}通过在重定向之后添加exit();,它确保没有遵循页面上脚本的其余部分。
谢谢大家的帮助!
发布于 2020-09-30 07:56:52
通过使用exit();,您可以停止执行脚本,并且可以看到使用echo的打印出来的所有内容。
->如果你能看到像'WIN 1','WIN 2',.退出脚本时,它可以很好地运行,直到这行。
->您的问题必须在这行之后找到。
我想您的问题在于redirect()函数。有关如何执行重定向:How do I make a redirect in PHP?,请参阅以下内容
https://stackoverflow.com/questions/64132439
复制相似问题