Probleme mit PHP & MySQL
Übersicht

schalliBetreff: Probleme mit PHP & MySQL |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe ein DATENBANKPROBLEM mit PHP & MySQL.
Im Folgendem Code klappt zwar die Verbindung mit der Datenbank (DB_Open) und auch das Beenden der Verbindung (DB_Close) funzt. Aber zu den Funktionen DB_Read_pwd und DB_Write entsteht zwar keine Fehlermeldung, doch sie erfüllen auch nicht ihren Sinn. Code: [AUSKLAPPEN] <?php
function DB_Open () { @mysql_connect("localhost","root","") or die("Verbindung zu MySQL gescheitert!"); @mysql_select_db("chatfs") or die("Datenbankzugriff gescheitert!"); } function DB_Write($uname,$pword,$email,$andat) { $sql = "INSERT INTO mitglieder (id,uname,pword,email) VALUES ('','$uname','$pword','$email')"; if (mysql_query($sql)) { return 1; } else { return 0; } } function DB_Close () { mysql_close(); } function DB_read_pwd ($uname,$pword) { $sql = "SELECT * FROM mitglieder"; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)); { if ($uname == $row[uname] && $pword == $row[pword]) { $id = $row[id]; } else { $id = -1; } } return $id; } ?> Vielleicht weiß ja jemand von euch, was ich falsch mache. Mfg Schalli |
||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich habe da jetzt so auf die Schnelle keinen Fehler gesehen aber ich würde das mit dem Passwort lesen anders machen ich würde die MySQL anfrage gleich nach dem Password Fragen lassen und nicht den Umweg über eine Schleiße gehen.
mfg ichbin007 [Edit] Code: [AUSKLAPPEN] $sql = "SELECT * FROM mitglieder WHERE uname=$uname"; (müsste eig so sein) |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: $sql = "INSERT INTO mitglieder (`id`,`uname`,`pword`,`email`) VALUES ('','$uname','$pword','$email')";
Die `` sind wichtig! Zitat: @mysql_connect("localhost","root","") or die("Verbindung zu MySQL gescheitert!");
Das funktioniert glaube ich auch nur so : Zitat: var=mysql_conncect [...] or die(..)
mfG, Thorsten |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: while ($row = mysql_fetch_assoc($result));
Am Ende ist ein Semikolon, wodurch der nachfolgende Block gar nicht ausgeführt wird. Weiterhin sollten die Eingaben mit mysql_real_escape_string() escaped werden, damit die Gefahr von SQL Injection minimiert wird. Und für Passwörter würde ich die PASSWORD()-Funktion von MySQL verwenden, damit sie verschlüsselt werden. Code: [AUSKLAPPEN] $uname = mysql_real_escape_string($uname);
$pword = mysql_real_escape_string($pword); // usw... Code: [AUSKLAPPEN] INSERT INTO `mitglieder` (`uname`,`pword`,`email`) VALUES ('$uname', PASSWORD('$pword'), '$email')
Code: [AUSKLAPPEN] SELECT * FROM `mitglieder` WHERE `uname`='$uname' AND `pword`=PASSWORD('$pword')
|
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jolinah : Man kann nicht einfach einseitig Passwörter verschlüsseln..
Außerdem empfiehlt sich eher das etwas kürzere md5 oder sha1. mfG, Thorsten |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, Verschlüsseln war vielleicht der falsche Begriff ![]() ![]() |
||
schalli |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also
Änderung 1: Code: [AUSKLAPPEN] function DB_Write($uname,$pword,$email,$andat)
{ $uname = mysql_real_escape_string($uname); $pword = mysql_real_escape_string($pword); $email = mysql_real_escape_string($email); $sql = "INSERT INTO mitglieder ('id','uname','pword','email') VALUES ('','$uname','$pword','$email')"; if (mysql_query($sql)) { return 1; } else { return 0; } } Bei Funk. DB_Read_pwd weiß ich nicht, wie ich das bei eurem "Vergleichs-Prinzip" mit der id-Rückgabe mache. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
$row = mysql_fetch_assoc($result)
mach stratt assoc array und schreib bei den [] '' dazwischen....# rechtschreibfehler waren absichht^^ |
||
![]() |
ProfJakeehemals "DTC" / "Fabian Niemann" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum machst du es eigentlich nicht als Klasse?
Ich mach das immre mit einem Interface und einer abstrakten Basisklasse und von der leite ich dann 4e eine mySQL Klasse ab. |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es müssen `` und keine '' sein bei Feldnamen, sonst funktionierts nicht. Ansonsten kann man die aber auch einfach weg lassen, da schert sich MySQL nicht drum. | ||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Bei Funk. DB_Read_pwd weiß ich nicht, wie ich das bei eurem "Vergleichs-Prinzip" mit der id-Rückgabe mache.
Eigentlich ähnlich wie vorher, nur dass du nicht jede Zeile durchgehen musst: Code: [AUSKLAPPEN] function DB_read_pwd ($uname,$pword)
{ $uname = mysql_real_escape_string($uname); $pword = mysql_real_escape_string($pword); $sql = "SELECT * FROM `mitglieder` WHERE `uname`='$uname' AND `pword`='$pword'"; $result = mysql_query($sql); if (mysql_num_rows($result) == 1) { $row = mysql_fetch_assoc($result); return $row["ID"]; } return -1; } Oder so ähnlich ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group