• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

mit php javascript ausgeben

arnes

New member
heyho,
ich arbeite gerade an einem online html editor.
nun soll man in diesem editor auch datein öffnen können.
dazu öffnet sich ein iframe, in das eine php seite geladen wird. diese php seite entählt ein upload formular. wenn der user nun in diesem formular eine datei hochläd soll diese datei an Javascript übergeben werden. ich hab mir das so gedacht:

das ist die Seite an die das Formualr die Datei zum hochladen schickt:
PHP:
// javascript ausgeben
echo "<script type=\"text/javascript\">";
// hochgeladene datei als Paramter
echo "parent.gebeSeiteAus(\"";
$file = fopen($_FILES['the_file']['tmp_name'],"r");
    if ($file) {
        while(!feof($file)) {
	        $text = fgets($file);
	        $text = str_replace ('"', '\"', $text);
	        echo $text;
	}
	fclose($file);
    }
echo "\")";
echo "</script>";

das Problem:
wenn der user ein semikolon verwendet funktionert das nicht mehr. alles was nach dem semikolon kommt wird nicht mehr in den paramter der funktion gebeSeiteaus() geschrieben , sondern als normaler text außerhalb des <script> teils.
Code:
<script>
1
2parent.gebeSeiteAus("<span style=\"color:green\">hello world .D</span>
3<script type=\"text/javascript\">
4alert('blaa');
5
</script>
")

ich wollte das semikoln jetzt mit str_replace ersetzen, aber auch wenn ich es ersetzte
PHP:
$text = str_replace(';', 'semikolon', $text);
wird es immernoch falsch dargestellt
Code:
<script>
1
2parent.gebeSeiteAus("<span style=\"color:green\">hello world .D</span>
3<script type=\"text/javascript\">
4alert('blaa')semikolon
5
</script>
")

was kann ich tun um das zu verhindern?
gruß arnes
 
vielen Dank für die schnellen Antworten :D

@Albu: das mit dem mehrzeligen string funktioniert bis jetzt eigentich, es sind nur die Semikolons die Probleme machen.

@kkapsner:
ich hab mir auch als erstes überlegt das ganze mit Ajax zu lösen. man könnte mit AJAX gut auf eine vorhanden datei zugreifen, aber im AJAX request eine datei zu übergeben funktioniert glaube ich nich. zumindest finde ich, wenn ich in google unter 'AJAX datei hochladen' nichts. Dort wird nur die Lösung beschrieben, ein ganz normales Formular zu nehmen an eine Php zu senden und anschließend wieder zurück zur Ausganseite zu springen.

also mein Problem ist, dass ein neu Laden der Seite nicht in Frage kommt.
eventuell müsste ich die Datei erst in einen Ordner hochladen (momentan schaffe ich ja mit der temporären datei, da ich die datei später nicht mehr brauche) und anschließend mit AJAX die datei auslesen und die datei zu löschen, oder sie durch einen cronjob löschen zu lassen.
oder denk ich mal wieder viel zu kompliziert und es gibt ne einfachere Lösung?
:D
 
Du möchtest offenbar Code in deinen Editor einlesen: Wo ist denn da die Sicherheit? So wie du das vor hast, ist die Site (und je nachdem vielleicht sogar der Server) die nächste Gumblar-Schleuder. Prüfe das ganze mal auf unerlaubte Zeichen bitte.

Einfach ein Semikolon Filtern, weil das gerade muckt, ist falsch.

, aber im AJAX request eine datei zu übergeben funktioniert glaube ich nich

Bitte eine Grundlagenwissen besorgen. Du hast das AJAX-Prinzip nicht verstanden.

denk ich mal wieder viel zu kompliziert und es gibt ne einfachere Lösung?

Wenn sicher User anmelden muss -> in Datenbank Referenz speichern und Dati Inhalt als TXT auf Server speichern.

Ansonsten Referenz nur in Session speichern.

Wozu soll das hier bitte gut sein?:
PHP:
            $text = str_replace ('"', '\"', $text);
 
Zurück
Oben