Deutschland United States United Kingdom
ContentLion - Open Source CMS

Formularverarbeitung auf der selben Seite mithilfe Jukus PHP-Includer

Formularverarbeitung auf der selben Seite mithilfe Jukus PHP-Includer

Grüß Gott!

kann mir einer sagen, warum das CMS bei diesem Skript bockt? Ich habe es mit Juku's Plugin includiert. Ich kann es natürlich auch außerhalb des CMS laufen lassen, wäre aber unschön und unsicher. Auf meine LAMP-Server rennt es (ohne die if-Verzweigung ganz oben natürlich).


PHP-Quelltext

1
2
3
<?php//Prüfen, ob die Datei tatsächlich von Content-Lion includiert wurdeif (!isset($args['is_included'])) {  echo "Dieses Script ist leider vom Browser aus nicht aufrufbar. Forbidden!";  exit;} else {//eigentliches Skript     if(isset($_POST['submit']) && $_POST['submit']=="Senden") {          //Formularauswertungscode         $vorname = $_POST['vorname'];         $nachname = $_POST['nachname'];         $post = $_POST['post'];
         $timestamp time();         $tage =            array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");         $tag date("w",$timestamp);         $datum date("d.m.Y"$timestamp);         $uhrzeit date("H:i"$timestamp);
         if( $vorname == "" OR $nachname == "" OR $post == "")         {             echo "Es wurde nichts gepostet, da nicht alle Daten korrekt eingegeben wurden. Bitte Eingabe überprüfen.";         } else {             //Upload ohne Einschränkungen             move_uploaded_file($_FILES['file']['tmp_name'],"uploads/".$_FILES['file']['name'] );             $eintrag = "<b>".$vorname." ".$nachname."postete am".$tage[$tag].", den ".$datum." um ".$uhrzeit." Uhr:</b><br>";             $eintrag .= $post."<br>";             $datei = fopen("posts.html","a+");             fwrite($datei,$eintrag);             fclose($datei);             echo "Der Eintrag wurde erfolgreich gepostet!";         }     } else { ?>          <form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">         Vorname:<br>         <input type="text" name="vorname" /><br>         Nachname: <br>         <input type="text" name="nachname" /> <br>         Was soll gepostet werden? <br>         <textarea name="post" rows="10" cols="50"> </textarea><br>         Soll ein File hochgeladen werden?<br>         <input type="file" name="file" /><br>         <input type="submit" name="submit" value="Senden" />         </form>     <?php }}?>


Gruß

Dschengiz

Hi,

Kommt nur ne leere Seite?
Ist die Datei überhaupt vorhanden?

@Formularauswertung:
Escape deine Daten mal! ;)

PHP-Quelltext

1
$vorname DataBase::Current()->EscapeString($_POST['vorname']);


Nimm mal die if-Anweisung zum Testen raus! ;)

Kommt nur ne leere Seite?
Ist die Datei überhaupt vorhanden?
Also die Datei, in wecher dieses Skript steht ist definitiv vorhanden. Das Formular wird angezeigt. Dann schreibe ich was oder auch nicht und klicke dann auf "Senden". Dann passier Folgendes: Ich werde umgeleitet auf die Startseite und weiter nichts. Kein neuer Eintrag nix.

Was bedeutet escapen?

Muss ich das mit allen POST-Variablen machen?

Ja, musst du, zur Sicherheit.
Wenn du es nicht machst, machst du Hackern das Leben leicht. :P

Hast du auch bei dem Formular bei action die Seite angegeben?

PHP-Quelltext

1
action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>"


liegt hier das Problem vielleicht?

Jep, da muss

PHP-Quelltext

1
<?php echo UrlRewriting::getUrlByAlias("meinAlias"); ?>
rein. ^^