code zu viel?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
benutzername
code
datei
datenbank
eintrag
erstellen
fehler
fehlermeldung
feld
fertigkeit
frage
funktion
kaserne
log
problem
speichern
spieler
stall
verbindung
-
<?php $verbindung = mysql_connect("mysql.lima-city.de", "USER181220", "***l") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db_181220_1") or die ("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $hauptgebaude = "1"; $kaserne = "0"; $stall = "0"; if($passwort != $passwort2 OR $username == "" OR $passwort == "") { echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"anmelden.html\">Zurück</a>"; exit; } $passwort = md5($passwort); $fertigkeit = "5"; $result = mysql_query("SELECT id FROM spieler WHERE username LIKE '$username'"); $menge = mysql_num_rows($result); if($menge == 0) { $eintrag = "INSERT INTO spieler (username, passwort, fertigkeit) VALUES ('$username', '$passwort', '$fertigkeit')"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo '...'; } else { echo "Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"; } } else { echo "Benutzername schon vorhanden. <a href=\"anmelden.html\">Zurück</a>"; } if($passwort != $passwort2 OR $username == "" OR $passwort == "") { echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"anmelden.html\">Zurück</a>"; exit; } $result = mysql_query("SELECT id FROM spieler WHERE username LIKE '$username'"); $menge = mysql_num_rows($result); if($menge == 0) { $eintrag = "INSERT INTO gebaude (username, hauptgebaude, kaserne, stall) VALUES ('$username', '$hauptgebaude', '$kaserne', '$stall')"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo '<meta http-equiv="refresh" content="1; URL=login.html"><font color="#FFFFFF">Moment Sie werden weitergeleitet.</font>'; } else { echo "Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"; } } else { echo "Benutzername schon vorhanden. <a href=\"anmelden.html\">Zurück</a>"; } ?>
hab ich hier einiges zu viel oder ist es so in ordnung?
Beitrag zuletzt geändert: 24.4.2010 9:35:08 von aplikon -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich nehme an, dass sich deine Frage auf meine Antwort zu deinem letzten Thema bezieht ;) Ich schaue mir deinen Code gleich mal an, und "Faboize" ihn =)
---------
Edit:
<?php $verbindung = @mysql_connect("mysql.lima-city.de", "********", "*******") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); @mysql_select_db("db_181220_1") or die("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = md5($_POST["passwort"]); $passwort2 = md5($_POST["passwort2"]); $hauptgebaude = "1"; $kaserne = "0"; $stall = "0"; $fertigkeit = "5"; if ($passwort != $passwort2 || empty($username) || empty($passwort)) { die("Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"anmelden.html\">Zurück</a>"); } $result = @mysql_query("SELECT id FROM spieler WHERE username = '".$username."'"); if (@mysql_num_rows($result) >= 1) { die("Benutzername schon vorhanden. <a href=\"anmelden.html\">Zurück</a>"); } @mysql_query("INSERT INTO spieler (username, passwort, fertigkeit) VALUES ('".$username."', '".$passwort."', '".$ferftigkeit."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"); @mysql_query("INSERT INTO gebaude (username, hauptgebaude, kaserne, stall) VALUES ('".$username."', '".$hauptgebaude."', '".$kaserne."', '".$stall."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"); echo '<meta http-equiv="refresh" content="1; URL=login.html"><font color="#FFFFFF">Moment, Sie werden weitergeleitet.</font>'; ?>
Du hast in deinem Code mehrere Dinge unnötig doppelt.
Und nimm dein Datenbank-Passwort aus deinem Code!!!!
Beitrag zuletzt geändert: 23.4.2010 23:48:09 von fabo -
@mysql_query("INSERT INTO spieler (username, passwort, fertigkeit) VALUES ('".$username."', '".$passwort."', '".$ferftigkeit."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"); @mysql_query("INSERT INTO gebaude (username, hauptgebaude, kaserne, stall) VALUES ('".$username."', '".$hauptgebaude."', '".$kaserne."', '".$stall."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>");
was sollen eigentlich die @ vor dem mysql_query? -
aplikon schrieb:
was sollen eigentlich die @ vor dem mysql_query?
hallo aplikon,
durch ein @ vor einem PHP-Befehl, werden eventuelle Fehlermeldungen unterdrückt. D.h. wenn ein Fehler auftritt, tut er das zwar, aber man sieht es nicht sofort
gruß, djfun -
djfun schrieb:
aplikon schrieb:
was sollen eigentlich die @ vor dem mysql_query?
hallo aplikon,
durch ein @ vor einem PHP-Befehl, werden eventuelle Fehlermeldungen unterdrückt. D.h. wenn ein Fehler auftritt, tut er das zwar, aber man sieht es nicht sofort
gruß, djfun
also wenn ich sie wegmache ändert sich nur dass es keine fehler unterdrückung gibt?
weil so erfahren bin ich nicht und eine fehlermeldung ist für mich wichtig da ich oft was falsch mache und dann es wieder richtig machen muss bzw durch fehler weiß wo ich es machen muss...
jetzt speichert er die fertigkeit in der db leer woran könnte es liegen? -
aplikon schrieb:
jetzt speichert er die fertigkeit in der db leer woran könnte es liegen?
An einem Rechtschreibfehler: $ferftigkeit -
aso ok ich habe noch eine frage und zwar werd ich demnächst immer mal eine f rage haben soll ich dafür jedesmal für jedes thema ein neues tread öffnen? oder kann ich sie alle in einem thema schreiben?
-
Wenns kein anderes Thema ist sondern um deine Webseite geht, dann kannst du es auch gerne hier reinschreiben. Wenn ers allerdings ein ganz anderes THema ist, dann darfst du auch gerne ein neues Theme eröffnen.
-
gut:) ne geht um mein Website...
-
@fabo:
$passwort = md5($_POST["passwort"]); // [...] if ($passwort != $passwort2 || empty($username) || empty($passwort)) {
md5('') ist ein 32 Zeichen langer String. Somit wird empty($passwort) nicht greifen. Das md5 wendest du am besten erst beim Schreiben in die Datenbank über MD5() an, dann vermeidest du solche Fehler ;) -
hmm... jetzt weiß ich dann nicht mehr wo dass md5 hinkommen muss... kannst du mir vlt weiterhelfen?
-
bischen unglücklich in dem Beispiel ist
$passwort = md5($_POST["passwort"]);
weil gleicher Name
besser so:
$passgeheim = md5($_POST["passwort"]);
und $passwort2 ist das als MD5 gespeicherte User-Passwort
Frage:
wie kann ich eine Verschlüsselung mit einem eigenen Secret-Key machen,
also so dass man zum ent-schlüsseln diesen Key (String/Zeichenkette) braucht ?
-
nikic schrieb:
@fabo:
$passwort = md5($_POST["passwort"]); // [...] if ($passwort != $passwort2 || empty($username) || empty($passwort)) {
md5('') ist ein 32 Zeichen langer String. Somit wird empty($passwort) nicht greifen. Das md5 wendest du am besten erst beim Schreiben in die Datenbank über MD5() an, dann vermeidest du solche Fehler ;)
Stimmt, da hab ich nicht aufgepasst :) Eifer des Gefechts halt...
@gospielen
Die doppelte Deklaration ist kein Problem, da es nur einmal verwendet wird. Zu der Frage mit der Ver/-Entschlüsselung am besten ein neues Thema erstellen :)
@aplikon
Das mit dem @ vor den MySQL Anweisungen ist wie bereits erwähnt wurde, um unschöne MySQl-Fehlermeldungen zu verhindern. Tritt ein Fehler auf, wird nur der durch or die() definierte Fehlertext ausgegeben. Finde ich etwas schicker, als die üblichen MySQL-Fehlermeldungen. Sollte jedoch ein unerwartetes Problem auftreten und sich nicht finden lassen, kannst du das @ entfernen und schauen, welche Fehlermeldung MySQL ausspuckt.
Hier dann nochmal die "korrigierte Version":
<?php $verbindung = @mysql_connect("mysql.lima-city.de", "********", "*******") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); @mysql_select_db("db_181220_1") or die("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $hauptgebaude = "1"; $kaserne = "0"; $stall = "0"; $fertigkeit = "5"; if ($passwort != $passwort2 || empty($username) || empty($passwort)) { die("Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"anmelden.html\">Zurück</a>"); } $result = @mysql_query("SELECT id FROM spieler WHERE username = '".$username."'"); if (@mysql_num_rows($result) >= 1) { die("Benutzername schon vorhanden. <a href=\"anmelden.html\">Zurück</a>"); } @mysql_query("INSERT INTO spieler (username, passwort, fertigkeit) VALUES ('".$username."', '".md5($passwort)."', '".$fertigkeit."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"); @mysql_query("INSERT INTO gebaude (username, hauptgebaude, kaserne, stall) VALUES ('".$username."', '".$hauptgebaude."', '".$kaserne."', '".$stall."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"); echo '<meta http-equiv="refresh" content="1; URL=login.html"><font color="#FFFFFF">Moment, Sie werden weitergeleitet.</font>'; ?>
-
fabo schrieb:
nikic schrieb:
@fabo:
$passwort = md5($_POST["passwort"]); // [...] if ($passwort != $passwort2 || empty($username) || empty($passwort)) {
md5('') ist ein 32 Zeichen langer String. Somit wird empty($passwort) nicht greifen. Das md5 wendest du am besten erst beim Schreiben in die Datenbank über MD5() an, dann vermeidest du solche Fehler ;)
Stimmt, da hab ich nicht aufgepasst :) Eifer des Gefechts halt...
@gospielen
Die doppelte Deklaration ist kein Problem, da es nur einmal verwendet wird. Zu der Frage mit der Ver/-Entschlüsselung am besten ein neues Thema erstellen :)
@aplikon
Das mit dem @ vor den MySQL Anweisungen ist wie bereits erwähnt wurde, um unschöne MySQl-Fehlermeldungen zu verhindern. Tritt ein Fehler auf, wird nur der durch or die() definierte Fehlertext ausgegeben. Finde ich etwas schicker, als die üblichen MySQL-Fehlermeldungen. Sollte jedoch ein unerwartetes Problem auftreten und sich nicht finden lassen, kannst du das @ entfernen und schauen, welche Fehlermeldung MySQL ausspuckt.
Hier dann nochmal die "korrigierte Version":
<?php $verbindung = @mysql_connect("mysql.lima-city.de", "********", "*******") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); @mysql_select_db("db_181220_1") or die("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $hauptgebaude = "1"; $kaserne = "0"; $stall = "0"; $fertigkeit = "5"; if ($passwort != $passwort2 || empty($username) || empty($passwort)) { die("Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"anmelden.html\">Zurück</a>"); } $result = @mysql_query("SELECT id FROM spieler WHERE username = '".$username."'"); if (@mysql_num_rows($result) >= 1) { die("Benutzername schon vorhanden. <a href=\"anmelden.html\">Zurück</a>"); } @mysql_query("INSERT INTO spieler (username, passwort, fertigkeit) VALUES ('".$username."', '".md5($passwort)."', '".$fertigkeit."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"); @mysql_query("INSERT INTO gebaude (username, hauptgebaude, kaserne, stall) VALUES ('".$username."', '".$hauptgebaude."', '".$kaserne."', '".$stall."')") or die("Fehler beim Speichern des Benutzernames. <a href=\"anmelden.html\">Zurück</a>"); echo '<meta http-equiv="refresh" content="1; URL=login.html"><font color="#FFFFFF">Moment, Sie werden weitergeleitet.</font>'; ?>
ja ok thx:) -
So wie es mir aussieht, baust du da ein eigenes Browsergame. Für den Fall, dass es du Teile schon online stellst würden ich dir folgendes raten:
ini_set('error_reporting', E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', 'MEINE_LOG_DATEI.log');
Damit werden alle Fehler in eine Logdatei geschrieben und dem User nicht angezeigt (sieht hässlich aus, wenn deine "Kunden" Fehlermeldungen sehen). -
midwar schrieb:
So wie es mir aussieht, baust du da ein eigenes Browsergame. Für den Fall, dass es du Teile schon online stellst würden ich dir folgendes raten:
ini_set('error_reporting', E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', 'MEINE_LOG_DATEI.log');
Damit werden alle Fehler in eine Logdatei geschrieben und dem User nicht angezeigt (sieht hässlich aus, wenn deine "Kunden" Fehlermeldungen sehen).
gut erkannt ja ich bau nen browsergame naja versuche es zumindenst... wird schon gehen habe ja euch bei fragen...
hmm.. wohin muss jetzt der code eig? in jeder d atei ganz unten? und muss ich die Meine-log-dtei.log selber erstellen oder tut der server es automatisch? -
Der Code sollte bzw. wird direkt nach <? eingefügt.
Die Datei musst du selbst erstellen und mit Chmod 777 versehen, damit der Server die Datei beschreiben kann. Zumindest glaube ich, mich dunkel daran zu erinnern. -
fabo schrieb:
Der Code sollte bzw. wird direkt nach <? eingefügt.
Die Datei musst du selbst erstellen und mit Chmod 777 versehen, damit der Server die Datei beschreiben kann. Zumindest glaube ich, mich dunkel daran zu erinnern.
wie gebe ich der datei im webftp von lima-city die rechte 777? -
Entschuldige, wenn ich das jetzt sage, aber ein bisschen kannst du auch deinen eigenen Kopf benutzen... Schau dir die Funktionen im Filemanager mal genau an.
-
fabo schrieb:
Entschuldige, wenn ich das jetzt sage, aber ein bisschen kannst du auch deinen eigenen Kopf benutzen... Schau dir die Funktionen im Filemanager mal genau an.
no problem hast ja auch recht...
nur bearbeite ich die datein auf dem pc und lad sie eig nur hoch und daher hatte ich gefragt,
aber jetzt weiß ich es schon mitlerweile... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage