Umlaute und Sonderzeichen in Datenbank schreiben und abrufen

ok das mysql_real_escape_string hab ich eingefügt danke für die Anmerkung:)
die Variablen Summe und Ergebnis sind Teil einer kleinen Rechenaufgabe als einfachen Spamschutz der Teil kommt aber am Ende eh raus, da ich das ganze in ein Clanscript integrieren will. Die Rechenaufgabe bleibt also nur während der Testphase bis das Script soweit funktioniert drin.
 
Dann die Stellen mit Ausgabe von $name.
Die sind eigentlich in Ordnung, nur theoretisch:
Falls man weiter oben noch kein htmlspecialchars gemacht hat
(und die Werte unbehandelt in die DB geinsertet hat)
sollte man es jetzt machen. zB.
PHP:
echo htmlspecialchars($name, ENT_QUOTES) . " wurde in die Datenbank eingetragen<br>";

Und noch diese Zeile:
PHP:
if ($eintragen = mysql_query($eintrag)OR die(mysql_error()))
Bin mir grad nicht sicher, ob das mit dem if überhaupt funktionieren kann,
aber da ist sowieso Aufräumbedarf.
a) Die Variable eintragen wird nie wieder gebraucht.
Warum also überhaupt anlegen? Weg damit.
b) Das "or die..." ist schon eine Fehlerbehandlung.
Das ganze "if...OK else...nicht korrekt" ist überflüssig (und wird auch nie ausgeführt werden)
Wenn ein Fehler aufgetreten ist, wird durch das die eine MySQL-Fehlermeldung ausgegeben und dann das ganze PHP-Script beendet. Zu deiner eigenen Fehlermeldung kommt es nie.
Also nur die eine Zeile ohne if(), und wenn man will noch die Erfolgsmeldung danach.
PHP:
mysql_query($eintrag) OR die(mysql_error());
echo "Alles OK.";
c) Während dem Programmieren ist die(mysql_error()) in Ordnung.
Aber wenns fertig ist: Weg damit.
Falls die Seite öffentlich ist und mal ein Fehler passiert sieht irgendein Mensch
Infos über deine DB, die ihn nichts angehen.
Könnten sogar bei einem Angriff auf die Seite helfen.
PHP:
mysql_query($eintrag) OR die("Es ist ein Fehler aufgetreten");
echo "Alles OK.";

Script 2 wird auch noch angeschaut...

genreauswahl.php
$_SESSION['name']
Im ersten Script hast du da was reingeschrieben und willst es jetzt wieder verwenden. Gut.
Aber was passiert, wenn der Benutzer direkt die zweite Seite aufruft,
ohne die erste angeschaut zu haben?
Dann gibts kein $_SESSION['name'] und irgendwas wird daneben gehen.
Das könnte man am Anfang überprüfen:
PHP:
if(!isset($_SESSION['name']))
{
    die("Kein Sessionname!");
}

Dieses Zeug: &auml;
Nicht falsch, aber wenn man die PHP-Datei als UTF8 abspeichert
könnte man auch einfach ä schreiben.


Und die <input type="hidden"> sind wieder sicherheitsmäßig schlecht.
Die kann jeder Benutzer nach Belieben beeinflussen.
Wenn auf die Weise Preise bei Amazon zwischengespeichert würden
hätte ich schon oft um 0€ eingekauft...
Dafür gibts doch SESSION. Da passt mehr rein als nur der Name.
Also nicht am Ende destroyen, sondern weiterverwenden.

So. Mehr seh ich zu dieser Uhrzeit nicht mehr :D

Gruß
 
Vielen Dank für deine Mühe:) Wenn das in Ordnung ist würde ich das Thema hier als erledigt ansehen und dir morgen noch einmal den von mir bereinigten Quelltext per PN schicken:) Hab auf jeden Fall einige Denkanstöße mitbekommen, an die Session hab ich zB garnicht mehr weiter gedacht*gg*
 
So nach tatkräftiger Hilfe von sheel habe ich nun im Anhang das komplette funktionierende Script. Einzig die mysqlconnect.inc.php ist nicht in der zip;)

Funktionen:
Passwortschutz über eine Session md5() verschlüsselt.
Eintragen von Interpreten und zugehöriger Wikipedia Seiten
zuordnen von einem oder mehrerer Genre zu den Interpreten

noch geplant:
Veröffentlichungen der Interpreten eintragen
Tracklist der einzelnen CDs
Cover aus ASIN Nummer der Veröffentlichungen von Amazon beziehen
Verlinkung mit Amazon PartnerID
und natürlich eine schöne Ausgabe des ganzen:)

Ich weiß nicht ob das ganze jetzt noch in diesem Thread richtig ist, allerdings würde ich einfach mal in die Runde fragen, ob es jemanden gibt, der generell mir bei der Weiterentwicklung des ganzen ein wenig zur Hand gehen würde und mir einige Anfängerfragen beantworten kann? Evtl auch wie ich das alles richtig durchkommentiere usw.
Bisher habe ich doch eher "Laienhafte" Sachen gemacht und möchte dass nun doch ein wenig professioneller alles hinbekommen.

Liebe Grüße
Dj Malcolm
 

Anhänge

Zurück