Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
3951
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Funjoy
    Funjoy Funjoy ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Berlin
    Beiträge
    118
    Hallo,

    Ich habe derzeit folgendes Problem ich mache gerade ne Login Datei und ich will falls der user schon eigeloggt ist den zur Index weiterleiten ich habe das so gemacht

    PHP-Code:
    <?php

    #--> Location Wechseln
    ob_start();
    header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/index.php$Session2");
    $OUT ob_get_contents();
    ob_clean();

    if(
    $LOG == TRUE)
      {
        
    $OUT;
        die(); 
    }
    ?>
    so klappt es schonmal nicht
    Der leitet mich immer weiter obwohl $LOG auf FALSE ist!

    Was mach ich Falsch?

    MfG Funjoy
     
    Ich bin ein KLEINER Webmaster werde aber immer GRÖßER

  2. #2
    Registriert seit
    Jun 2004
    Ort
    Stuttgart (BW)
    Beiträge
    1.746
    Gib ihm doch mal ein else dazu.
    Ich hatte mal so ein ähnliches Problem, welches ich durch ein else gelöst habe.
    Also z.B.:
    PHP-Code:
    if($LOG == TRUE
      { 
        
    $OUT
        die(); 
    }
    else
    {

    redlama
     
    Wissen ist Macht! Nichts wissen macht auch nichts, ...
    www.redlama.org

  3. #3
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    Das else ist ja leer das bringt dann aj nichts da es eh optional ist.

    Nur wo stellst du den Fest ober er eingeloggt ist?
    Wenn $LOG = TRUE?

    Sonst hätte ich es einfach so gelöst:
    PHP-Code:
    if( $LOG )
        
    header(...);
    else
        
    //whatever 
     

  4. #4
    Avatar von Funjoy
    Funjoy Funjoy ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Berlin
    Beiträge
    118
    $LOG wird über eine Includierte globale Datei definiert ob FALSE oder TRUE. Das Problem ist das ich die Header funktion mehrmals benutzen möchte deswegen auch ob_start()

    Ps: Und $LOG ist zu 100% FALSE da diese Globale datei Leer ist

    MfG Funjoy
     
    Ich bin ein KLEINER Webmaster werde aber immer GRÖßER

  5. #5
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    Mehrmals? Hintereinander oder wie?
    Dann würde mehr code helfen das ganze zu überblicken
     

  6. #6
    Avatar von Funjoy
    Funjoy Funjoy ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Berlin
    Beiträge
    118
    Mit Mehrmals hintereinander meine ich ganz genau 2mal

    Einmal zum Überprüfen ob der User eingeloggt ist und das andere mal wenn sich der user erfolgreich eingeloggt hat soll er zur Index weitergeleitet werden.

    MfG Funjoy
     
    Ich bin ein KLEINER Webmaster werde aber immer GRÖßER

  7. #7
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    Versteh ich nicht. Wozu willst du denn weiterleiten um zu überprüfen ob der User eingeloggt ist? Weil dann leitest du ja auf eine andere Seite weiter usw...
     

  8. #8
    Avatar von Funjoy
    Funjoy Funjoy ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Berlin
    Beiträge
    118
    Hmm Wie soll ich dir das jetzt erklären also nochma

    die Datei heist access.php über diese Datei kann man sich einloggen! Wenn jedoch ein User schon eigeloggt ist macht es ja kein Sinn das Login Formular anzuzeigen richtig? deswegen wird er dann auch zur Index.php weitergeleitet! Dafür brauch ich zum ersten mal die Header funktion!

    beim zweiten mal ist die Header funktion für die Leute die nicht eingeloggt sind die bekommen dann logischerweise das Login Formular zu sehen die Geben darinn dann halt ihr benutzernamen und Ihr Passwort ein! wenn alles richtig ist wird ebenfalls zur Index seite weitergeleitet.

    Hoffe das war verständlicher

    MfG Funjoy
     
    Ich bin ein KLEINER Webmaster werde aber immer GRÖßER

  9. #9
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    Ja eben...

    also sie kommen zu access.php und von dort entweder zum formular oder weiter
    also so


    -> Formular
    |
    |
    -> Access.php
    |
    |
    wonanders


    Also muss im acces.php schematisch doch nur passieren:

    PHP-Code:

    if( $eingeloggt )
        
    header('Location: woandershin.php');
    else
        
    header('Location: zumformuklar.php');
    exit; 
    ansonsten klinke ich mich an dieser stelle aus
     

  10. #10
    Avatar von Funjoy
    Funjoy Funjoy ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Berlin
    Beiträge
    118
    Die access.php Datei ist das Formular deswegen

    Die 2te Weiterleitung erfolgt nur wenn sich ein User erfolgreich eingeloggt hat deswegen auch ob_start(); weill ich ja wegen das Formular zwischdurch mal echo benutze bevor die 2te Weiterleitung stafindet

    MfG Funjoy
     
    Ich bin ein KLEINER Webmaster werde aber immer GRÖßER

  11. #11
    Avatar von Funjoy
    Funjoy Funjoy ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Berlin
    Beiträge
    118
    So habe es nun ohne ob_start() gemacht nachdem mir eingefallen ist das eh nix vorher wie echo oder print kommt

    Habe auch was Falsch verstanden mit ob_start()

    so schauts dann insgesammt aus wenns Interessiert!
    access.php
    PHP-Code:
    <?php
    #--> SESSID definieren und starten.
    session_name("SESSID");
    session_start();

    #--> Klassen Dateien Laden.
    include("../class/TPLManager.php");
    include(
    "../class/MySQL.php");

    #--> Konfigurationsdatei Laden.
    include("config.php");

    #--> Funktionsdatei Laden.
    include("function.php");

    #--> Globale Datei Laden.
    include("global.php");

    #--> Überprüfen ob User schon eigeloggt ist.
    if($LOG == TRUE)
      {
        
    header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/index.php$Session2");
        die(); 
    }

    #--> Userdaten Überprüfen auf Rechte und Richtigkeit.
    if(isset($_POST['login']) && !empty($_POST['adminname']) && !empty($_POST['adminpassword']))
      {
        
    $admin $DB->dbActionQuery("SELECT userid,username,password,permission FROM ".$Config_MySQLPrefix."members WHERE username='".strtolower($_POST['adminname'])."' AND password='".MD5(strtolower($_POST['adminpassword']))."'");
        if(!empty(
    $admin)) $Permission $DB->dbActionQuery("SELECT pid,view_acp FROM ".$Config_MySQLPrefix."permission WHERE pid=$admin[permission]");  
    }

    #--> Textfelder auf Inhalt und Gültigkeit überprüfen.
    if(isset($_POST['adminname']) && empty($_POST['adminname']))
      {
        
    $ErrorMessage "Du hast kein Benutzernamen eingegeben.";
        
    $MatchError TRUE;  
    }
    elseif(isset(
    $_POST['adminpassword']) && empty($_POST['adminpassword']))
      {
        
    $ErrorMessage "Du hast kein Password eingegeben.";  
        
    $MatchError TRUE;
    }
    elseif(isset(
    $_POST['login']) && empty($admin))
      {
        
    $ErrorMessage "Dein Benutzername oder dein Passwort ist nicht G&uuml;ltig.";
        
    $MatchError TRUE;  
    }
    elseif(isset(
    $_POST['login']) && $Permission['view_acp'] != TRUE)
      {
        
    $ErrorMessage "Du hast nicht die erfoderlichen Rechte um diesen Bereich betreten zu k&ouml;nnen."
        
    $MatchError TRUE;  
    }

    if(!isset(
    $_POST['login']) || $MatchError == TRUE)
      {
        
    /////// Anmelde Formular ausgeben ///////
        
    $TPL = new TPL_Manager();
        
    $TPL->TemplatesPath "templates/";
        
    $TplFile['_ACCESS_'] = "access.htm";
        
    $TPL->DefineTPL($TplFile);
          
    $TPL->keyword('POST_ADMINNAME',$_POST['adminname']);
          
    $TPL->keyword('MATCH_ERROR',"<br>$ErrorMessage<br>");
        
    $TPL->ParseTPL("_ACCESS_");
        
    $TPL->OutPut();
    }

    #--> Wenn alle Daten Ok sind Session Id mit allen Informationen in der DB speichern.
    if(isset($_POST['login']) && $MatchError != TRUE)
      {
        
    $DB->dbActionQuery("INSERT INTO ".$Config_MySQLPrefix."adminsession (sessionid,userid,ipadress,useragent,starttime,lastactivity) VALUES ('".session_id()."','$admin[userid]','$_SERVER[REMOTE_ADDR]','$_SERVER[HTTP_USER_AGENT]','".time()."','".time()."')");
        
    header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/index.php$session2");
        die();
    }
    ?>
    @Ben Ben vielleicht verstehst du ja jetzt was ich meine

    MfG Funjoy
     
    Ich bin ein KLEINER Webmaster werde aber immer GRÖßER

  12. #12
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    Jo, ist mir so klar und so hatte ich es auch gemeint, die beiden header() stören sich ja nciht, da ja kein Output erfolgt...
     

  13. #13
    Lukasz Tutorials.de Gastzugang
    Hallo

    ich löse dir dein Script nicht aber was dir helfen Sollte
    OB_START() hebt sich alle ausgaben auf, so lange bis
    OB_END_FLUSH() kommt! oder der Script abgearbeitet ist.
    Dabei werden alle Ausgaben in ein Buffer geladen. Möchtest du also ein Cookie setzten unerwtrtet in einem Script so bringt dir dies den Vorteil den Cookie zu setzten und wegzuheadern, ohne dass ein echo stören kann. Vergiss aber nie falls du dein echo ausgeben möchtest OB_END _FLUSH anzugeben, denn sonst kannst du schnell an Probleme stossen. Unter Windows kannst du dir die Funktion fast sparen aber Linux sieht das nicht gerne, sobald OB_END_FLUSH() nicht gestzt wird!

    Bedenke setzt du OB_END_FLUSH nicht und hederst einen Download so wir der nie übertragen, obwohl er gestartet wird!

    Mein Tipp:

    Anfang als aller erstes OB_START() setzten

    Das letzte im Script ist dann OB_END_FLUSH()

    ... dazwischen Cookie Header oder EXIT;
    PHP-Code:
    if($LOG == TRUE
      { 
        
    $OUT
        EXIT;
    }  else { echo 
    "bal";}

    OB_END_FLUSH(); 

    BZW
    PHP-Code:
    if($LOG == TRUE
      { 
        
    $OUT
        EXIT; 
    }  else { 
    header(); Exit;} 

    OB_END_FLUSH(); 
    Wobei das OB_END_FLUSH irgendwann am ende auftauchen kann!
    Geändert von Lukasz (12.11.04 um 17:17 Uhr)
     

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 02.11.09, 20:41
  2. Fehlermeldung bei ob_start()?
    Von jackie05 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 08.07.08, 23:53
  3. Antworten: 6
    Letzter Beitrag: 25.04.08, 16:47
  4. Header geht nicht trotz ob_start
    Von Pullmann im Forum PHP
    Antworten: 0
    Letzter Beitrag: 24.01.07, 17:31
  5. header, ob_start und ob_end_flush
    Von Eaden im Forum PHP
    Antworten: 6
    Letzter Beitrag: 19.04.05, 15:16