Anzeige:
Ergebnis 1 bis 8 von 8

Thema: login system .. fehler!!!

  1. #1
    Registrierter Benutzer
    Registriert seit
    06.11.2003
    Ort
    Byreuth
    Beiträge
    50

    login system .. fehler!!!

    also ich bin gerade dabei ein login system zu machen und bin noch ein ziemlicher n00b in sachen php und mysql! also ich hab eine datenbank mit folgendem befehl erstellt!

    CREATE TABLE benutzerdaten (
    Id Int(11) NOT NULL auto_increment,
    Nickname VarChar(50) NOT NULL default '',
    Kennwort VarChar(50) NOT NULL default '',
    Nachname VarChar(50) NOT NULL default '',
    Vorname VarChar(50) NOT NULL default '',
    EMail VarChar(50) NOT NULL default '',
    PRIMARY KEY (Id)
    )
    das hat auch ohne probz funktioniert und auch mit daten füllen, ging ohne probleme!

    jetzt habe ich eine html datei folgendes eingebaut!

    in die erste zeile :

    PHP-Code:
    <?php session_start (); ?>
    dann in den body bereich, dass hier
    PHP-Code:
    <?php 
    if (isset ($_REQUEST["fehler"])) 

      echo 
    "Die Zugangsdaten waren ungültig."

    ?>
    und da wo das formular hinkommen soll das hier:

    PHP-Code:
    <form name="loginform" method="post" action="login.php" >
                                                    <
    div align="center">
                                                        
    Benutzername:<br>
                                                        <
    input type="text" name="name" size="12" maxlength="20" tabindex="1" border="0"><br>Password:<br>
                                                        <
    input type="password" name="pwd" size="12" maxlength="20" tabindex="2" border="0"><br>
                                                        <
    br>
                                                        <
    input type="submit" name="loginsubmit" value="Login!" tabindex="3" border="0">
                                                    
                                                </
    form
    so und die "login.php" schaut so aus:

    PHP-Code:
    <?php 
    // Session starten
    session_start ();

    // Datenbankverbindung aufbauen 
    $connectionid mysql_connect ("127.0.0.1""XXX""XXX"); 
    if (!
    mysql_select_db ("XXX"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    $sql "SELECT "
        
    "Id, Nickname, Nachname, Vorname "
      
    "FROM "
        
    "benutzerdaten "
      
    "WHERE "
        
    "(Nickname LIKE '".$_REQUEST["name"]."') AND "
        
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
    $result mysql_query ($sql); 

    if (
    mysql_num_rows ($result) > 0

      
    // Benutzerdaten in ein Array auslesen. 
      
    $data mysql_fetch_array ($result); 

      
    // Sessionvariablen erstellen und registrieren 
      
    $_SESSION["user_id"] = $data["Id"]; 
      
    $_SESSION["user_nickname"] = $data["Nickname"]; 
      
    $_SESSION["user_nachname"] = $data["Nachname"]; 
      
    $_SESSION["user_vorname"] = $data["Vorname"]; 

      
    header ("Location: intern.php"); 

    else 

      
    header ("Location: index.php?page=fehler"); 

    ?>
    so das ganze habe ich irgendwo aus dem internet gezogen, aber es kommt folgender fehler:

    PHP-Code:
    Warningsession_start(): Cannot send session cookie headers already sent by (output started at /home/www/web51/html/cod/login.php:4in /home/www/web51/html/cod/login.php on line 6

    Warning
    session_start(): Cannot send session cache limiter headers already sent (output started at /home/www/web51/html/cod/login.php:4in /home/www/web51/html/cod/login.php on line 6

    Warning
    Cannot modify header information headers already sent by (output started at /home/www/web51/html/cod/login.php:4in /home/www/web51/html/cod/login.php on line 39 
    also weil bei mir noch mehr drinsteht (in den datein), kann es sein, dass die zeilennummern nicht übereinstimmen, deswegen schreib ich hier nochmal die betroffenen zeilen auf:

    zeile 6:
    PHP-Code:
    session_start (); 
    zeile 39:
    PHP-Code:
    header ("Location: index.php"); 
    wo liegt hier der fehler? ich seh leider keinen ...

    danke im voraus

    johnpatcher
    ich liebe linux

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.12.2003
    Ort
    Bienenbüttel
    Beiträge
    17
    Hallo,

    ich steig zwar nicht ganz durch,
    ABER der Fehler "headers already sent by"
    ist typisch dafür, das du schon irgendeine
    Ausgabe an den Client gesendet hast.

    Und sei es nur ein leerzeichen.
    Der Aufruf
    PHP-Code:
    session_start(); 
    _muss_ als aller erstes an den Browser gesendet werden
    _bevor_ irgenetwas anderes gesendet wird.

    Grüße
    Christoph
    Ein Ahnungsloser Azubi, bei dem Versuch seinen Chef zu beeindrucken und die Welt zu retten.

    #php-mysql @ irc.linuxforen.de

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.12.2001
    Ort
    CH
    Beiträge
    122
    Hi

    Es ist möglich dass du bei header("Location: blabla") die absolute URL angeben musst.
    Bei php.net steht noch folgendes:
    Anmerkung: HTTP/1.1 verlangt einen absoluten URI inkl. dem Schema, Hostnamen und absoluten Pfad als Argument von Location:, aber manche Clients akzeptieren auch relative URIs. ...
    Noch eine weitere Frage. Was ist $_REQUEST[]?
    PHP-Code:
      "(Nickname LIKE '".$_REQUEST["name"]."') AND "
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
    Du sendest dein Formular ja mit POST. Um auf die Werte zugreiffen zu können müsstest du dann $_POST['name'] nehmen.


    magpie
    I never saw my PC smiling before - LINUX

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.11.2003
    Ort
    Byreuth
    Beiträge
    50
    ich habe es scho gelöst! es stand noch vor "session_start ();" ein include befehl, wahrscheinlich geht es so nicht! naja trotzdem danke!

    jonpatcher
    ich liebe linux

  5. #5
    Registrierter Benutzer Avatar von Stanislaus
    Registriert seit
    04.07.2003
    Ort
    Mönchengladbach
    Beiträge
    80
    Es ist hundertprozentig kein Problem vor dem session_start() ein include() oder require() aufzurufen. Du musst nur drauf achten, daß in der includierten Datei keine Leerzeichen außerhalb der php Tags stehen (passiert mir immer wieder gerne) und auch echos, prints o.ä. dürfen natürlich nicht durch das include aufgerufen werden.

    Bis neulich ...

  6. #6
    Registrierter Benutzer
    Registriert seit
    02.12.2002
    Ort
    Darmstadt
    Beiträge
    615
    Original geschrieben von magpie

    Noch eine weitere Frage. Was ist $_REQUEST[]?
    PHP-Code:
      "(Nickname LIKE '".$_REQUEST["name"]."') AND "
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
    Du sendest dein Formular ja mit POST. Um auf die Werte zugreiffen zu können müsstest du dann $_POST['name'] nehmen.
    $_REQUEST ist sozusagen die Mischung aus $_GET und $_POST, also alles was in $_GET und in $_POST steht, steht auch in $_REQUEST, ich vermute das $_POST dort höherpriorisiert wird als $_GET, so das man $_POST Vars dort nicht mit $_GET Vars überschreiben kann.
    Seine Rätselhaftigkeit wird nur durch seine Macht übertroffen!

  7. #7
    Registrierter Benutzer
    Registriert seit
    26.12.2001
    Ort
    CH
    Beiträge
    122
    Es wäre aber trotzdem sinnvoller und warscheinlich sicherer direkt mit $_POST und $_GET zu arbeiten denk ich mir. Ich hab mich noch etwas schlau gemacht. Die $_COOKIES werden auch noch abgefragt.

    gruss magpie
    I never saw my PC smiling before - LINUX

  8. #8
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo!

    Wie schon richtig gesagt wurde: $_REQUEST enthält alles was von "Aussen" kommt, also $_GET + $_POST + $_COOKIES.
    Die Priorität wird in der php.ini unter dem Punkt variables_order festgelegt.
    Der Standardwert ist "EGPCS", also Environment --> GET --> POST --> COOKIE --> System.

    Gruß,

    Gaert


Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •