• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

header schon gesendet?

Status
Für weitere Antworten geschlossen.

Web_spider

Neues Mitglied
Hi Community
Ich habe hier ein Ansantz meines Admin Loginsystems (Ich weiß das Login System
von [URL="http://www.html.de/member.php?u=3936"]boehseronkel[/URL] super ist, aber ich wollte ein eigenes schreiben :))

So ich bekomme als Fehler:
Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d183422968/htdocs/gitarre/admin/index.php:27) in /homepages/16/d183422968/htdocs/gitarre/admin/index.php on line 68
Eigentlich heißt das ja, dass der Header schon gesentet wurde, oder eine Ausgabe vorher erfolgt wurde ist aber nicht so.

Hier der Code
PHP:
<?php
error_reporting(E_ALL);
///////////////////////////////////////////////////////////////////////////
//                              Admin Section                            //
//                          Admins: Richard Jung                         //
//                                                                       //
//=======================================================================//
//                        Last Change: 11.12.2006                        //
///////////////////////////////////////////////////////////////////////////

session_start();   //Sitzung starten

/* [actions] */
    //Falls die Variable Aktion nicht Vorhanden ist
    if (!isset($_GET['action']))
    {
        header("Location: http://www.gloryage.de/gitarre/admin/index.php?action=show");
    }
    switch ($_GET['action'])
    {
        //Aktion fuer Login
        case "login":
        /* [AKTION LOGIN] */
                //Daten holen
                $username = $_POST['username'];
                $password = $_POST['password'];
                $durably = $_POST['durably'];
                
                //Mit Mysql verbinden
                $db = mysql_connect("**", "**", "**");
                mysql_select_db("db183424299");
                $sql = "SELECT * FROM user WHERE username LIKE'".$username."'";
                $result = mysql_query($sql);
                $num = mysql_num_rows($result);
                $data = mysql_fetch_assoc($result);
                
                
                //Falls der Benutzername nicht Vorhanden ist.
                if ($num == 0)
                {
                    $_SESSION['ausgabe'] = "<br />\nDer Benutzer ist nicht vorhanden.";
                }
                //Wenn der Benutzer Vorhanden ist
                else
                {
                    //Nach Passwort pruefen
                    if ($data['password'] != $password) 
                    {
                        $_SESSION['ausgabe'] = "<br />\nDas Passwort ist inkorrekt.";
                    }     
                    //Wenn das Passwort richtig ist
                    else
                    {
                        $_SESSION['username'] = $data['username'];
                        $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
                        $_SESSION['id'] = $data['id'];
                        $_SESSiON['logedin'] = true;
                        setcookie("sid", $sid);
                        if ($durably == "on");
                        {
                            setcookie("username", $username);
                            setcookie("password", $password);
                            setcookie("sid", $sid);
                        }
                        header("Location: http://www.gloryage.de/gitarre/admin/show.php");
                    }
                }
                header("Location: http://www.gloryage.de/gitarre/admin/show.php");
        /* [/ AKTION LOGIN] */
        break;
        
        //Aktion fuer die Anzeige des Adminbereichs
        case "show":
        /* [AKTION SHOW] */
                //Falls der User nicht eingeloggt ist
                if (!$_SESSION['logedin'] == true && !$_SERVER['REMOTE_ADDR'] = $_SESSION['ip'])
                {
                    $_SESSION['ausgabe'] = "
                      <!-- [Php generierter Code] -->\n
                      <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n
                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n
                      <html xmlns=\"http://www.w3.org/1999/xhtml\">\n
                      <head> \n
                      <meta http-equiv=\"content-type\" content=\"text/html; charset=windows-1250\">\n
                      <meta name=\"generator\" content=\"PSPad editor, www.pspad.com\">\n
                      <title> Admin Login </title>\n
                      </head>\n
                      <body>\n
                      <form action=\"http://www.gloryage.de/gitarre/admin/index.php?action=login\" method=\"post\">\n
                      <table>\n
                      <tr>\n
                      <td>Benutzername: </td>\n
                      <td><input type=\"text\" name=\"username\" id=\"username\" /></td>\n
                      </tr>\n
                      <tr>\n
                      <td>Passwort: </td>\n
                      <td><input type=\"password\" name=\"password\" id=\"password\" /></td>\n
                      </tr>\n
                      <tr>\n
                      <td colspan=\"2\"><input type=\"checkbox\" name=\"durably\" id=\"durably\" />&nbsp;&nbsp;Angemeldet bleiben?</td>\n
                      </tr>\n
                      <tr>\n
                      <td><input type=\"submit\" value=\"Login\"></td>\n
                      <td><input type=\"reset\" value=\"Felder leeren\"></td>\n
                      </tr>\n
                      </table>\n
                      </form>\n
                      </body>\n
                      </html> \n
                      <!-- [/ Php generierter Code] -->\n
                    ";       
                }
                //Falls der User eingeloggt ist
                else
                {
                    $_SESSION['ausgabe'] = "welcome here";       
                }
        /* [/ AKTION SHOW] */
        break;
        
        //Aktion zum logout.php
        case "logout":
          header("Location: http://www.gloryage.de/gitarre/admin/logout.php");
          break;
        
        //Falls keine Aktion angegeben ist, dann Seite mit der Aktion "show" aufrufen
        default:
          header("Location: http://www.gloryage.de/gitarre/admin/index.php?action=show");
    }
    echo $_SESSION['ausgabe'];
/* [/ actions] */
?>

Zeile 68:
(ist unter case "login")
header("Location: http://www.gloryage.de/gitarre/admin/show.php");

Ich bin irgendwie ratlos :(

Schaut euch das, wenn ihr wollt hier an.
(Username und Passwort einfach leer lassen)

greez web_spider :D
 
Werbung:
Werbung:
hmm also so ganz habe ich ob_start() nicht verstanden, kannst du mir ein link mit einem besseren Beispiel geben?
danke im vorraus :)

greez web_spider :D
 
Ich habe das auch nur aus einem Tutorial. Klick!
Da gibt es folgenden Quote:
So, nun gehts auch schon los!
Am Anfang wird die Session gestartet und der Output Buffer gestartet, sodass alles erstmal gebuffert wird, und am Ende sortiert an den Klient geschickt wird.
[...]
Falls Ihr das nicht hättet, würde ein Fehler erscheinen, wenn man zuerst HTML schickt und danach ein Cookie setzt, da das setzten des Cookies im Header passiert, und dieser schon gesetzt wäre.
Wenn Ihr jedoch ob_start() verwendet, werden alle Ausgaben und Header zuerst gebuffert, und am Ende sortiert an den Klienten geschickt!
Deswegen hab ich gedacht, dass dir die Funktion weiterhilft!
Gruß
 
Werbung:
alle header wurden schon gesendet...
...liegt am session_start().

Nils aka XraYSoLo
Das ist die Ursache für den Fehler dafür, aber nicht der Grund.
Man kann erst session starten und header senden danach..
Das prob wird wohl eher eine Ausgabe vor dem <?php sein. Da darf nix sein auch kein lerrzeichen. UNd wenn da schon eine ausgabe war, wirft session_start den fehler..
 
Der Ansatz von blax war gar nicht schlecht.. aber vor allen haeder-Angaben darf keine Ausgabe stehen.. Mach sowas entweder mit html im haeder oder include die jeweilige Datei, die du haben willst!
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben