Datenbankeintrag für Beginner

Hallo zusammen,
ich bin noch ein relativer Neuling was PHP angeht undhabe nun ein Problem. Ich wollte auf meiner Seite erst einmal einen kleinen Login für spezielle User erstellen, die sich aber zuerst einmal anmelden sollten. Habe, meiner Meinung nach auch alles beachtet, aber irgentwie funzt das trotzdem nicht. Server läuft, MySQL läuft, DB steht, script steht, aber irgentwie klappt das nicht. Ich habe mal manuell in meine Tabelle einen Eintrag eingepflegt, aber ich kann diesen noch nicht einmal aufrufen. Hier ist mein code:

<?php session_start();
?\><?php $verbindung = mysql_connect("localhost", "Roman" , "...(Mein Passwort")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql\_select\_db("messautomat") or die ("Datenbank konnte nicht ausgewählt werden"); $username = $\_POST["username"]; $passwort = md5($\_POST["password"]); $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1"; $ergebnis = mysql\_query($abfrage); $row = mysql\_fetch\_object($ergebnis); if ($row-\>passwort == $passwort) { $\_SESSION["username"] = $username; echo "Login erfolgreich. [Geschützer Bereich](login.htm)"; } else { echo "Benutzername und/oder Passwort waren falsch. [Login](%255C%2522login.htm%255C%2522)"; } ?\> Wäre super, wenn mir einer dabei helfen könnte. wie gesagt, bin noch Anfänger und habe bestimmt nur eine kleinigkeit übersehen! Vielen Dank im vorraus Roman

Hallo,

echo „Login erfolgreich.
Geschützer Bereich“;

ist falsch, die Anführungszeichen in href müssen z.B. als Hex dargestellt werden :

echo „Login erfolgreich.
Geschützer Bereich“;

So gibt es einen Parser-Fehler.
Ansonsten fällt mir nur noch eines auf :

PHP hat manchmal Probleme mit Variablen in Strings. Probier’s mal so :
$abfrage = „SELECT username, passwort FROM login WHERE username LIKE '“.$username."’ LIMIT 1";

Bekommst Du denn überhaupt eine Verbindung zur Datenbank ?

Ciao

Sven

http://www.Sven-of-Nine.de

Hi!
Erst einmal danke für deine mail. Nein, ich bekomme noch nicht einmal eine verbindung zur DB. ich habe schon einmal gestestet was passiert, wenn ich ein falsches Passwort für meine DB in den Quellcode eigebe -es passiert gar nichts. Wäre froh, wenn ich von dir/euch noch weitere Tips bekommen würde!
Werde die Vorschläge heute abend aber schon einmal austesten.
Roman

Bekommst Du denn überhaupt eine Verbindung zur Datenbank ?

Ciao

Sven

http://www.Sven-of-Nine.de

zusätzlich zu dem was schon gesagt wurde…

<?php :session_start();
?\> <?php wozu php beenden um es danach wieder zu öffnen?

schmeiss das raus…

$verbindung = mysql_connect(„localhost“, „Roman“ , „…(Mein
Passwort“)
or die(„Verbindung zur Datenbank konnte nicht hergestellt
werden“);

schmeiss mal das „$verbindung =“ raus…

$abfrage = „SELECT username, passwort FROM login WHERE
username LIKE ‚$username‘ LIMIT 1“;

Du solltest kein LIKE verwenden wenn Du eh keine Wildcards benutzt.
username=’$username’ - mehr nicht :smile:

if ($row->passwort == $passwort)

ich bevorzuge hier $row[‚passwort‘]
vorsicht auch mit denglisch - passwort und password verwechselt man gerne…

$_SESSION[„username“] = $username;
echo „Login erfolgreich.
Geschützer Bereich“;

eiw gesagt - " escapen also "

so wie hier:

else
{
echo „Benutzername und/oder Passwort waren falsch. Login“;
}

HTH
Munich

Hallo

if ($row->passwort == $passwort)

ich bevorzuge hier $row[‚passwort‘]

Dann muss es aber mysql_fetch_assoc heißen anstatt mysql_fetch_object, oder sehe ich das falsch?

Mir ist auch die Array-Variante lieber, die Objekte sind mir etwas suspekt.

cu

Du hast so recht :smile:
da hab ich einfach mal drübergelesen 8-|

ich bevorzuge allerdings mysql_fetch_array - ist aber fast das gleiche :smile:

ist falsch, die Anführungszeichen in href müssen z.B. als Hex
dargestellt werden :

echo „Login erfolgreich.
Geschützer Bereich“;

Wieso denn als Hex? ein einfaches \ vor dem " also " würde doch schon reichen.

gruß.thomas

Hallo,

war auch nur ein Beispiel

Ciao

Sven