在php中删除帐户后重定向页面

时间:2017-05-26 18:12:07

标签: php session redirect

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

  // 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;
} 
}   

我唯一的问题是这条线&#34; 标题(&#39;位置:index.php&#39;);&#34; (来自profile.php)无论如何都不会运行。当用户单击按钮&#34;删除帐户&#34;时,页面仍为profil.php,然后,如果刷新或访问其他页面,则重定向并显示为访客。

2 个答案:

答案 0 :(得分:0)

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

像这样:

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。

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

答案 1 :(得分:0)

<meta http-equiv="refresh" content="0";url="/index.php"/>

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

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

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