Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

PHP - Code

  -1- -2- vorwärts >>>  
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 :-P

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 /

  -1- -2- vorwärts >>>
 

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -