索引始终刷新

时间:2017-05-25 10:22:50

标签: php html

我正在创建一个动态网站,我正在通过电子邮件重置密码,我在我的数据库中有这个标志,所以当用户重置密码时,该值为true,下次用户登录时,他将被重定向到更改密码页面。

我正在使用带有开关的单个索引页面。

<?php
session_start();
$lig=mysql_connect("localhost", "root", "") or 
        die ("Problema na ligação ao servidor MYSQL");
mysql_select_db("demo",$lig);
if (isset($_REQUEST['cmd'])) $cmd=$_REQUEST['cmd']; else $cmd='home';
?>

<div class="col-md-12">
         <div class="row">

                        <?php

            switch($cmd) {
                case 'home': require('home.php');break;
                case 'pw': require('users/pw.php');break;
             }
             ?> </div> </div>

我制作了这段代码,所以当重置不同于NULL时,他会将用户重定向到pw。

if(isset($_SESSION['user'])){
   if(is_null($_SESSION['reset'])){ 
   }
    else{ echo "<meta http-equiv=refresh content=0;URL=index.php?cmd=pw>";
        }       
}

但页面似乎处于无限循环中。 我把它放在index.php页面中,但如果 我把它放在主页中,例如它工作正常,我希望能够在索引中创建它,所以我不必把它放在我的网站的每一页... 让content=0;更大的时间不是一个可靠的选择.. 谢谢!

1 个答案:

答案 0 :(得分:0)

在用户更改密码后使用session_destroy()销毁会话,因此您只需要检查是否设置了$ _SESSION。我将这个例程用于指向已登录页面的用户。

function changePass(){
//YOUR ROUTINE
   if ($queryExecuted == true){
     session_destroy();
   }
}

//checking session
if(!isset($_SESSION)){ 
  echo "<meta http-equiv=refresh content=0;URL=index.php?cmd=pw>";     
}

你的meta总是在运行,因为在else语句中,在$ _SESSION ['reset']不为空时采用所有其他条件。其他重要的事情是避免使用echo metas,而是使用header

header("Refresh:0");
//or refresh and redirect
header("Refresh:0; url=page2.php");

用户登录后,不要重定向到索引页面和所有这些验证,只需在自己的用户登录例程中验证并重定向到users / pw.php

如果您不想更改所有例行检查,则页面始终刷新,因为不检查用户所在位置:

if(isset($_SESSION['user']) && !is_null($_SESSION['reset']) && (isset($_GET['cmd']) && $_GET['cmd'] != 'pw')){ 
header("Refresh:0; url=index.php?cmd=pw"); 
}