Login Script

kris1989

Grünschnabel
Hallo,

ich habe mir ein kleines PHP Script geschrieben. Nur leider habe ich das Problem, das städnig erscheint diese Fehlermeldung "session_start() [function.session-start]: Cannot send session cookie.." und meine sql abfrage scheint auch nicht zu funktionieren. Ich würde mich freuen wenn mir jemand einen kleien Tipp geben könnte an was es liegt.


PHP:
<?
include_once 'mb_connect.php';
// Session starten
    session_start();

    if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
        // Falls der Nickname und das Passwort übereinstimmen..
        $sql = "SELECT
                        ID
                FROM
                        User
                WHERE
                        Vorname = '".mysql_real_escape_string(trim($_POST['first_name']))."' AND
			Nachname = '".mysql_real_escape_string(trim($_POST['last_name']))."' AND
                        Passwort = '".md5(trim($_POST['password']))."'
               ";
        $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        // wird die ID des Users geholt und der User damit eingeloggt
        $row = mysql_fetch_assoc($result);
        // Prüft, ob wirklich genau ein Datensatz gefunden wurde
        if (mysql_num_rows($result)==1){
             
             echo "<h4>Willkommen ".$_SESSION['last_name']."</h4>\n";
             echo "Sie wurden erfolgreich eingeloggt.<br>\n".
                  "Zur <a href=\"index.php\">Startseite</a>\n";
        }
        else{
             echo "Sie konnten nicht eingeloggt werden.<br>\n".
                  "Nickname oder Passwort fehlerhaft.<br>\n".
                  "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
        }
    }
    else{
        echo "<form ".
             " name=\"Login\" ".
             " action=\"".$_SERVER['PHP_SELF']."\" ".
             " method=\"post\" ";
             
        echo "Vorname :\n";
        echo "<input type=\"text\" name=\"first_name\">\n";
        echo "<br>\n";
 	echo "Nachname :\n";
        echo "<input type=\"text\" name=\"`last_name`\">\n";
        echo "<br>\n";
        echo "Passwort :\n";
        echo "<input type=\"password\" name=\"password\">\n";
        echo "<br>\n";
        echo "<input type=\"submit\" name=\"submit\" value=\"Einloggen\">\n";
        echo "<br>\n";
        
    }
?>
 
  • Gefällt mir
Reaktionen: iAZ
"Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by ..." diese?

Mach mal session_start(); an den anfang, also so:

PHP:
<?php
session_start();
include_once 'mb_connect.php';
 
Die MySQL Abfrage gestallte ich grundsätzlich anders.
Was (finde ich) auch übersichtlicher ausschaut. (Zumindest in meinem PHP Editor)

PHP:
$sql = mysql_query("SELECT * FROM `user` WHERE `Vorname`='".mysql_real_escape_string(trim($_POST['first_name']))."' AND `Nachname`='".mysql_real_escape_string(trim($_POST['last_name']))."' AND `Passwort`='".md5(trim($_POST['password']))."'");
if (mysql_errno() != "0:") { echo mysql_errno()." - ".mysql_error().""; }

Hab das nunmal frei aus dem Kopf geschrieben.. hoffe aber das es soweit richtig ist.. :)..


MFG: Radanua
 
Ich find das immer noch verdammt unübersichtlich :P
Es ist schonmal gut das du die Eingaben gegen SQL-Injection schützt aber ich mach das lieber in einer eigenen klasse:
PHP:
function makesafe($string){
$string=trim($string);
$string=mysql_real_escape_string($string);
return $string;
}

$first_name=makesafe($_POST['first_name']);
$last_name=makesafe($_POST['last_name']);
$password=md5($_POST['password']); //Kein trim(), da das Passwort ja am anfang oder ende leerzeichen haben könnte

$sql = "SELECT * FROM user WHERE Vorname='".$first_name."' AND Nachname='".$last_name."' AND Passwort='".$password."'";
$query=mysql_query($sql);
Ich find die komischen ` die PHPMyAdmin einfügt braucht man nicht reinzuschreiben oder?

Eigentlich sieht das SQL-Script richtig aus... aber wenn es nicht funktioniert ein Tipp:
gib doch die Abfrage per
PHP:
echo $sql;
aus und gib sie in phpMyAdmin ein. dann erhälst du eine gut verständliche fehlermeldung.
MfG AZ
 
Zuerst vielen Dank für eure Antworten, mein größtes Problem ist immer noch das es diese beiden Fehlermeldungen beim Aufruf der Seite anzeigt:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Inetpub\vhosts\sallen-creations.de\httpdocs\login.php:1) in C:\Inetpub\vhosts\sallen-creations.de\httpdocs\login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Inetpub\vhosts\sallen-creations.de\httpdocs\login.php:1) in C:\Inetpub\vhosts\sallen-creations.de\httpdocs\login.php on line 2

Das Session start habe ich an den Anfang der Datei geschrieben!

Mfg
 
es sieht ganz so aus, dass du in der login.php auf Zeile 1 eine Leerzeile oder ein Leerzeichen vor dem <?php hast.
das <?php MUSS als erstes in der Datei stehen!
 
@iAZ
Du meinst das Richtige, aber du beschreibst es vielleicht ein bisschen falsch.

Nicht nur "<?php" muss in der ersten Zeile innerhalb der Datei stehen, sondern die session_start-Anweisung muss ganz oben stehen.
Es darf kein Zeichen (auch kein Leerzeichen) ausgegeben werden bevor nicht diese Anweisung abgearbeitet wurde.
 
Also heute ist echt nicht mein Tag zum programmieren:

Ich habe das jetzt so an den Anfang der Datei geschrieben und es erscheinen immer noch die beiden Fehlermeldungen:

<?session_start();

include_once 'mb_connect.php';


Ich weiß ehrlich gesagt nicht mehr was ich noch tun soll .
 
Ist die Datei irgendwie per include oder so in eine zweite eingebunden?
Um den Fehler zu finden solltest du vielleicht nochmal den kompletten Quelltext hier reinsetzen.

Gruß Thomas

Nachtrag: Ich habe mir gerade den Quelltext des ersten Beitrags kopiert und lediglich die include Anweisung raus genommen. Wenn ich mich anmelde kommt der SESSION Fehler nicht! Es muss also bei dir noch etwas geben das wir hier nicht wissen.

Schau dir auch mal das hier an. Da wird die Ursache für deinen Fehler nochmal erklärt.
Auf dieser Seite ist auch die Rede von den auto_prepend_file-Einstellung in der php.ini. Halte ich zwar für nicht sehr wahrscheinlich aber man weiß ja nie.
 
Zuletzt bearbeitet:
okay jetzt habe ich all diese Probleme gelöst.

Jetzt erscheint diese Meldung:

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Könnt Ihr mir dabei vielleicht auch noch helfen vielen Dank!
 
Zurück