weiss nicht mehr weiter bitte um hilfe!

harderph

Erfahrenes Mitglied
Hello

Habe irgendwie schwierigkeiten eine fehler meldung weg zu bekommen!
Ich versuche seit 3 tagen cookies zu setzen damit user sich nicht immer wieder neu einloggen müssen! Aber ich bekomme immer eine fehler meldung die bestimmt so einige kennen
PHP:
Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\test\index.php:16) in D:\xampp\htdocs\test\index.php on line 24
Es handelt sich hier um ein Tutorial script (so ca. das 10000ste was ich schon probiert habe) der cookies setzen soll mit loginformular! Diese fehlermeldung bekomm ich überall bei jeden script was ich probiere! Aber ich weiss nicht warum! Könnte mir da jemand vieleicht ein rat geben?
P.s. Ich habe schon nach möglichen fehlern gegoogled, bin auch fündig geworden aber geholfen hast es nicht! Hier mal das login script was ich selber aus einen anderen forum habe!
INC:pHP
PHP:
<?php

    @session_start();    

    @mysql_connect("HOST","USER","PASS");
        @mysql_select_db("DB");
    
    function check_string($string) {
                
        // erlaubte zeichen a-z,A-Z,0-9,-,_
                
        if((preg_match('/^[a-zA-Z0-9\-\_]+$/',$string))) return true;
                
        return false;
            
    }
    
    
    function login($benutzername,$kennwort,$modus=1,$cookie_gelesen=1) {
    
        // ############# Konfiguration start #############
    
        // ### Cookies ###
    
        // Name des Cookies
        $conf['cookie_name'] = "login_cookie";
    
        // Ablaufzeit des Cookies (1 Monat)
        $conf['cookie_zeit'] = time()+3600*24*7*4;
    
        // Inhalt des Cookies (Wird im spaeterem Verlauf festgelegt)
        $conf['cookie_inhalt'] = "";
    
        // ### Sonstiges ### 
    
        // Modus ( 1 = Session und Cookie setzen / 2 = Session ohne Cookie setzen )
        $conf['modus'] = $modus;
        
        // CookieSet ( 1 = Benutzername und Kennwort sind nicht aus einem Cookie entnommen / <1 = Benutzername und Kennwort sind einem Cookie entnommen somit ist das Kennwort schon verschluesselt )
        $conf['cookie_gelesen'] = $cookie_gelesen;
        
        // ### Variablen ###
        
        // Benutzername
        $vars['benutzername'] = htmlspecialchars(trim($benutzername));
        
        // Kennwort
        $vars['kennwort'] = htmlspecialchars(trim($kennwort));
        
        // ############# Konfiguration ende #############
        
        // Ist der Benutzername oder das Kennwort "leer" oder sind ungueltige Zeichen im String dann gib ein false wert zurueck        
        if(strlen($vars['benutzername']) == 0 OR strlen($vars['kennwort']) == 0 OR !check_string($vars['benutzername']) OR !check_string($vars['kennwort'])) {
            
            return false;
            
        }else {
            
            // Ist das Kennwort NICHT aus einem Cookie dann muss es mit md5 verschluesselt bzw. verhasht werden            
            if($conf['cookie_gelesen'] == 1) {
                
                $vars['kennwort'] = md5($vars['kennwort']);    
                
            }
            
            // SQL Abfrage ob benutzername und kennwort gleich den in der Datenbank sind            
            $sql = @mysql_query("SELECT benutzer_id FROM tbl_benutzer WHERE benutzername = '".$vars['benutzername']."' AND kennwort = '".$vars['kennwort']."' ");
            
            // Ist die Abfrage erfolgreich dann check den Modus            
            if(@mysql_num_rows($sql) == 1) {
            
                
                if($conf['modus'] == 1) {
                
                    // Cookie Inhalt wird aus benutzername@kennwort zusammengebaut                    
                    $conf['cookie_inhalt'] = $vars['benutzername']."@".$vars['kennwort'];
                    
                    // Cookie wird gesetzt                    
                    @setcookie($conf['cookie_name'],$conf['cookie_inhalt'],$conf['cookie_zeit']);
                        
                    // Session für den login wird gesetzt                    
                    $_SESSION['success'] = true;
                        
                    return true;
                    
                }else {
                
                    // Session für den login wird gesetzt                    
                    $_SESSION['success'] = true;
                        
                    return true;    
                    
                }    
                    
            }else { 
            
                // SQL Abfrage hat nicht geklappt                    
                return false; 
            
            }
            
        }
        
    }
