【问题标题】:Redirect page after delete account in php在php中删除帐户后重定向页面
【发布时间】:2017-10-27 17:10:39
【问题描述】:

我需要一点帮助。我有一个页面 profile.php 和一个删除帐户的选项:

  // DELETE THE ACCOUNT !!
$_SESSION["delacc"] = FALSE;
          if (isset ($_POST ['deleteaccount'])) {          
            $deleteaccount = $_POST['deleteaccount'];
            $delacc="DELETE FROM users WHERE username='$username'";
            $resdelacc = mysqli_query($con,$delacc);
            if ($resdelacc) {
               header('Location: index.php');
               $_SESSION["delacc"] = TRUE;
               unset($_SESSION['username']);
            } else {
                echo "ERROR !!! Something were wrong !!";
            }
          } 

问题在于 if ($resdelacc)。如果这是真的,导致帐户被删除,取消设置会话用户名(注销),然后我想将页面重定向到 index.php 我有代码的地方:

    if(isset($_SESSION["delacc"])) {
if($_SESSION["delacc"] == TRUE) {
    echo "<b><font color='red'>YOUR ACCOUNT WAS SUCCESFULLY DELETED !!</font></b>";
    $_SESSION['delacc'] = FALSE;
} 
}   

我唯一的问题是这行“header('Location: index.php');”(来自 profile.php)在任何情况下都不会运行。当用户点击“DELETE ACCOUNT”按钮时,页面仍然是profil.php,然后,如果刷新或访问另一个页面,将被重定向并显示为访客。

【问题讨论】:

  • 首先,在取消设置会话后放置重定向。另外,您是否尝试将其重定向到另一个页面?例如header('Location: http://google.com'); 看看它是否有效?我认为您处理 URL 的方式有问题。

标签: php session redirect


【解决方案1】:

非常简单.. 原因是在结果输出页面之后您无法重定向。所以你已经准备好在几秒钟后重定向它,以便用户阅读结果消息。

像这样:

if($_SESSION["delacc"] == TRUE) {
  $_SESSION['delacc'] = FALSE;
  echo '<!DOCTYPE html><html><head><meta http-equiv="refresh" content="7;url=http://'.$_SERVER['HTTP_HOST'].'/index.html"/>';
  echo "</head><body>";
  echo "<b><font color='red'>YOUR ACCOUNT WAS SUCCESFULLY DELETED !!</font></b>";
}

该更改将在 7 秒后重定向到 index.html。

附言。生成的 HTML 结果页面使其在 POST 处理后直接由此代码启动。 (在任何回声之前)因为回声将开始生成结果页面,并且重定向的唯一逻辑位置是在任何 BODY 元素之前的 HEADER

【讨论】:

    【解决方案2】:

    &lt;meta http-equiv="refresh" content="0";url="/index.php"/&gt;

    重定向(url)不为 index.php 运行,因为我之前有另一个重定向:

    if(isset($_SESSION['username'])==FALSE) {
        header('Location: login.php');
    } 
    

    但是没关系,我将消息“删除成功”放在 login.php 中并从 index.php 中删除。我设置 content=0,因为删除后,用户将被限制为 page profile.php,需要立即更改为另一个。由于可以返回 profile.php 的 SESSION['username'] 的验证,我无法重定向到另一个页面......这是一个冲突。我需要稍微思考一下这个带有重定向的代码,我知道可以更好地解决它:D 感谢您的解释和帮助

    【讨论】:

      猜你喜欢
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 2016-08-12
      • 2020-02-19
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多