2016-04-16 10 views
0

Ich habe ein Problem mit dem Header-Standort umleiten mich auf eine leere Seite ohne mich den Code sehen und der Browser meldet keinen Fehler. Ich arbeite vor Ort mit examppphp header location Redirect leere Seite

class UserController 
{ 
    public $username = ''; 
    private $logged = false; 
    private $usermodel = ''; 

    public function __construct() 
    { session_start(); 
     $this->usermodel = new UserModel(); 



     if ($_SERVER['REQUEST_METHOD']=='POST' && isset($_GET['action'])&& $_GET['action']== 'login'){ 
      $username = (isset($_POST['username']))? $_POST['username'] :false ; 
      $password = (isset($_POST['password']))? $_POST['password'] :false ; 

      if ($username !=false && $password !=false && $this->usermodel->checkLogin($username, $password)){ 

       $this->username =$username ; 
       $this->logged = true ; 

       $_SESSION['username']= $username ; 
       $_SESSION['logged']= true ; 
       $_SESSION[ 'message' ] = 'Login effettuato correttamente'; 
      }else{ 
       $_SESSION[ 'message' ] = 'Errore con il login; riprovare!'; 
      } 
     } 
     elseif (isset($_GET['action'])&& $_GET['action']== 'logout'){ 
      unset($_SESSION['username']); 
      unset($_SESSION['logged']); 
      $_SESSION[ 'message' ] = 'Logout effettuato correttamente'; 
     } 
     elseif (isset($_SESSION['username'])&& isset($_SESSION['logged'])){ 

      $this->username = $_SESSION['username'] ; 
      $this->logged = true ; 
     } 
     elseif(($_SERVER['REQUEST_METHOD']=='POST' && isset($_GET['action'])&& $_GET['action']== 'registra')){ 

      $username = (isset($_POST['username']))? $_POST['username'] :false ; 
      $password = (isset($_POST['password']))? $_POST['password'] :false ; 
      $repassword = (isset($_POST['repassword']))? $_POST['repassword'] :false ; 
      $nome_reale = (isset($_POST['nome_reale']))? $_POST['nome_reale'] :false ; 
      $email = (isset($_POST['email']))? $_POST['email'] :false ; 



      if ($username !=false && $password !=false && $repassword !=false && $nome_reale && $email !=false 
       && $this->usermodel->Registration($username,$password,$repassword,$nome_reale,$email)) 
      { 
       $this->username =$username ; 
       $this->logged = true ; 


       $_SESSION['username']= $username ; 
       $_SESSION['logged']= true ; 
       $_SESSION[ 'message' ] = "registrazione effettuato correttamente benvenuto $username"; 
      } 
     } 
     $this->redirectToProperArea(); 
    } 

    public function logged(){ 
     return $this->logged ; 
    } 
    public function redirectToProperArea(){ 

     $script_file = basename($_SERVER[ 'SCRIPT_NAME' ]); 

     if ($this->logged() && $script_file == 'login.php') { 

      ob_end_clean(); 
      header('Location: ../index.php'); 
      exit; 
     } 
     elseif (!$this->Logged() && ($script_file == 'index.php' && isset($_GET[ 'action' ]) && $_GET[ 'action' ] != 'index' && $_GET[ 'action' ] != 'detail' && $_GET[ 'action' ] != 'logout')) { 

      ob_end_clean(); 
      header('Location: ../login.php'); 
      exit; 
     } 
     elseif ($this->logged() && $script_file == 'registra.php') { 

      ob_end_clean(); 
      header('Location: views/benvenuto.php'); 
      exit; 
     } 
    } 
} 
+0

Auf welchen Header beziehen Sie sich? – Tom

+0

Header, die nicht funktionieren sind: header ('Location: ../index.php'); und Kopfzeile ('Ort: views/benvenuto.php'); –

Antwort

0

I Gelöst der Funktion mit `if (! Headers_sent()) {

  header('Location:views/benvenuto.php'); 
      exit; 
     } ` 

Jetzt habe ich ein anderes Problem in benvenuto.php Seite habe ich habe einen include (' message.php '); das ist immer im Blick Verzeichnis, das das gleiche ist wie benvenuto.php finde ich mich immer bei mir nicht der leere Seite Dank enthält für Ihre Hilfe nicht geladen

0

Haben Sie versucht, zu ersetzen:

header('Location:...'); 

zu

echo '<script>document.location="..."</script>';