HIr das login formular!
PHP:
<?php
    
    // Pruefen ob der Browser Cookies akzeptiert
    if(isset($_COOKIE['browser_check'])) {
        $browser_check = true;
    }elseif($_GET['check'] != 1) {
        
        @setcookie("browser_check","set",time()+3600);
        header("Location: index.php?check=1");
                
                    
    }
            
    include("inc.php");
    
    // Wenn $_GET['logout'] gesetzt ist dann loesche $_SESSION['success']
    if(isset($_GET['logout'])) {
        
        // Wenn $_COOKIE['login_cookie'] gesetzt ist dann loesche Cookie
        if(isset($_COOKIE['login_cookie'])) @setcookie("login_cookie",0,time()-3600);
        
        // Loesche SESSION['success']
        unset($_SESSION['success']);
        
        //Leite weiter zur index.php
        header("Location: index.php");
        
    }
    
    // Wenn $_COOKIE['login_cookie'] gesetzt ist dann ueberpruefe den Inhalt und fuehre ggf. den auto login aus
    if(isset($_COOKIE['login_cookie']) AND !isset($_POST['sender']) AND !isset($_GET['logout'])) {
        
        // Hole den Inhalt aus dem Cookie
        $cookie_inhalt = $_COOKIE['login_cookie'];
        
        // Trenne benutzername und kennwort anhand des Trennzeichens @
        $cookie_inhalt = explode("@",$cookie_inhalt);
        
        // Gehe mit Cookiedaten in die login funktion
        login($cookie_inhalt[0],$cookie_inhalt[1],1,2);
        
    }
        
    // Wenn Sumbit gepostet wurde    
     if(isset($_POST['sender'])) {
     
         // Wenn Cookie setzen "aktiv"
         if($_POST['co'] == 'on') {
                 
             if(login($_POST['username'],$_POST['password']) == false) {
                 
                 echo "Sry da hat was nicht geklappt";
                 
             }
                     
         }else {
                 
             if(login($_POST['username'],$_POST['password'],2,1) == false) {
                 
                 echo "Sry da hat was nicht geklappt";
                 
             }
                 
         }
             
     }
    
     

?>


<html>
<head>
    <title>test</title>
</head>

<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" >
<?php 

if(isset($_SESSION['success'])) {
        
    echo "drin<a href='index.php?logout=true'>Logout</a>";

    
}else {
    
?>

<form target="_self" method="post" name="main">
<?php if(!isset($browser_check)) echo "Ihr Browser akzeptiert keine Cookies, daher wird dieses Feld deaktiviert"; ?>
User : <input type="text" name="username">
Pass : <input type="text" name="password">
Cookie (ja/nein) : <input type="checkbox" name="co" <?php if(!isset($browser_check)) echo "disabled";?>>
<input type="submit" name="sender">

</form>

<?php } ?>

</body>
</html>
 
Wenn die Login.php voher von einer anderen Datei include wird und diese davor eine Html ausgabe macht dann kommt diese Fehlermeldung.
Es darf keine ausgabe erfolgen auch kein Leerzeichen damit Location funktioniert.

Also es darf nix an den Browser gesendet worden sein.

Wie wird den deine Login datei aufgerufen?

Mfg Splasch
 
Der HTTP-Header kann nur dann geändert werden, wenn noch keine Daten an den Client gesendet wird. Und dies geschieht im Allgemeinen, wenn etwas ausgegeben wird.

Du musst also dafür sorgen, dass vor Funktionsaufrufen wie setcookie() oder header() keinerlei Ausgabe geschieht oder pufferst diese mithilfe der Ausgabesteuerungsfunktionen, so dass keine Ausgabe vorschnell zum Client gesendet wird.
 
Also Login formular erscheint mit der Fehlermeldung! Jetzt habe ich session_start auf die loginseite gesetzt nach dem man das formular abschickt! Jetzt kommt die meldung auch nhct mehr! Eure tipps haben mir geholfen vielen dank!:)
 

Neue Beiträge

Zurück