登录后重定向

问题描述:

这是我当前使用的代码,在localhost上这个工作很好并重定向,但是当我尝试在像altervista.org这样的免费网站上传时,这个没有重定向more..why?登录后重定向

<?php 
      $p = $_GET['azione']; 
      // login.php?azione=login 
      if($p == "login"){ 

      if(!isset($_POST['invia'])){ ?> 
       <div class="loginform"> 
       <h3>Login!</h3> 
       <form class="form-horizontal" method="post" action="#" id="formlogin"> 
        <div class="control-group"> 
        <label class="control-label" for="username"></label> 
        <div class="controls"> 
         <input type="text" placeholder="Username" name="username" id="username" /><br> 
        </div> 
        </div> 
        <div class="control-group"> 
        <div class="controls"> 
         <input type="password" placeholder="Password" name="password" id="password" /><br> 
        </div> 
        </div> 
        <div class="control-group"> 
        <div class="controls"> 
         <button type="submit" class="btn btn-large" name="invia" id="login" value="Accedi"> 
         Sign in! 
         </button> 
         <br><br> 
         <a href='register.php'>Sign Up Now!</a> <br><br> 
         <a href='forgotpass.php'>Forgot Your Password?</a> 
        </div> 
        </div> 
       </form> 
       </div> 

     <?php } else { 
       $username = mysql_real_escape_string($_POST['username']); 
       $password = mysql_real_escape_string($_POST['password']); 

       if($username == "" || $password == ""){ 
        echo "<div class='alert alert-error'> 
              <strong>Sorry!</strong> Complete all fields! 
             </div>"; 
        header("Refresh: 2; URL= login.php?azione=login"); 

       } else { 
         $password_cript = md5($password); 
        $recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'"); 
        $verificadati = mysql_num_rows($recuperadati); 

        if($verificadati == 1){ 
         $sessione = mysql_fetch_array($recuperadati); 
         $_SESSION['utente'] = $sessione['username']; 
         $_SESSION['id_user_logged'] = $sessione['id']; 
         echo "<div class='alert alert-success'> 
                  You are now logged in! 
                 </div>"; 
           header("Refresh: 2; URL= profile.php?username=".$_SESSION['utente'].""); 

        } else { 
         echo "<div class='alert alert-error'> 
                 <strong>Sorry!</strong> Username or Password not found! 
          <a href='login.php?azione=login'>Try again</a> or <a href='register.php'>Sign Up now</a> 
                 </div>"; 
        } 

       } 

      } 
      // login.php?azione=logout 
      } elseif ($p == "logout"){ 

       session_destroy(); 
       echo "<div class='alert alert-success'> 
            Logout! 
           </div>"; 
       header("Refresh: 2; URL= index.php"); 
      } 
     ?> 

刚刚添加的login.php的完整的代码,也许它可能是最有助于

+0

如果它不重定向,它有什么作用?你是否收到任何错误信息或任何信息来表明问题的实际内容? – 2013-03-06 22:20:52

+0

与任何涉及头文件一样,在头文件调用之前可能会执行一些输出,从而导致头文件调用失败。你可以在标题调用之前检查'headers_sent()'来查看是否是这种情况。如果他们一直在,那么你需要追踪它发生的地方。 – 2013-03-06 22:21:09

+0

似乎很奇怪,您正试图显示一条消息,指出“您未登录”,但同时您尝试将用户重定向到另一个页面? – 2013-03-06 22:22:16

用头功能,除非你有你的本地服务器上启用输出缓冲不应该工作之前呼应输出。它可能在生产服务器上被关闭。

试试这个:

if($verificadati == 1){ 
          $sessione = mysql_fetch_array($recuperadati); 
          $_SESSION['utente'] = $sessione['username']; 
          $_SESSION['id_user_logged'] = $sessione['id']; 
header("Refresh: 2; URL= profile.php?username=".$_SESSION['utente'].""); 
          echo "<div class='alert alert-success'> 
                   You are now logged in! 
                  </div>"; 


         } else { 
          echo "<div class='alert alert-error'> 
                  <strong>Sorry!</strong> Username or Password not found! 
           <a href='login.php?azione=login'>Try again</a> or <a href='register.php'>Sign Up now</a> 
                  </div>"; 
         } 

正如你看到的,你应该移动

echo "<div class='alert alert-success'>You are now logged in!</div>"; 

到您的着陆页。

+0

抱歉,但不工作 – 2013-03-06 22:31:36