kostenloser Webspace werbefrei: lima-city


Login (Mit Weiterleitung)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    skateen

    skateen hat kostenlosen Webspace.

    Hey, ich habe ein Problem.
    Ich habe zu ersten mal ein PHP Script selber geschrieben.
    s.php
    <?php 
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") 
       { 
       echo "Herzlich Willkommen im internen Bereich"; // erst Ausgabe 
       header('Location: index.html');  
       } 
    else 
       { 
       echo "Das Passwort ist leider falsch"; 
       } 
    ?>

    Login.php
    <title>Geschützter Bereich</title>
     </head>
     <body>
      <form action="s.php" method="post">
       
       Passwort: <input type="password" name="passwort" /><br />
       <input type="submit" value="Anmelden" />

    Seite: bigbossmonster.tk/login.php
    Das Login geht, aber die Weiterleitung geht nicht.
    Kann mir jemand helfen.

    Gruß LeyUp

    Ps. Ich brauche da auch etwas Hilfe: [code]http://www.lima-city.de/thread/upload-ftp
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. bvb-fanclub-nr1-in-sundern

    Kostenloser Webspace von bvb-fanclub-nr1-in-sundern

    bvb-fanclub-nr1-in-sundern hat kostenlosen Webspace.

    Hallo,
    die Weiterleitung kann nicht funktionieren, da Du bereits zuvor Daten ausgegeben hast (echo"..."). Dieses produziert einen Fehler, welcher Dir mit den Standardeinstellungen aber nicht angezeigt wird. Siehe auch hier ...

    Besser ist es auch, Dein Script nach header() mit exit; abzubrechen, um sicherzugehen, dass danach kein Code mehr ausgeführt wird.

    if($passwort=="geheim") 
       { 
       header('Location: index.html');  
       exit;
       } 
    else
       { 
       echo "Das Passwort ist leider falsch"; 
       } 
    ?>


    Beitrag zuletzt geändert: 10.6.2013 23:35:16 von bvb-fanclub-nr1-in-sundern
  4. Guten Abend,

    das Problem hierbei ist, dass du einen Headereintrag nach einer Ausgabe sendest. Das geht nicht. Der Header wird abgeschlossen sobald die ersten Daten gesendet werden.

    Das gleiche Problem hatten wir heute hier:
    http://www.lima-city.de/thread/php-header

    Du hast drei Möglichkeiten:

    Möglichkeit 1:
    Bevor du etwas ausgibst (echo, HTML-Part, oder ähnliches) sendest du den Header (
    header('Location: index.html');
    )

    Möglichkeit 2:
    Deine Ausgabe zu buffern.
    Schau mal hier:
    http://www.php.net/manual/de/function.ob-start.php

    Hier als kurzes Beispiel (ungetestet, kann auch anders sein):
    // Ganz zu Anfang
    ob_start();
     
    // .. Design
    // .. Seiteninhalt
    // .. Design
     
    // Ganz am Ende
    ob_end_flush();


    Möglichkeit 3:
    Eine alternative Weiterleitung, wie zum Beispiel mit JavaScript

    Beitrag zuletzt geändert: 10.6.2013 23:35:55 von fabi755
  5. Autor dieses Themas

    skateen

    skateen hat kostenlosen Webspace.

    fabi755 schrieb:
    Guten Abend,

    das Problem hierbei ist, dass du einen Headereintrag nach einer Ausgabe sendest. Das geht nicht. Der Header wird abgeschlossen sobald die ersten Daten gesendet werden.

    Das gleiche Problem hatten wir heute hier:
    http://www.lima-city.de/thread/php-header

    Du hast drei Möglichkeiten:

    Möglichkeit 1:
    Bevor du etwas ausgibst (echo, HTML-Part, oder ähnliches) sendest du den Header (
    header('Location: index.html');
    )

    Möglichkeit 2:
    Deine Ausgabe zu buffern.
    Schau mal hier:
    http://www.php.net/manual/de/function.ob-start.php

    Hier als kurzes Beispiel (ungetestet, kann auch anders sein):
    // Ganz zu Anfang
    ob_start();
     
    // .. Design
    // .. Seiteninhalt
    // .. Design
     
    // Ganz am Ende
    ob_end_flush();


    Möglichkeit 3:
    Eine alternative Weiterleitung, wie zum Beispiel mit JavaScript


    Oh, ich hab alle 3 Möglichkeiten ausprobiert, aber irgendwie ging keins von denen.
    Weder Java als auch die anderen.
    <?php 
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") 
       { 
       echo "Herzlich Willkommen im internen Bereich"; // erst Ausgabe 
       setTimeout("self.location.href='index.html'",2000);
       } 
    else 
       { 
       echo "Das Passwort ist leider falsch"; 
       } 
    ?>

    Gruß LeyUp

  6. Oh, ich hab alle 3 Möglichkeiten ausprobiert, aber irgendwie ging keins von denen.


    Möglichkeit 1:
    // Hier darf [u]nichts[/u] ausgegeben werden (HTML -> außerhlab von <?php ?> oder per echo)
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") {
    
        header('Location: index.html');  // Header [u]vor[/u] Ausgabe
    
        // Wird meist nicht lesbarsein (außer: Weiterleitung wird nicht vom Browser vorgenommen)
        echo "Herzlich Willkommen im internen Bereich"; // [u]erst dann[/u] Ausgabe 
    
    } else {
        
        echo "Das Passwort ist leider falsch"; 
    
    }


    Möglichkeit 2:
    // [u]Anfag[/u] der ersten Datei
    ob_start(); // Ausgabe Buffern
    
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") {
    
        // Reihenfolge von "Header"-Parts und Ausgaben unwichtig
        // Wird meist nicht lesbarsein (außer: Weiterleitung wird nicht vom Browser vorgenommen)
        echo "Herzlich Willkommen im internen Bereich"; // [u]erst dann[/u] Ausgabe 
    
        header('Location: index.html');  // Header [u]vor[/u] Ausgabe
    
    
    
    } else {
        
        echo "Das Passwort ist leider falsch"; 
    
    }
    // [u]Ende[/u] der letzten Datei
    ob_end_flush(); // Buffern der Ausgabe beenden und Ausgaben ausgeben


    Möglichkeit 3:
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") { 
        
        echo "Herzlich Willkommen im internen Bereich"; // erst Ausgabe 
        
        ?> <!-- PHP-Part schließen -->
        
        <!-- JavaScript-Part öffnen -->
        <!-- Bei ausgeschaltetem JavaScript wird dieser Bereich ignoriert!!!! -->
        <script type="text/javascript">
    
            setTimeout(function() { // Anonyme Funktion aufrufen
                
                self.location.href = 'index.html'; // Weiterleitung definieren
            
            }, 2000);
    
        </script>
        <!-- JavaScript-Part schließen -->
    
        <!-- PHP-Part öffnen -->
        <?php
    
    } else { 
    
        echo "Das Passwort ist leider falsch"; 
    
    } 
    ?>


    Wenn du Fragen hast, dann frag (kannst auch über eine private Nachricht fragen). Denn nur kopieren hilft dir nicht, dass zu verstehen, es ist wichtig, dass du weißt was du da tust bzw. was der Code bedeutet.

    Es gibt überings einen unterschied zwischen Java und JavaScript :wink:


    Beitrag zuletzt geändert: 11.6.2013 16:12:28 von fabi755
  7. Autor dieses Themas

    skateen

    skateen hat kostenlosen Webspace.

    fabi755 schrieb:

    Oh, ich hab alle 3 Möglichkeiten ausprobiert, aber irgendwie ging keins von denen.


    Möglichkeit 1:
    // Hier darf [u]nichts[/u] ausgegeben werden (HTML -> außerhlab von <?php ?> oder per echo)
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") {
    
        header('Location: index.html');  // Header [u]vor[/u] Ausgabe
    
        // Wird meist nicht lesbarsein (außer: Weiterleitung wird nicht vom Browser vorgenommen)
        echo "Herzlich Willkommen im internen Bereich"; // [u]erst dann[/u] Ausgabe 
    
    } else {
        
        echo "Das Passwort ist leider falsch"; 
    
    }


    Möglichkeit 2:
    // [u]Anfag[/u] der ersten Datei
    ob_start(); // Ausgabe Buffern
    
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") {
    
        // Reihenfolge von "Header"-Parts und Ausgaben unwichtig
        // Wird meist nicht lesbarsein (außer: Weiterleitung wird nicht vom Browser vorgenommen)
        echo "Herzlich Willkommen im internen Bereich"; // [u]erst dann[/u] Ausgabe 
    
        header('Location: index.html');  // Header [u]vor[/u] Ausgabe
    
    
    
    } else {
        
        echo "Das Passwort ist leider falsch"; 
    
    }
    // [u]Ende[/u] der letzten Datei
    ob_end_flush(); // Buffern der Ausgabe beenden und Ausgaben ausgeben


    Möglichkeit 3:
    $passwort = $_POST["passwort"]; 
    
    if($passwort=="geheim") { 
        
        echo "Herzlich Willkommen im internen Bereich"; // erst Ausgabe 
        
        ?> <!-- PHP-Part schließen -->
        
        <!-- JavaScript-Part öffnen -->
        <!-- Bei ausgeschaltetem JavaScript wird dieser Bereich ignoriert!!!! -->
        <script type="text/javascript">
    
            setTimeout(function() { // Anonyme Funktion aufrufen
                
                self.location.href = 'index.html'; // Weiterleitung definieren
            
            }, 2000);
    
        </script>
        <!-- JavaScript-Part schließen -->
    
        <!-- PHP-Part öffnen -->
        <?php
    
    } else { 
    
        echo "Das Passwort ist leider falsch"; 
    
    } 
    ?>


    Wenn du Fragen hast, dann frag (kannst auch über eine private Nachricht fragen). Denn nur kopieren hilft dir nicht, dass zu verstehen, es ist wichtig, dass du weißt was du da tust bzw. was der Code bedeutet.

    Es gibt überings einen unterschied zwischen Java und JavaScript :wink:

    Ok, danke. Es geht.
    Was muss ich, aber machen, wenn ich ein mehre Passwörter machen will?
    Gruß LeyUp
  8. entweder die Daten (Username und Passwort) in Datenbank oder Datei speichern
    und bei Login die Kombination aus Username und Passwort auf Korrektheit prüfen

    ich empfehle zwar Datenbank (MySQL) ... aber hier mal Beispiel mit Datei

    Datei 1: login.php

    <?php 
    // ------------------------------------------ 
    
    $data_file = 'login_data.txt'; 
    
    chmod($data_file,0100); 
    
    if (!empty($_POST['user']) && !empty($_POST['upwd'])) { 
    
    $log_user = trim($_POST['user']); 
    $log_pass = trim($_POST['upwd']); 
    // ---- hier evtl. noch weitere Filter z.B. nur bestimmte Zeiichen zulassen ----
    
    
    session_start();
    $_SESSION['ok_user'] = false; 
    
    chmod($data_file,0666); 
    
    $handle = fopen('login_data.txt', 'r'); 
    
    while (($data = fgetcsv($handle, 1024, ';', '"')) !== FALSE) { 
    
    // ---- wenn login korrekt dann Session-Variable aanlegen und Weiterleitung ---- 
    	if ($data[0] == $log_user && $data[1] == $log_pass) { 
    		$_SESSION['ok_user'] = $log_user; 
    		header('Location: ok.php');
    		exit; 
    	}
    }
    
    fclose($handle);
    
    }
    
    chmod($data_file,0100); 
    
    
    if (isset($_SESSION['ok_user'])) { 
    $msg = "<p>Fehler .... Login Eingabe war nicht richtig.</p>\n"; 
    session_unset(); 
    session_destroy(); 
    }
    else { 
    $msg = "<p>Zum Login bitte Username und Passwort eingeben.</p>\n"; 
    }
    
    
    
    
    // ------------------------------------------ 
    ?>
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#FFFFFF" text="#000000">
    
    <br>
    <br>
    <?php print $msg; ?>
    <br>
    
    <form name="form1" method="post" action="">
    	Username: <input type="text" name="user" size="30" maxlength="100">
    	<br />
    	Password: <input type="text" name="upwd" size="30" maxlength="100">
      <br>
      OK ......... 
      <input type="submit" name="go" value="LOGIN">
    </form>
    
    <br>
    <br>
    <br>
    
    </body>
    </html>




    Datei 2: login_data.txt

    "hansi";"geheim"
    "tina";"gAnZ gEH3iM"
    "oscar";"StR3nG%gEh31M"



    Datei 2: ok.php

    <?php
    // --------------------------------------------------------- 
    
    session_start(); 
    
    if (!empty($_REQUEST['action'])) { 
    $go_action = trim($_REQUEST['action']); 
    }
    else { 
    $go_action = 'start'; 
    }
    
    if ($go_action == 'logout') { 
    session_unset(); 
    session_destroy(); 
    }
    
    // --------------------------------------------------------- 
    ?>
    <html>
    <head>
    <title>OK</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    <br>
    
    <?php
    // --------------------------------------------------------- 
    
    if (isset($_SESSION['ok_user']) && !empty($_SESSION['ok_user'])) { 
    
    print "<p>OK ... erfolgreich eingeloggt als User <strong>".$_SESSION['ok_user']."</strong></p>\n"; 
    
    // ----------- folgender Teil nur zum Test ... DEBUG --------- 
    print "<br>\n"; 
    print "<br>... DEBUG ...\n"; 
    print "<pre style=\"text-align:left; background:#DEDEDE;\">\n"; 
    print_r($_SESSION); 
    print "</pre>\n"; 
    print "<br>\n"; 
    // ----------------------------------- 
    
    print "<p>Aktuelle Aktion: .... <strong style=\"font-size:30px;\">".$go_action."</strong></p>\n"; 
    
    // ---- je nach Aktion hier entsprechende Ausgabe / include / etc... 
    
    print "<p>Irgendwas machen .... <a href=\"ok.php?action=machen\" style=\"color:blue;\">Mach was</a></p>\n"; 
    
    print "<p>Session beenden .... <a href=\"ok.php?action=logout\" style=\"color:red;\">User Logout</a></p>\n"; 
    
    }
    else { 
    
    print "<p>Bitte zuerst einloggen .... weiter zum <a href=\"login.php?logout=\">Login Formular</a></p>\n"; 
    
    }
    // --------------------------------------------------------- 
    ?>
    <br>
    <br>
    <br>
    
    </body>
    </html>


    Prinzip ist, ... wenn Login-Daten = richtig, dann Session-Variable (in login.php) anlegen
    auf diese kann man dann in der weiter-geleiteten Datei (hier ok.php) wieder zugreifen
    solange die Session läuft, so muss man nicht bei jedem Aufruf Parameter übergeben


    PS: das ist nur ein einfaches Beispiel, da kann man noch einiges verbessern,
    besonders die User-Formular-Eingabe nicht un-gefiltert durchgehen lassen,
    sondern nur bestimmte Zeichen zulassen oder andere String-Filter anwenden

    oder auch nicht nur User-Name in Session übergeben, sondern dazu auch noch
    einen geheimen (dynamisch erstellten) Code, damit Login noch sicherer wird.

    mit Datenbank (MySQL) geht das ähnlich,
    da muss man halt einfach die Daten anders "abholen" zur Prüfung gegen User-Eingabe






    Beitrag zuletzt geändert: 11.6.2013 17:41:21 von katalogbox
  9. Autor dieses Themas

    skateen

    skateen hat kostenlosen Webspace.

    katalogbox schrieb:
    entweder die Daten (Username und Passwort) in Datenbank oder Datei speichern
    und bei Login die Kombination aus Username und Passwort auf Korrektheit prüfen

    ich empfehle zwar Datenbank (MySQL) ... aber hier mal Beispiel mit Datei

    Datei 1: login.php

    <?php 
    // ------------------------------------------ 
    
    $data_file = 'login_data.txt'; 
    
    chmod($data_file,0100); 
    
    if (!empty($_POST['user']) && !empty($_POST['upwd'])) { 
    
    $log_user = trim($_POST['user']); 
    $log_pass = trim($_POST['upwd']); 
    // ---- hier evtl. noch weitere Filter z.B. nur bestimmte Zeiichen zulassen ----
    
    
    session_start();
    $_SESSION['ok_user'] = false; 
    
    chmod($data_file,0666); 
    
    $handle = fopen('login_data.txt', 'r'); 
    
    while (($data = fgetcsv($handle, 1024, ';', '"')) !== FALSE) { 
    
    // ---- wenn login korrekt dann Session-Variable aanlegen und Weiterleitung ---- 
    	if ($data[0] == $log_user && $data[1] == $log_pass) { 
    		$_SESSION['ok_user'] = $log_user; 
    		header('Location: ok.php');
    		exit; 
    	}
    }
    
    fclose($handle);
    
    }
    
    chmod($data_file,0100); 
    
    
    if (isset($_SESSION['ok_user'])) { 
    $msg = "<p>Fehler .... Login Eingabe war nicht richtig.</p>\n"; 
    session_unset(); 
    session_destroy(); 
    }
    else { 
    $msg = "<p>Zum Login bitte Username und Passwort eingeben.</p>\n"; 
    }
    
    
    
    
    // ------------------------------------------ 
    ?>
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#FFFFFF" text="#000000">
    
    <br>
    <br>
    <?php print $msg; ?>
    <br>
    
    <form name="form1" method="post" action="">
    	Username: <input type="text" name="user" size="30" maxlength="100">
    	<br />
    	Password: <input type="text" name="upwd" size="30" maxlength="100">
      <br>
      OK ......... 
      <input type="submit" name="go" value="LOGIN">
    </form>
    
    <br>
    <br>
    <br>
    
    </body>
    </html>




    Datei 2: login_data.txt

    "hansi";"geheim"
    "tina";"gAnZ gEH3iM"
    "oscar";"StR3nG%gEh31M"



    Datei 2: ok.php

    <?php
    // --------------------------------------------------------- 
    
    session_start(); 
    
    if (!empty($_REQUEST['action'])) { 
    $go_action = trim($_REQUEST['action']); 
    }
    else { 
    $go_action = 'start'; 
    }
    
    if ($go_action == 'logout') { 
    session_unset(); 
    session_destroy(); 
    }
    
    // --------------------------------------------------------- 
    ?>
    <html>
    <head>
    <title>OK</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    <br>
    
    <?php
    // --------------------------------------------------------- 
    
    if (isset($_SESSION['ok_user']) && !empty($_SESSION['ok_user'])) { 
    
    print "<p>OK ... erfolgreich eingeloggt als User <strong>".$_SESSION['ok_user']."</strong></p>\n"; 
    
    // ----------- folgender Teil nur zum Test ... DEBUG --------- 
    print "<br>\n"; 
    print "<br>... DEBUG ...\n"; 
    print "<pre style=\"text-align:left; background:#DEDEDE;\">\n"; 
    print_r($_SESSION); 
    print "</pre>\n"; 
    print "<br>\n"; 
    // ----------------------------------- 
    
    print "<p>Aktuelle Aktion: .... <strong style=\"font-size:30px;\">".$go_action."</strong></p>\n"; 
    
    // ---- je nach Aktion hier entsprechende Ausgabe / include / etc... 
    
    print "<p>Irgendwas machen .... <a href=\"ok.php?action=machen\" style=\"color:blue;\">Mach was</a></p>\n"; 
    
    print "<p>Session beenden .... <a href=\"ok.php?action=logout\" style=\"color:red;\">User Logout</a></p>\n"; 
    
    }
    else { 
    
    print "<p>Bitte zuerst einloggen .... weiter zum <a href=\"login.php?logout=\">Login Formular</a></p>\n"; 
    
    }
    // --------------------------------------------------------- 
    ?>
    <br>
    <br>
    <br>
    
    </body>
    </html>


    Prinzip ist, ... wenn Login-Daten = richtig, dann Session-Variable (in login.php) anlegen
    auf diese kann man dann in der weiter-geleiteten Datei (hier ok.php) wieder zugreifen
    solange die Session läuft, so muss man nicht bei jedem Aufruf Parameter übergeben


    PS: das ist nur ein einfaches Beispiel, da kann man noch einiges verbessern,
    besonders die User-Formular-Eingabe nicht un-gefiltert durchgehen lassen,
    sondern nur bestimmte Zeichen zulassen oder andere String-Filter anwenden

    oder auch nicht nur User-Name in Session übergeben, sondern dazu auch noch
    einen geheimen (dynamisch erstellten) Code, damit Login noch sicherer wird.

    mit Datenbank (MySQL) geht das ähnlich,
    da muss man halt einfach die Daten anders "abholen" zur Prüfung gegen User-Eingabe

    Oh, danke. ;)
    Kann man das auch so machen, dass man mehre Links einbinden kann? Also, wenn ich mich mit A einlogge, dass auf Seite A hingeleitet wird und wenn ich mit B einlogge, dass man auf Seite B hingeleitet wird?

    Gruß LeyUp
  10. ja klar,

    man könnte z.B. in der Datei login_data.txt als dritten Wert die Ziel-Seite nach Login eintragen

    "hansi";"geheim";"seite1.php"
    "tina";"gAnZ gEH3iM";"andere_seite.php"
    "oscar";"StR3nG%gEh31M";"nirvana.php"


    und dann in der login.php einfach auf diese Seite weiter leiten
    also $data[2] = der dritte Wert aus login_data.txt ... CSV

    chmod($data_file,0666);
     
    $handle = fopen('login_data.txt', 'r');
     
    while (($data = fgetcsv($handle, 1024, ';', '"')) !== FALSE) {
     
    // ---- wenn login korrekt dann Session-Variable aanlegen und Weiterleitung ----
        if ($data[0] == $log_user && $data[1] == $log_pass) {
            $_SESSION['ok_user'] = $log_user;
            chmod($data_file,0100); 
            header('Location: '.$data[2].'');
            exit;
        }
    }
     
    fclose($handle);
     
    }


    Wichtig ist auch
    das chmod($data_file,0100); noch vor dem header() Befehl zu machen,
    damit die Datei login_data.txt auch wieder vor Zugriff geschützt ist !!!
    das war in der ersten Version (oben) noch "falsch" ...


  11. Autor dieses Themas

    skateen

    skateen hat kostenlosen Webspace.

    katalogbox schrieb:
    ja klar,

    man könnte z.B. in der Datei login_data.txt als dritten Wert die Ziel-Seite nach Login eintragen

    "hansi";"geheim";"seite1.php"
    "tina";"gAnZ gEH3iM";"andere_seite.php"
    "oscar";"StR3nG%gEh31M";"nirvana.php"


    und dann in der login.php einfach auf diese Seite weiter leiten
    also $data[2] = der dritte Wert aus login_data.txt ... CSV

    chmod($data_file,0666);
     
    $handle = fopen('login_data.txt', 'r');
     
    while (($data = fgetcsv($handle, 1024, ';', '"')) !== FALSE) {
     
    // ---- wenn login korrekt dann Session-Variable aanlegen und Weiterleitung ----
        if ($data[0] == $log_user && $data[1] == $log_pass) {
            $_SESSION['ok_user'] = $log_user;
            chmod($data_file,0100); 
            header('Location: '.$data[2].'');
            exit;
        }
    }
     
    fclose($handle);
     
    }


    Wichtig ist auch
    das chmod($data_file,0100); noch vor dem header() Befehl zu machen,
    damit die Datei login_data.txt auch wieder vor Zugriff geschützt ist !!!
    das war in der ersten Version (oben) noch "falsch" ...




    Irgendwie geht das nicht so richtig, also die Weiterleitung geht nicht.
    <?php 
    
    
    // ------------------------------------------ 
     
    $data_file = 'login_data.txt'; 
     
    chmod($data_file,0100); 
     
    if (!empty($_POST['user']) && !empty($_POST['upwd'])) { 
     
    $log_user = trim($_POST['user']); 
    $log_pass = trim($_POST['upwd']); 
    // ---- hier evtl. noch weitere Filter z.B. nur bestimmte Zeiichen zulassen ----
     
     
    session_start();
    $_SESSION['ok_user'] = false; 
     
    chmod($data_file,0666);
      
    $handle = fopen('login_data.txt', 'r');
      
    while (($data = fgetcsv($handle, 1024, ';', '"')) !== FALSE) {
      
    // ---- wenn login korrekt dann Session-Variable aanlegen und Weiterleitung ----
        if ($data[0] == $log_user && $data[1] == $log_pass) {
            $_SESSION['ok_user'] = $log_user;
            chmod($data_file,0100); 
            header('Location: '.$data[2].'');
            exit;
        }
    }
      
    fclose($handle);
      
    }
     
    chmod($data_file,0100); 
     
     
    if (isset($_SESSION['ok_user'])) { 
    $msg = "<p>Fehler .... Login Eingabe war nicht richtig.</p>\n"; 
    session_unset(); 
    session_destroy(); 
    }
    else { 
    $msg = "<p>Zum Login bitte Username und Passwort eingeben.</p>\n"; 
    }
     
     
     
     
    // ------------------------------------------ 
    ?>
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body bgcolor="#FFFFFF" text="#000000">
     
    <br>
    <br>
    <?php print $msg; ?>
    <br>
     
    <form name="form1" method="post" action="">
        Username: <input type="text" name="user" size="30" maxlength="100">
        <br />
        Password: <input type="text" name="upwd" size="30" maxlength="100">
      <br>
      OK ......... 
      <input type="submit" name="go" value="LOGIN">
    </form>
     
    <br>
    <br>
    <br>
     
    </body>
    </html>
  12. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Hast du die Ausgabe von Fehlern aktiviert, so wie es hier beschrieben ist? Wenn ja: welchen Fehler bekommst du? Oder bekommst du gar keinen Fehler?
  13. skateen schrieb:

    Irgendwie geht das nicht so richtig, also die Weiterleitung geht nicht.


    also .... damit die Weiterleitung funktioniert,
    müssen die Dateien, die in der login_data.txt angegeben sind natürlich auch existieren ...

    .... hast Du bei Deinem Test
    die Dateien seite1.php und andere_seite.php und nirvana.php vorher erstellt ?!

    oder zu welchen "Seiten" Du auch immer weiter-leiten willst je User

    wenn die Seite, zu der weiter-geleitet werden soll, nicht existiert, dann kann's auch nicht gehen :xD

    Tipp:
    nimm einfach die ok.php und speichere diese als ok1.php, ok2.php und ok3.php
    und trage in die login_data.txt diese Seiten als Weiterleitungs-Ziel ein

    .... und nimm zum Testen evtl. auch einfachere Passwörter :)

    Datei: login_data.txt
    "hansi";"geheim";"ok1.php"
    "tina";"doof";"ok2.php"
    "oscar";"honigbiene";"ok3.php"


    evtl kannst Du jeweils noch den <title> ändern und eine <h1> Überschrift einfügen,
    damit man gleich sieht, zu welchr Seite um-geleitet wurde


    Ausschnitt der Datei: ok1.php
    ... und bei ok2.php und ok3.php entsprechend mit "Seite 2" / "Seite 3" angepasst
    ... 
    // ---------------------------------------------------------
    ?>
    <html>
    <head>
    <title>OK Seite 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body bgcolor="#FFFFFF" text="#000000">
    <br>
     <h1>OK Seite 1</h1>
    <br>
     
    <?php
    // --------------------------------------------------------- 
    ...


    bei ok2.php dann eben mit
    OK Seite 2
    und bei ok3.php mit
    OK Seite 3
    ... je zwei mal

    PS: weiter unten muss man auch noch 2 Links anpassen, (mach was / logout)
    von ... href="ok.php?... jeweils mit der Zahl dazu ... .. href="ok1.php?... .. href="ok2.php?... usw.


    Wenn die Dateien existieren, zu denen weiter-geleitet wird, dann klappt es auch,
    ... ich habe es sogar mal getestet, und es ging 1A



    Beitrag zuletzt geändert: 12.6.2013 19:17:58 von katalogbox
  14. if ($data[0] == $log_user && $data[1] == $log_pass) {

    Wurde die Variable $data als Array deklariert?
    In diesem Codeabschnitt fehlt nämlich $data = array();
  15. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    timebandit schrieb:
    if ($data[0] == $log_user && $data[1] == $log_pass) {

    Wurde die Variable $data als Array deklariert?
    In diesem Codeabschnitt fehlt nämlich $data = array();
    Das ist doch innerhalb der
    while
    -Schleife, in der die CSV-Datei ausgelesen und in der Variablen
    $data
    gespeichert wird…

    Außerdem verstehe ich den Sinn der
    chmod
    -Befehle nicht, da schließlich ein Zugriffsschutz (um den es hier doch geht?) mit einer
    .htaccess
    -Datei weit besser umgesetzt werden kann.
  16. Autor dieses Themas

    skateen

    skateen hat kostenlosen Webspace.

    katalogbox schrieb:
    skateen schrieb:

    Irgendwie geht das nicht so richtig, also die Weiterleitung geht nicht.


    also .... damit die Weiterleitung funktioniert,
    müssen die Dateien, die in der login_data.txt angegeben sind natürlich auch existieren ...

    .... hast Du bei Deinem Test
    die Dateien seite1.php und andere_seite.php und nirvana.php vorher erstellt ?!

    oder zu welchen "Seiten" Du auch immer weiter-leiten willst je User

    wenn die Seite, zu der weiter-geleitet werden soll, nicht existiert, dann kann's auch nicht gehen :xD

    Tipp:
    nimm einfach die ok.php und speichere diese als ok1.php, ok2.php und ok3.php
    und trage in die login_data.txt diese Seiten als Weiterleitungs-Ziel ein

    .... und nimm zum Testen evtl. auch einfachere Passwörter :)

    Datei: login_data.txt
    "hansi";"geheim";"ok1.php"
    "tina";"doof";"ok2.php"
    "oscar";"honigbiene";"ok3.php"


    evtl kannst Du jeweils noch den <title> ändern und eine <h1> Überschrift einfügen,
    damit man gleich sieht, zu welchr Seite um-geleitet wurde


    Ausschnitt der Datei: ok1.php
    ... und bei ok2.php und ok3.php entsprechend mit "Seite 2" / "Seite 3" angepasst
    ... 
    // ---------------------------------------------------------
    ?>
    <html>
    <head>
    <title>OK Seite 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body bgcolor="#FFFFFF" text="#000000">
    <br>
     <h1>OK Seite 1</h1>
    <br>
     
    <?php
    // --------------------------------------------------------- 
    ...


    bei ok2.php dann eben mit
    OK Seite 2
    und bei ok3.php mit
    OK Seite 3
    ... je zwei mal

    PS: weiter unten muss man auch noch 2 Links anpassen, (mach was / logout)
    von ... href="ok.php?... jeweils mit der Zahl dazu ... .. href="ok1.php?... .. href="ok2.php?... usw.


    Wenn die Dateien existieren, zu denen weiter-geleitet wird, dann klappt es auch,
    ... ich habe es sogar mal getestet, und es ging 1A



    Danke, jetzt geht es. Fast.
    Hab doch ein Problem,

    Ich hab das auf meiner Seite aufgebaut, aber irgendwie geht die Weiterleitung nicht.
    http://bigbossmonster.tk/login.php

    Obwohl der gleiche Code hier auch eingebaut ist.
    Hier Funktioniert die Weiterleitung:
    http://bigbossmonster.tk/Login/login.php

    Nick: LeyUp Pass: Geheim


    Beitrag zuletzt geändert: 12.6.2013 22:04:58 von skateen
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!