Lion_in_love - 37
Profi
(offline)
Dabei seit 06.2006
692
Beiträge
|
|
Geschrieben am: 25.03.2008 um 00:45 Uhr
|
|
Hallo, vielleicht kann mir einer von euch helfen...was ist an diesem code schnippsel falsch?
Zitat: <?php
if (isset($_POST['submit'])) {
$sql = "INSERT INTO guestbook
(Name, Email, Homepage, text)
VALUES ('$newname', '$email', '$url', '$content')";
if (mysql_query($sql)) {
echo "<div class=\"eintrag\">Gästebuch eintrag erfolgreich eingetragen!</div>";
}
?>
ich weiß im mom nicht wo der fehler liegt....
Ich bin keine Fußzeile, ich putz hier nur!
|
|
rochus - 41
Profi
(offline)
Dabei seit 10.2004
536
Beiträge
|
|
Geschrieben am: 25.03.2008 um 00:52 Uhr
|
|
Geht die Zeile $sql = ... wirklich über mehrere Zeilen, oder sieht das auf TU hier nur so aus?
Dann: ich bin mir nicht sicher wie das in PHP genau ist, aber wenn du innerhalb von "" ein '$foobar' machst, dann wird $foobar eventuell nicht evaluiert (ist in manchen anderen Sprachen so). Sprich, mach dein $sql mal so:
$sql = "INSERT .... VALUES ('".$newname."', '".$email...
Dann: du wählst zwar $newname, $email, $url und $content, hast die aber zuvor nicht zugewießen. Die musst du wohl schon auch noch aus dem HTTP Header auslesen.
Grüße
bashian roulette: $ ((RANDOM%6)) || rm -rf /
|
|
rochus - 41
Profi
(offline)
Dabei seit 10.2004
536
Beiträge
|
Geschrieben am: 25.03.2008 um 00:54 Uhr
Zuletzt editiert am: 25.03.2008 um 00:56 Uhr
|
|
achja, gleich noch ein Tipp am Rande: überprüf deinen Inhalt auf schädlichen code (Sprich: Hochkommata, HTML, sonst was). Man könnte bei dir nämlich sonst als eines der Felder sowas eingeben:
"); DROP TABLE guestbook;
und schon sind die Daten futsch.
edit: Bester Weg, um solche Art von Gefahrenquellen auszuschließen sind Prepared Statements. Mehr dazu gibt es hier und hier
bashian roulette: $ ((RANDOM%6)) || rm -rf /
|
|
rochus - 41
Profi
(offline)
Dabei seit 10.2004
536
Beiträge
|
|
Geschrieben am: 25.03.2008 um 01:02 Uhr
|
|
Du hast außerdem ein schließendes } vergessen.
bashian roulette: $ ((RANDOM%6)) || rm -rf /
|
|
scheyem - 36
Champion
(offline)
Dabei seit 10.2004
5393
Beiträge
|
|
Geschrieben am: 25.03.2008 um 08:40 Uhr
|
|
Das einzigste was an dem Falsch ist, ist das fehlende } um die If Bedienung zu schließen.
<?php
if (isset($_POST['submit'])) {
$sql = "INSERT INTO guestbook
(Name, Email, Homepage, text)
VALUES ('$newname', '$email', '$url', '$content')";
} <-------------------------------------------------------------das Fehlte
if (mysql_query($sql)) {
echo "<div class=\"eintrag\">Gästebuch eintrag erfolgreich eingetragen!</div>";
}
?>
Und die Values müssen natürlich auch defeniert sein
Techno 4ever
|
|
Ramp - 46
Fortgeschrittener
(offline)
Dabei seit 01.2008
32
Beiträge
|
Geschrieben am: 25.03.2008 um 08:53 Uhr
Zuletzt editiert am: 25.03.2008 um 08:58 Uhr
|
|
Wenn du in einem String (in deinem Beispiel SQL-String) eine Variable einfügen willst, musst du vor und nach der Variable einen Punkt "." machen...
Bsp:
$sql = "SELECT * FROM Tabelle WHERE id = ". $id .";
//Es ist nicht zwingend nötig, den o.g. Values ein Wert zu zuweisen, da diese den Standard Wert NULL haben. Wenn du in deiner Datenbank bei den Feldern nicht ausdrücklich "NOT NULL" eingestellt hast, sollte der Eintrag auch gehen ohne das die Variablen Werte enthalten.
KERNEL PANIC - /proc/driver/brain : no such file or directory
|
|
rochus - 41
Profi
(offline)
Dabei seit 10.2004
536
Beiträge
|
|
Geschrieben am: 25.03.2008 um 09:12 Uhr
|
|
Zitat von scheyem: Das einzigste was an dem Falsch ist, ist das fehlende } um die If Bedienung zu schließen.
<?php
if (isset($_POST['submit'])) {
$sql = "INSERT INTO guestbook
(Name, Email, Homepage, text)
VALUES ('$newname', '$email', '$url', '$content')";
} <-------------------------------------------------------------das Fehlte
if (mysql_query($sql)) {
echo "<div class=\"eintrag\">Gästebuch eintrag erfolgreich eingetragen!</div>";
}
?>
Du hast es fehlplatziert...
bashian roulette: $ ((RANDOM%6)) || rm -rf /
|
|
Ramp - 46
Fortgeschrittener
(offline)
Dabei seit 01.2008
32
Beiträge
|
|
Geschrieben am: 25.03.2008 um 09:26 Uhr
|
|
Nimm den Code:
<?php
if (isset($_POST['submit'])){
$sql = "INSERT INTO guestbook (Name, Email, Homepage, text) VALUES ('".$newname."','".$email."','".$url."','".$content."');"};
if (mysql_query($sql)) {
echo "<div class='eintrag'>Gästebucheintrag erfolgreich eingetragen!</div>";
}
?>
/* Die Zuweisung der SQL Variable in eine Linie schreiben */
KERNEL PANIC - /proc/driver/brain : no such file or directory
|
|
rochus - 41
Profi
(offline)
Dabei seit 10.2004
536
Beiträge
|
|
Geschrieben am: 25.03.2008 um 09:30 Uhr
|
|
Zitat von Ramp: Nimm den Code:
Auch der hat den Fehler mit dem } an der falschen Stelle... man man man
bashian roulette: $ ((RANDOM%6)) || rm -rf /
|
|
scheyem - 36
Champion
(offline)
Dabei seit 10.2004
5393
Beiträge
|
|
Geschrieben am: 25.03.2008 um 09:42 Uhr
|
|
Zitat von rochus: Zitat von Ramp: Nimm den Code:
Auch der hat den Fehler mit dem } an der falschen Stelle... man man man wenn du so klug bisch dann sag du mir mal wo du die Klammer hin tuhen würdest
Techno 4ever
|
|
scheyem - 36
Champion
(offline)
Dabei seit 10.2004
5393
Beiträge
|
|
Geschrieben am: 25.03.2008 um 09:59 Uhr
|
|
if (isset($_POST['submit]) {
$sql = "INSERT INTO guestbook
(Name, Email, Homepage, text)
VALUES ('$newname', '$email', '$url', '$content')";
if (mysql_query($sql)) {
echo "<div class=\"eintrag\">Gästebuch eintrag erfolgreich eingetragen!</div>";
}
}
Oder man nehme so. Bei mir funktionierts auf jedenfall
Techno 4ever
|
|
Ramp - 46
Fortgeschrittener
(offline)
Dabei seit 01.2008
32
Beiträge
|
Geschrieben am: 25.03.2008 um 10:12 Uhr
Zuletzt editiert am: 25.03.2008 um 10:13 Uhr
|
|
Zitat von rochus: achja, gleich noch ein Tipp am Rande: überprüf deinen Inhalt auf schädlichen code (Sprich: Hochkommata, HTML, sonst was). Man könnte bei dir nämlich sonst als eines der Felder sowas eingeben:
"); DROP TABLE guestbook;
und schon sind die Daten futsch.
edit: Bester Weg, um solche Art von Gefahrenquellen auszuschließen sind Prepared Statements. Mehr dazu gibt es hier und hier
Und diese SQL Injection würde auch nicht gehen!
man man man
KERNEL PANIC - /proc/driver/brain : no such file or directory
|
|
rochus - 41
Profi
(offline)
Dabei seit 10.2004
536
Beiträge
|
|
Geschrieben am: 25.03.2008 um 10:25 Uhr
|
|
Zitat von scheyem: Oder man nehme so. Bei mir funktionierts auf jedenfall 
Geht doch ;)
Zum Thema SQL Injection: viel ist's nicht mehr, bis sie tut. Es war auch eher so gedacht, dass er sich zu dem Thema einfach mal Gedanken macht.
bashian roulette: $ ((RANDOM%6)) || rm -rf /
|
|
Ramp - 46
Fortgeschrittener
(offline)
Dabei seit 01.2008
32
Beiträge
|
|
Geschrieben am: 25.03.2008 um 10:40 Uhr
|
|
Zitat von rochus: ....viel ist's nicht mehr, bis sie tut....
Ist bei meinem o.g. Code das gleiche, hab halt die SQL-Query nicht in die Bedingung eingeschlossen.
Doch leider unterstützt das TU-Forum keinerlei Syntax Highlithing, wie es bei anderen Boards Standard ist. Dann wäre das ganze auch schön übersichtlich...
Zum Thema Injection usw. ist auch diese Seite gut: Milw0rm
KERNEL PANIC - /proc/driver/brain : no such file or directory
|
|
scheyem - 36
Champion
(offline)
Dabei seit 10.2004
5393
Beiträge
|
Geschrieben am: 25.03.2008 um 10:51 Uhr
Zuletzt editiert am: 25.03.2008 um 10:51 Uhr
|
|
Zitat von rochus: Zitat von scheyem: Oder man nehme so. Bei mir funktionierts auf jedenfall 
Geht doch ;)
Zum Thema SQL Injection: viel ist's nicht mehr, bis sie tut. Es war auch eher so gedacht, dass er sich zu dem Thema einfach mal Gedanken macht. Es funktioniert beides.
Und diese "." braucht man nicht. Ist eher umständlich und unübersichtlich meienr Meinung nach.
Techno 4ever
|
|
rochus - 41
Profi
(offline)
Dabei seit 10.2004
536
Beiträge
|
|
Geschrieben am: 25.03.2008 um 10:56 Uhr
|
|
Zitat von Ramp: Zum Thema Injection usw. ist auch diese Seite gut: Milw0rm
Oder das hier
bashian roulette: $ ((RANDOM%6)) || rm -rf /
|
|