重定向后停止在历史记录中记住页面

时间:2014-02-07 19:49:23

标签: php html user-experience

我有一个页面,当单击一个链接(必须保持链接,没有JavaScript)时,会重定向到PHP脚本以执行近乎瞬时的操作,然后发送回上一页。 / p>

问题是,当用户单击后退按钮时,页面将返回到执行脚本之前已加载的页面,并且用户必须先单击后退按钮两次才能返回发送页。

有没有办法阻止这个?用户体验不是必须单击两次后退箭头,并且必须有一种(相对简单的)方法来阻止这种情况发生。

任何帮助表示感谢。

这是该网站的网址 http://pla-za.tk/php-login/like.php

这是product_details.php代码

<?php

////////////////database connection///////////////////////////////////////////
$con=mysqli_connect("*******","********","******","*********");
//////////////////////////////////////////////////////////////////////////////

$id=$_GET["id"];

$query=mysqli_query($con,"SELECT ilike FROM mothar WHERE product_id like $id");
if(mysqli_num_rows($query)>0){
    $like_img="unlike.png";
}
else{
    $like_img ="like.png";
}

///////////////////////////////like query//////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
$query=mysqli_query($con,"SELECT * FROM products WHERE id like $id");
echo "<table border='2'>
<tr>
<td>id</td>
<td>name</td>
<td>button</td>";

while($row = mysqli_fetch_array($query))
  {
      $product_id=$row['id'];
  echo "<tr>";
  echo "<td>".$row['id']."</td>";
  echo "<td>".$row['name']."</td>";
  echo "<td><form action='test4.php' method='post' name'idnumber'><input type='submit' name='like' value='$product_id' style='background-image:url(http://pla-za.tk/php-login/images/$like_img); width:50px; height:35px; color:transparent; display:block; border:0px;'/></form></td>";
  echo "</tr>";
  }
  echo "</table>";

$product_likes= mysqli_query($con,"SELECT likes FROM products WHERE id like $id");

while($rowlike=mysqli_fetch_array($product_likes))
{
    $like =$rowlike['likes'];

}

?>
<?php echo "$like like this" ;

?>

和test4.php的这段代码

<?php
$con=mysqli_connect("*********","********","********","********");
  $like_submit= $_POST["like"];
$product_likes= mysqli_query($con,"SELECT likes FROM products WHERE id like $like_submit");

while($rowlike=mysqli_fetch_array($product_likes))
{
    $like =$rowlike['likes'];
}

//////////////////////////check if user put like //////////////////////////////
$check_query= mysqli_query($con,"SELECT ilike FROM mothar WHERE product_id like $like_submit");
while($rowlike=mysqli_fetch_array($check_query))
{
    $ilike =$rowlike["ilike"];
}
///////////////////////////////if else(like)//////////////////////////////////
if (mysqli_num_rows($check_query) >0){

    //////////////////////////delete 1 like from products table/////////////////////
$add_like_to_products_table=mysqli_query($con,"UPDATE products SET likes= $like-1
WHERE id like $like_submit");

$delete_like_in_user_table =mysqli_query($con,"DELETE FROM mothar WHERE product_id like $like_submit");


}
else{
    //////////////////////////add 1 like to products table//////////////////////////
    $add_like_to_products_table=mysqli_query($con,"UPDATE products SET likes=$like+1
WHERE id like $like_submit");

$add_like_in_user_table =mysqli_query($con,"INSERT INTO mothar (product_id, ilike)
VALUES ($like_submit, 1)");


}
////////////////////////////////////
header( "Location: http://pla-za.tk/php-login/product_details.php?id=1" );
exit();
?>

2 个答案:

答案 0 :(得分:0)

根据我的理解,我可以给你2个选项

  1. 使用AJAX调用。这样,您就可以停留在同一页面上,但会向服务器发出请求。
  2. 将其他脚本的代码放入第一页的脚本中。您可以在网址中使用GET值,例如script.php?specialAction=true。这样你就不需要从一个页面跳转到另一个页面,但是你只需要用一个参数加载同一个页面,该参数说明应该执行一些特殊操作。显然你需要把这样的东西放到代码中

    if($_GET['specialAction']) {
         // do something cool here
    }
    

答案 1 :(得分:0)

没有看到你正在使用的任何代码我只是在猜测但我知道这一点:使用任何类型的元刷新方法都会将临时页面放入客户端的浏览器历史记录中,但是如果你使用

header("Location: destination.php");

不会。