我需要一点帮助。我有一个页面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,然后,如果刷新或访问其他页面,则重定向并显示为访客。
答案 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感谢您的解释和帮助