Dennis: PHP String Frage ...

Beitrag lesen

Hi Pseudo,

<?php

$ordner = "data".$_COOKIE['SetaPfad']."";

  
Ah, sehr schön. Du gibst mir als Besucher Zugriff auf alle Dateien, die auf deinem Server abgelegt sind, auf Konfigurationsdateien, auf Dateien mit Zugangsdaten für z.B. die MySQL-Datenbank, sowie auf alle anderen Dateien mit irgendwelchen sensiblen Informationen.  
Ich brauch dafür nur das Cookie SetaPfad in meinem Browser entsprechend zu manipulieren.  
  
Also: All Input Is Evil! Auch Cookies kommen vom Client, behandle diese also bitte entspreched, indem du sie auf zulässige Werte prüfst.  
  
  

> ~~~php

$handle = opendir($ordner);  

> while ($file = readdir ($handle)) {

Das wird nicht funktionieren, sobald du eine Datei in dem Ordner hast, deren Namen mit 0 beginnt, also z.B. eine Datei namens '0', oder eine Datei namens '0problem.txt'.

Du solltest while (($file = readdir($handle)) !== false) verwenden.

// kompletter Pfad

$compl = $ordner."/".$file;
            echo "<h3 class='toggler introduction'><a href='#".          $file."'><input type='radio' value='".$file."' name='delle'> ".$file."</a></h3><div class='accordion'><p>";
            echo "<textarea name='ideatext' cols='70' rows='15'>";
            $contentx=file_get_contents("/data/files/$file");
            echo $contentx;
            echo "</textarea></p></div>";

  
Hier gibst du in der While-Schleife den Inhalt aller Dateien nacheinander jeweils in einer Textarea aus. Hiergegen ist an sich erstmal nichts einzuwenden.  
  
Wozu baust du dir eigentlich den kompletten Pfad in $compl zusammen, ohne ihn später zu nutzen? Du könntest dann unten z.B. direkt file\_get\_contents($compl) schreiben. Und warum liest du hier die Datei $file aus dem Ordner /data/files aus? Das ist u.U. ein ganz anderer Ordner als der, den du oben vorher eingelesen hast, oben hast du nämlich nicht /data/files geöffnet, sondern $data . $\_COOKIE['SetaPath'].  
  
Desweiteren kann in so einer Textdatei ja auch durchaus mal ein > oder < Zeichen stehen. Damit dir das nicht das HTML kaputt macht, solltest du hier unbedingt(!) [htmlspecialchars()](http://php.net/htmlspecialchars) verwenden.  
  
  

> Ich dachte eventuell an etwas wie automatisch zahlen an die xcontent variable hängen, also aufsteigend... aber ich hab keine ahnung wie ich das realisieren könnte...  
  
Du willst also die Inhalte aller eingelesen Dateien zur späteren Verwendung speichern? In deinem jetzigen Script (so wie du es uns gezeigt hast) werden die eingelesen Daten ja direkt in der Textarea ausgegeben, d.h. derzeit ist es doch gar nicht notwendig die Inhalte der einzelnen Dateien in „unterschiedliche Variablen” zu speichern.  
  
Falls du wirklich alle Dateiinhalte in Variablen ablegen willst (was wirklich nur Sinn macht, wenn du diese später, also außerhalb der Textarea nochmal benötigst), dann sage ich nur: Willkommen in der [wunderbaren Welt](http://tut.php-quake.net/de/array.html) der [Arrays](http://de.php.net/manual/en/language.types.array.php).  
  
  
Viele Grüße,  
  ~ Dennis.

-- 
Mein [SelfCode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)