Forum: PC-Programmierung Online eine Datei editieren


von Olaf (Gast)


Lesenswert?

Hallo

Gerade fange ich an mich mit php-Programmierung zu beschäftigen.
Jetzt würde ich gerne meine erstellten Skripte im Browser editieren.
Gerne einfach so, das der Dateiname per GET an die Editor.php übergeben 
wird.

Ja, es gibt solche Systeme auch für ganze Projekte: ICEditior, Cloud9 
etc.
Ich möchte es aber gerne viel kleiner, aber gerne mit einem 
Code-Highlighting.

Hat jemand von Euch solch ein Skript?

Olaf

Nachtrag:
Das Verzeichnis ist über die htaccess geschützt,
daher habe ich keine Angst, dass mir jemand den Server übernimmt.

von Noch einer (Gast)


Lesenswert?

Da nimmt man einfach den CKEditor. Und schreibt ein PHP-Script, was eine 
Seite mit <script src="ckeditor.js"> und eine gefüllte <textarea> 
ausliefert. Nach den Submit schreibt dein PHP-Script die gepostete 
Textarea wieder in die Datei.

von Olaf (Gast)


Lesenswert?

Danke, das sieht genau so aus,
wie ich es mir vorgestellt hatte!

Nur verstehe ich noch nicht, wie in dem Skript hier:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>CKEditor</title>
        <script 
src="//cdn.ckeditor.com/4.6.1/standard/ckeditor.js"></script>
    </head>
    <body>
        <textarea name="editor1"></textarea>
        <script>
            CKEDITOR.replace( 'editor1' );
        </script>
    </body>
</html>

die zu editierende Datei aufgerufen werden soll.

von Planlos (Gast)


Lesenswert?

Olaf schrieb:
> [Wie] die zu editierende Datei aufgerufen werden soll.

Noch einer schrieb:
> eine gefüllte <textarea>
> ausliefert.

D.h. php schreibt sie in deine textarea, fertig.

von Joachim S. (oyo)


Lesenswert?

Planlos schrieb:
> Olaf schrieb:
>> [Wie] die zu editierende Datei aufgerufen werden soll.
> D.h. php schreibt sie in deine textarea, fertig.
Die Frage zielte vermutlich eher darauf ab, wie der Name/Pfad der zu 
editierenden Datei angegeben werden kann.

Ansonsten: Eine ganz ähnliche Frage wurde hier vor zwei Wochen schon mal 
gestellt (Beitrag "Webserver Zugriff auf Dateien, wie programmieren").

In diesem Thread habe ich auch mal ein ganz einfaches PHP-Script zu 
diesem Zweck gepostet:
https://www.mikrocontroller.net/attachment/312124/edit_file.php

Dieses Script würde mit einer kleinen Änderung auch Deinen Zweck 
erfüllen. Passend zur Frage des damaligen Threads ist der Dateiname der 
zu editierenden Datei in diesem Script festgelegt; um damit jede 
beliebige Datei zu editieren, sollte es eigentlich genügen, die erste 
Zeile entsprechend zu ändern, dass statt eines festen Dateinamens ein 
HTTP GET-Parameter extrahiert wird.

Da das verlinkte Script aber eh minimalistisch ist und keinerlei 
Syntax-Highlighting o.Ä. beherrscht, ist es aber im Endeffekt vermutlich 
doch sinnvoller, auf eine komplexe und beliebte Lösung zurückzugreifen, 
wie es dieser CKeditor offenbar ist.

von Olaf (Gast)


Lesenswert?

Hallo Joachim

Danke für den Hinweis auf den bestehenden Thread.
Das Skript macht zwar das was ich möchte
und auch die Möglichkeit den Dateinamen über die URL anzugeben habe ich 
verwirklichen können, (Danke für den Hinweis, damit war es dann echt 
nicht mehr schwer),
nur wird bei der zu editierenden Datei immer \ vor die " gesetzt.
Und zwar jedes Mal, sodass es nach dreimaligem Speichern so aussieht:

<html lang=\\\\\\\"de\\\\\\\" dir=\\\\\\\"ltr\\\\\\\">

Wie kann man das Verhindern?
Und ist es möglich das Codehighlighting nachträglich einzubauen?

von Joachim S. (oyo)


Lesenswert?

Olaf schrieb:
> nur wird bei der zu editierenden Datei immer \ vor die " gesetzt.
> Und zwar jedes Mal, sodass es nach dreimaligem Speichern so aussieht:
>
> <html lang=\\\\\\\"de\\\\\\\" dir=\\\\\\\"ltr\\\\\\\">
>
> Wie kann man das Verhindern?

Ich habe leider nicht sonderlich viel Erfahrung mit PHP, das kann ich 
mir gerade auch nicht erklären. Bei einem kurzen Test eben konnte ich 
dieses Phänomen leider auch nicht reproduzieren, da schien es zu 
funktionieren.

Könnte vielleicht mit der Konvertierung Roh-Text <-> HTML-sichere 
Zeichen zu tun haben, die im Script durch htmlspecialchars() vorgenommen 
wird.

Wobei das auch nicht so recht erklärt, warum das Phänomen bei mir nicht 
aufzutreten scheint. Einer kurzen Google-Suche zufolge könnte es evtl. 
auch mit einer Einstellung namens "Magic Quotes" zu tun haben. Die 
scheint es allerdings auch nur bei älteren PHP-Versionen gegeben zu 
haben. (http://php.net/manual/de/security.magicquotes.php)

> Und ist es möglich das Codehighlighting nachträglich einzubauen?

Irgendwie bestimmt, aber die Mühe wird sich für ein derart 
minimalistisches Script wohl keiner machen. ;-)

von Olaf (Gast)


Lesenswert?

Hallo

Die PHP Version ist 5.5.28
und aus der php-ini folgt folgendes:

magic_quotes_gpc  On  On
magic_quotes_runtime  Off  Off
magic_quotes_sybase  Off  Off


Schlau werde ich da aber auch nicht raus :-(

von Olaf (Gast)


Lesenswert?

Ok, der Eintrag:  php_flag magic_quotes_gpc off in die .htaccess scheint 
das Problem zu beheben.

von Joachim S. (oyo)


Lesenswert?

Olaf schrieb:

> magic_quotes_gpc  On  On

Dann dürfte an dieser Einstellung evtl. das Problem liegen. Wobei ich 
das nicht ganz verstehe, denn Du schreibst ja...

> Die PHP Version ist 5.5.28

...und ich hätte folgende Information auf der Info-Seite zu Magic 
Quotes:
"Dieses Feature ist seit PHP 5.3.0 DEPRECATED (veraltet) und seit PHP 
5.4.0 ENTFERNT."
jetzt so interpretiert, dass es diese ominösen "Magic Quotes" in Deiner 
PHP-Version 5.5 eh nicht mehr gibt.

von Olaf (Gast)


Lesenswert?

Joachim S. schrieb:
>> Die PHP Version ist 5.5.28

Verdammt, Tippfehler.
Da muss 5.3.28 stehen.
Dann passt es auch wieder mit 5.4 ENTFERNT.

Sorry für die Verwirrung.

Hier noch ein Skript,
was etwas umfangreicher aussieht:
https://sourceforge.net/projects/editarea/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.