kostenloser Webspace werbefrei: lima-city


Inhalt eines Textfeldes abspeichern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    Hallo

    Ich möchte den Inhalt einer Textbox unter einem bestimmten Namen abspeichern. So weit bin ich schon:
    <form method="POST">
    		<p>
    			<textarea name="content" rows="20" cols="67">
    			</textarea>
    		</p>
    		<p>
    			Name: <input type="text" name="name" size="35" />
    		</p>
    		<p>
    			<input type="submit" name="send" value="Speichern" />
    		</p>
    </form>

    Aber was muss ich jetzt noch php - mäßig machen? In Foren habe ich auch noch nichts für den Dateinamen gefunden...
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. In welcher Form willst du die Sachen denn speichern? Willst du das Ergebnis in eine Datei speichern oder in einer MySQL Datenbank?

    Was ist der größere Sinn der Sache?
  4. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    bladehunter schrieb:
    In welcher Form willst du die Sachen denn speichern? Willst du das Ergebnis in eine Datei speichern oder in einer MySQL Datenbank?

    Was ist der größere Sinn der Sache?

    Ich will, dass der Inhalt des Textfeldes als Textdatei am Server im gleichem Verzeichnis abgespeichert wird um es dann in eine andere Seite einzubinden.
    Ähnlich wie bei Beiträgen in Joomla.
  5. <?php
    if( isset( $_POST[ 'content' ] ) ) {
    	$file = fopen( 'name.txt', 'w' );
    	fwrite( $file, htmlentities( $_POST[ 'content' ] ) );
    	fclose( $file );
    }
    ?>


    Das schreibt dann in eine Datei mit dem Namen "name.txt", wenn der Wert für "content" übertragen wurde.

    Wenn in die Datei geschrieben wird, wird vorher mit htmlentities() noch dafür gesorgt, dass Zeichen wie < > escaped werden, damit andere Leute dir nicht deinen HTML Code zerhauen können, wenn die Datei dann wieder in deine Webseite eingebaut wird.

    Du musst bei deinem Form noch das Attribut
    action="pdaf/name_der_php_datei.php"

    hinzufügen. Außerdem solltest du besser
    method="post"

    (also klein) notieren, weil das der Standard vorsieht.

    Beitrag zuletzt geändert: 9.12.2012 16:49:31 von bladehunter
  6. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    Danke!
    Ist es auch möglich, dass der Dateiname von hier genommen wird:
    <p>
          Name: <input type="text" name="name" size="35" />
    </p>
  7. Das ist in der Tat möglich. Aber da ich annehme, dass du von PHP nicht so viel Ahnung hast, rate ich dir eher davon ab, das zu benutzen. Schließlich kann man dann auch einfach einen Dateinamen angeben, der identisch ist mit einer wichtigen, bereits existierenden Datei ist. Und so könnte dann jemand einfach deine Dateien überschreiben und beliebigen Code ausführen.

    Wenn du den Dateinamen mit übergeben willst, wäre der Code:

    <?php
    if( isset( $_POST[ 'content' ] ) && isset( $_POST[ 'name' ] ) ) {
        $filename = $_POST[ 'name' ]; //hier sollte man noch Sicherheitsmechanismen einbauen!
        $file = fopen( $filename, 'w' );
        fwrite( $file, htmlentities( $_POST[ 'content' ]  )  );
        fclose( $file );
    }
    ?>
  8. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    Danke!

    Ist das ganze auch in einer Datei möglich?
  9. Ja, das ist möglich. Schematisch:

    <html>[...]
    <body>
    [mein Code]
    [dein HTML Code]
    </body></html>


    Und du könntest noch zusätzlich in meinem Code die Zeile
    echo "In Datei geschrieben";

    nach der fclose-Zeile schreiben, um eine Rückmeldung zu bekommen.


    Du solltest PHP lernen, wenn du in der Richtung noch was größeres vor hast. Dann kriegst du diese Dinge auch alleine hin.

    Beitrag zuletzt geändert: 9.12.2012 17:21:18 von bladehunter
  10. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    Es funktioniert seltsamerweise nicht!

    Ich habe eine Date namens index.html erstellt und hochgeladen mit folgendem Inhalt:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    		<title>Editor</title>
    	</head>
    	<body>
    		<?php
    			if( isset( $_POST[ 'content' ] ) && isset( $_POST[ 'name' ] ) ) {
    			$filename = $_POST[ 'name' ]; //hier sollte man noch Sicherheitsmechanismen einbauen!
    			$file = fopen( $filename.".html", 'w' );
    			fwrite( $file, htmlentities( $_POST[ 'content' ]  )  );
    			fclose( $file );
    			echo "In Datei geschrieben"
    			}
    		?>
    		<form method="post">
    			<p>
    				<textarea name="content" rows="20" cols="67"></textarea>
    			</p>
    			<p>
    				Name: <input type="text" name="names" size="35" />
    			</p>
    			<p>
    				<input type="submit" name="send" value="Speichern" />
    			</p>
    		</form>
    	</body>
    </html>


    1. Es kommt keine Bestätigung durch echo
    2. Es entsteht keine Datei

    Ich danke schon im Voraus für Hilfe
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    l001ol schrieb:
    Es funktioniert seltsamerweise nicht!

    Ich habe eine Date namens index.html erstellt und hochgeladen […]
    Das kann so auch gar nicht funktionieren. Damit das was wird musst du die Datei auch auf
    .php
    enden lassen ;-)
  12. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    hackyourlife schrieb:
    l001ol schrieb:
    Es funktioniert seltsamerweise nicht!

    Ich habe eine Date namens index.html erstellt und hochgeladen […]
    Das kann so auch gar nicht funktionieren. Damit das was wird musst du die Datei auch auf
    .php
    enden lassen ;-)

    Als .php kommt nur ein leeres Bild... :-(
  13. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    l001ol schrieb:
    Als .php kommt nur ein leeres Bild... :-(
    Das deutet auf einen Fehler hin. Am einfachsten wäre es, wenn du die Ausgabe von Fehlermeldungen aktivierst, so wie dies hier beschrieben wird.
  14. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.


    Parse error: syntax error, unexpected '}', expecting ',' or ';' in /home/webpages/lima-city/l001ol/html/phpuebungen/editor.php on line 13
  15. l001ol schrieb:
    Es funktioniert seltsamerweise nicht!

    Ich habe eine Date namens index.html erstellt und hochgeladen mit folgendem Inhalt:

    Wie hackyoulife bereits gesagt hat, muss die Datei die Endung .php haben.

    Außerdem hast du nicht folgende Änderung vorgenommen:
    bladehunter schrieb:
    Du musst bei deinem Form noch das Attribut
    action="pfad/name_der_php_datei.php"

    hinzufügen.

    In dem Fall muss der name_der_php_datei.php natürlich editor.php heißen, sofern du das alles in die Datei editor.php reingeschrieben hast.

    Und am Ende von Zeile 13 fehlt ein Semikolon (also die Zeile mit dem echo)

    edit: Du brauchst allerdings keinen eigenen Editor für deinen Webspace schreiben. Du kannst einfach den Filemanager benutzen und dann (nachdem du dich eingeloggt hast) kannst du auf der rechten Seite auf "bearbeiten" klicken, um eine Datei online zu verändern. Und eine neue Datei kannst du auch mit einem entsprechendem Button anlegen.

    Beitrag zuletzt geändert: 9.12.2012 18:20:43 von bladehunter
  16. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    aber so funktioniert das speichern und das echo trotzdem nicht... :-(

    hier übrigens die seite: http://l001ol.lima-city.de/phpuebungen/index.php

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
        </head>
        <body>
            <?php
                if( isset( $_POST[ 'content' ] ) && isset( $_POST[ 'name' ] ) ) {
                $filename = $_POST[ 'name' ]; //hier sollte man noch Sicherheitsmechanismen einbauen!
                $file = fopen( $filename, 'w' );
                fwrite( $file, htmlentities( $_POST[ 'content' ]  )  );
                fclose( $file );
                echo "In Datei geschrieben";
                }
            ?>
            <form method="post" action="index.php">
                <p>
                    <textarea name="content" rows="20" cols="67"></textarea>
                </p>
                <p>
                    Name: <input type="text" name="names" size="35" />
                </p>
                <p>
                    <input type="submit" name="send" value="Speichern" />
                </p>
            </form>
        </body>
    </html>


    Beitrag zuletzt geändert: 9.12.2012 18:25:58 von l001ol
  17. Das Problem liegt in deinem HTML Code. Mach aus
    <input type="text" name="names" size="35" />

    folgendes:
    <input type="text" name="name" size="35" />
  18. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    Danke! Jetzt funktioniert endlich alles wie es soll :smile:
  19. Du hast aber immer noch die Sicherheit außer Acht gelassen...

    <?php
    	if( isset( $_POST[ 'content' ] ) && isset( $_POST[ 'name' ] ) ) 
    	{
    		$date = new DateTime();
    		$filename = md5($date->getTimestamp()) . "_" . $_POST[ 'name' ]; //Der Dateiname KANN nur ein einziges mal vorkommen
    		if ($handle = opendir(getcwd())) {
        	while (false !== ($file = readdir($handle))) {
           			if($file == $filename){
           				$filename = $filename . "_" . $date->getTimestamp();
           			}
        		}
    		}
    		$file = fopen( $filename, 'w' );
    		fwrite( $file, htmlentities( $_POST[ 'content' ]  )  );
    		fclose( $file );
    		echo "In Datei geschrieben";
    	}
    ?>


    Hab es nicht getestet, aber in der Theorie sollte es damit absolut unmöglich sein einen doppelten Dateinamen zu haben, aufgrund der millisekunden abweichung durch das lesen des Scripts, selbst wenn es die Datei schon gibt ;)
  20. Autor dieses Themas

    l001ol

    Kostenloser Webspace von l001ol

    l001ol hat kostenlosen Webspace.

    Ich benutze den Editor nur privat und werde wahrscheinlich per .htaccess sichern. Außerdem ist es in einem sicheren Unterverzeichnis
  21. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!