Seite 1 von 2

If($submit) will nicht gehen

Verfasst: 18.01.2005 22:07
von ct-ac
Hi@all,

Bin langsam am verzweifeln.
Habe eine in phpBB eingebundene Seite.
Diese funktioniert auch.
Nun habe ich eine Abfrage gemacht:

Code: Alles auswählen

if ( $userdata['session_logged_in'] )
{
    if ($submit)
    {
     $news_titel = $HTTP_POST_VARS["news_titel"];
     $news_inhalt = $HTTP_POST_VARS["news_inhalt"];
     $timestamp = time();
     $news_tag=date("d.m.Y",$timestamp);
     $news_zeit=date("h:i",$timestamp);
     $news_gesamt = "$news_tag, $news_zeit";

     $news_eintrag = "INSERT INTO news (titel, datum, text) VALUES ('$news_titel', '$news_gesamt', '$news_inhalt')";
     $news_eintragen = mysql_query($news_eintrag);

     echo "News erfolgreich eingetragen";
    }
    else
    {
     echo "
            <form method=\"post\" action=\"test.php\">
            Titel :<br>
            <input type=\"text\" name=\"news_titel\"><p>News:<br>
            <textarea rows=\"12\" name=\"news_inhalt\" cols=\"42\"></textarea><br>
            <br>
            <input type=\"submit\" name=\"submit\" value=\"News eintragen\">
            </form>
          ";
    }
}
else
{
    // Code, wenn kein Benutzer angemeldet ist
}
?>
Wenn ich die Seite aufrufe kommt das Formular.
Fülle ich es jetzt aus und sende es ab kommt trotz der if schleife das Formular wieder und die If($submit) wird gar nicht beachtet.
Mache ich die Afrage in eine Seite die nicht in phpBB eingebunden ist funktionierts.

Wo ist da der Hacken ?

Verfasst: 18.01.2005 22:13
von JumpinJack
Also ich habe ja lange nichts mehr in php programmiert, aber was soll denn das für eine if-abfrage sein?

If (Variabe) dann

Was wird denn in der Klammer geprüft?

Evtl meinst du ein isset($submit) oder was auch immer?!

Verfasst: 18.01.2005 22:14
von ct-ac
Da wird geprüft ob das Formular durch den Button submit abgeshcickt wurde.

Verfasst: 18.01.2005 22:20
von JumpinJack
Hm das glaube ich nicht. Da steh auf deutsch:

Wenn ($Submit) dann mach das und das.

Aber was oder wie soll $submit sein? Da sehe ich keine Bedinung. Also Versuchs mit isset($submit), aber selbst das muss noch nicht klappen. Hast du die Variable auch am Anfang des Scriptes auch aus den $_post oder $_get Varialben ausgelesen?

Verfasst: 18.01.2005 22:25
von larsneo
selbst wenn das formular funktionieren würde, wäre es eine ganz schlechte idee.
ganz wichtige grundregel: niemals GPC-daten ungeprüft übernehmen - man öffnet sql-injections tür und tor :roll:

Verfasst: 18.01.2005 22:30
von ct-ac
So jetzt klappt es.

@JumpinJack danke für die Hilfe habe vergessen am Anfang die Variable mit post abzufragen, jetzt funktioniert es. ( mit if(&submit) )

@larsneo wie meinst du das ?
Ich kenne mich mit mySQL noch nicht aus, wie könnte ich die den Überprüfen ?
Oder wie würdest du das jetzt machen ?

Verfasst: 18.01.2005 22:32
von JumpinJack
Ja das stimmt wohl. Sag mal wofür steht das C bei GPS-Vars?

btw: Kannst du ein Beispiel zum prüfen zum besten geben? Oder nen Link?

Verfasst: 18.01.2005 23:40
von Blutgerinsel
JumpinJack hat geschrieben:Ja das stimmt wohl. Sag mal wofür steht das C bei GPS-Vars?

btw: Kannst du ein Beispiel zum prüfen zum besten geben? Oder nen Link?
hmm
GET
POST
COOKIE

demnach müsste es Cookie sein wenn ich mich nicht irre......

Schau dir das PHP Manual an da findest du auch Infos im Hinblick auf SQL Injektions......

Diesen Daten müssen geschützt werden durch Slashes z.B.
da gibt es die Funktionen mysql_escape_string etc.

Daneben gibts noch PHP Einstellungen wie
magic_quotes_gpc

was ermöglicht:

Code: Alles auswählen

Legt die magic_quotes Einstellungen für GPC (Get/Post/Cookie) fest. Ist diese Einstellung auf on, werden alle ' (einzelne Anführungszeichen), " (doppelte Anführungszeichen), \ (Backslash) und NUL's automatisch mit einem Backslash geschützt.
Grundsätzlich sollte man auf Einstellungen wie magic_quotes_gpc off und register_globals on reagieren......

Bzw. ein eigenes Environment schreiben was diese Einstellungen in Gegenteil simuliert.......

Verfasst: 18.01.2005 23:51
von larsneo

Verfasst: 19.01.2005 08:04
von JumpinJack
Ah....cookie. Ok das leuchtet ein. Danke für die wertvollen Hinweise. Bin zwar momentan an VB aber wer weiß wann php wieder einmal gebraucht wird! :D