Eintrag in Datenbank

Das würde ich nicht unbedingt sagen :eek:

Solch eine Fehlerbehandlung dient ja nicht nur dem Debuggen während der Entwicklung, sondern auch der Steuerung des Programmablaufs während des Produktiv-Einsatzes.
Und im letzteren Fall ist man nicht schlecht beraten, wenn man dem User nicht allzuviele Details verrät...genau dies tut mysql_error() jedoch
Da das Skript aber offensichtlich noch in der Entwicklung ist, würde ich schon zu der "richtigen" Fehlermeldung tendieren. Im Produktiveinsatz sollte man das dann wieder entschärfen.
Ich habe auch das Gefühl, dass er diese Funktion noch nicht kannte, sonst wäre er evt. selbst über den Fehler gestolpert, bzw wüsste mehr dazu, warum es zum Fehler kommt, da er anscheindend schon eine Weile auf der Suche danach ist.
 
Wenn, dann korrigieren wir das Ding doch gleich komplett:

PHP:
mysql_query("INSERT INTO `meineseite`.`user login` (`name` ,`psw`) VALUES ('" + mysql_real_escape_string($name) + "', '" + mysql_real_escape_string($psw) + "')")

Das ist aber kein JS ;D

richtig wäre es:

PHP:
mysql_query("INSERT INTO meineseite . user login ('name' ,'psw') VALUES ('" . mysql_real_escape_string($name) . "', '" . mysql_real_escape_string($psw) . "')")

(Wobei ich die Variabnte mit dem + nicht kenne...das wird aber so etwas wie "<?=" sein).....das Passwort würde ich gleich (mind.) md5-Hashen, besser wäre sha256
 
Vielen dank an alle die versucht haben mir zu helfen :)

Ich hab das jetzt gemacht wie benjava es geschrieben hatte, und es klappt auch einwandfrei aber vieleicht könnte mir jemand noch erklären was

Code:
mysql_real_escape_string($name)

genau macht.
 
Du solltest bei deinem Verbesserungsvorschlag wieder die Backticks einfügen, da es sonst, wie oben vermerkt, zu einem weiteren Problem kommt, das bisher noch nicht bestand ;)

Edit: Nanana, nicht dawischendrängeln :D

Edit2:
PHP-Manual
Es werden bestimmte Zeichen escapt, wie z.B. Anführungszeichen.
 
Du solltest bei deinem Verbesserungsvorschlag wieder die Backticks einfügen, da es sonst, wie oben vermerkt, zu einem weiteren Problem kommt, das bisher noch nicht bestand ;)

Edit: Nanana, nicht dawischendrängeln :D

Edit2:
PHP-Manual
Es werden bestimmte Zeichen escapt, wie z.B. Anführungszeichen.

Bei Mysql macht das nichts...erst wenn ein anderer SQL-Layer (MS-SQL oder sowas) ins Spiel kommt ;)

Da machen die Backticks eventuell sogar Probleme (Meine Möglichkeit dann auch) :)
 
Wenn, dann korrigieren wir das Ding doch gleich komplett:

PHP:
mysql_query("INSERT INTO `meineseite`.`user login` (`name` ,`psw`) VALUES ('" + mysql_real_escape_string($name) + "', '" + mysql_real_escape_string($psw) + "')")
Leute Leute....
Wenn Ihr schon meint euren Senf zuzugeben dann bitte auch richtig und nicht fehlerhaftes Zeug posten das verwirrt.
Ich habe es an anderer Stelle schonmal gesagt es bringt nichts den leuten die es gerade lernen mit code optimierung zu kommen das verwirrt Sie nur wie man hier im Beispiel sieht.
Wenn man schon meint den Code zu optimieren dann muss man aber auch was dazu sagen und es nicht einfach nur hinzuklatschen. Davon lernen die Leute sonst nichts.

mysql_real_escape_string verhindert das eine SQL Injection abgesetzt werden kann. Es ist eine optimierung der Sicherheit denn durch spezielle Usereingaben kann man die Datenbank manipulieren wenn variablen nicht escaped werden.
http://php.net/manual/de/function.mysql-real-escape-string.php
 
Leute Leute....
Wenn Ihr schon meint euren Senf zuzugeben dann bitte auch richtig und nicht fehlerhaftes Zeug posten das verwirrt.
Ich habe es an anderer Stelle schonmal gesagt es bringt nichts den leuten die es gerade lernen mit code optimierung zu kommen das verwirrt Sie nur wie man hier im Beispiel sieht.
Wenn man schon meint den Code zu optimieren dann muss man aber auch was dazu sagen und es nicht einfach nur hinzuklatschen. Davon lernen die Leute sonst nichts.

mysql_real_escape_string verhindert das eine SQL Injection abgesetzt werden kann. Es ist eine optimierung der Sicherheit denn durch spezielle Usereingaben kann man die Datenbank manipulieren wenn variablen nicht escaped werden.
http://php.net/manual/de/function.mysql-real-escape-string.php

Das "+" in der Query wurde doch schon längst verbessert ;)
Ich arbeite (in der Regel) nicht mit "mysql_real_escape_string", weil ich mir ein AddSlashes selber gebaut habe, das selbst die Vars innerhalb von Arrays bearbeiten kann...ich weiss nur, das es auch ein "mysql_escape_string" gibt...aber welcher von den beiden jetzt aktueller ist oder sowas, kann ich nicht sagen.....ich arbeite ja nicht damit ;)

Zumindest war der obere Lösungsansatz schon ein schritt in die richtige Richtung, denn die Form-Vars komplett ohne Escapen in die DB bringen, dürfte wohl schon seit längeren ein "no-go" sein ;)
 
[phpf]mysql_real_escape_string[/phpf] ist die aktuelle Variante. Warum man diese Funktion eingeführt hat und den Fehler nicht in [phpf]mysql_escape_string[/phpf] korrigiert hat, weiß ich nicht.
Übrigens, [phpf]mysql_real_escape_string[/phpf] ist mehr als nur [phpf]addslashes[/phpf] ;)

Noch schöner wäre es natürlich mit PHP5 auf [wiki]Prepared Statement[/wiki]s zu wechseln.

Entweder mit MySQLi oder mit PDO.
 
Das "+" in der Query wurde doch schon längst verbessert ;)
Ich arbeite (in der Regel) nicht mit "mysql_real_escape_string", weil ich mir ein AddSlashes selber gebaut habe, das selbst die Vars innerhalb von Arrays bearbeiten kann...ich weiss nur, das es auch ein "mysql_escape_string" gibt...aber welcher von den beiden jetzt aktueller ist oder sowas, kann ich nicht sagen.....ich arbeite ja nicht damit ;)

Zumindest war der obere Lösungsansatz schon ein schritt in die richtige Richtung, denn die Form-Vars komplett ohne Escapen in die DB bringen, dürfte wohl schon seit längeren ein "no-go" sein ;)
Alles schön und gut.
Auchin meinen Scripten sind Sicherheitsaspekte wichtig aber wie ich bereits gesagt habe es passt einfach nicht die hier nur vor zusetzen ohne einen Piep dazu zu sagen. Und auch wenn die + schon verbessert waren ich finde man muss trotzdem generell mal was dazu sagen denn es fiel mir nicht nur bei dir auf.
Ich bleibe dabei wenn die User nach Hilfe fragen ist es besser einfachere Hilfe zu leisten als den User mit mehr Information zu verwirren.
Und nun Back2Topic. Wenn du anderer Ansicht bist können wir gerne per PM diskutieren.
 
Zurück