kostenloser Webspace werbefrei: lima-city


Mit PHP HTML-Dateien generieren

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    funnyweb

    Kostenloser Webspace von funnyweb

    funnyweb hat kostenlosen Webspace.

    Hallo :wave:
    Weiß jemand, wie man mit PHP-Skripten o. Ä. HTML-Dateien generieren und auf dem Server in einem ebenfalls generierten Verzeichnis speichern kann?

    Und zwar soll die Datei index.html heißen und folgenden Inhalt haben:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>{bezeichnung}</title>
    <meta http-equiv="refresh" content="1; URL={zielurl}">
    </head>
    <body>
    <h3>Sie werden in K&uuml;rze weitergeleitet.</h3>
    <p>Falls nicht, klicken Sie bitte <a href="{zielurl}">hier</a>.</p>
    </body>
    </html>

    Das Verzeichnis soll ebenfalls {bezeichnung} heißen.

    {bezeichnung} und {zielurl} soll das PHP-Skript einem Formular entnehmen.

    Vielen Dank für jeden Vorschlag :smile:

    Beitrag zuletzt geändert: 20.2.2014 17:28:53 von funnyweb
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. So:

    $config = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>{bezeichnung}</title>
    <meta http-equiv="refresh" content="1; URL={zielurl}">
    </head>
    <body>
    <h3>Sie werden in K&uuml;rze weitergeleitet.</h3>
    <p>Falls nicht, klicken Sie bitte <a href="{zielurl}">hier</a>.</p>
    </body>
    </html>';
    			$temp = fopen($bezeichnung."index.html","w");
    			fwrite($temp, $config); 
    			fclose($temp);
    			chmod("../config.php",0600);


    Wenn du es auf einen anderen Webserver übertragen möchtest, dann setze dich mit CURL oder url_fopen auseinander.
  4. Tut mir leid, das nachzufragen, aber: warum willst du diese Datein auf dem Server speichern, wenn du sie auch einfach mit jeder Anfrage zurückgeben kannst. Dann musst du (falls das eine größere Anzahl wird) nur {Bezeichnung} speichern
  5. Hallo

    hier als BSP mit Formular zur Eingabe der Bezeichnung und Zielurl

    folgenden Quellcode in eine .php Datei speichern (z.B. make_site.php oder so)

    <html>
    <head>
    <title>Seite erstellen</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#FFFFFF" text="#000000">
    <br>
    
    <h1>Seite erstellen</h1>
    
    <hr>
    
    <?php 
    // ---------------------------------------------------------------- 
    
    if (!empty($_POST['bezeichnung']) && !empty($_POST['zielurl'])) { 
    
    $go_bezeichnung = trim($_POST['bezeichnung']); 
    $go_zielurl = trim($_POST['zielurl']); 
    $go_datum = trim($_POST['datum']); 
    
    $content = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <title>'.$go_bezeichnung.'</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <meta http-equiv="refresh" content="3; URL='.$go_zielurl.'">
      <meta name="date" content="'.$go_datum.'">
    </head>
    <body bgcolor="#FFFF33" text="#000000" link="#0000CC">
    
      <div align="center">
        <h1>'.$go_bezeichnung.'</h1>
        <br>
        <h3>Sie werden in K&uuml;rze weitergeleitet.</h3>
        <br>
        <p>Falls nicht, klicken Sie bitte <a href="'.$go_zielurl.'"><strong style="font-size:24px;">hier</strong></a>.</p>
        <br>
      </div>
      
    </body>
    </html>
    '; 
    
    if (!is_dir($go_bezeichnung)) { 
    
    $new_dir = mkdir($go_bezeichnung); 
    if (!$new_dir) { die('Fehler ... konnte Verzeichnis nicht erstellen'); } 
    
    $filename = 'index.html'; 
    $filepath = $go_bezeichnung.'/'.$filename; 
    
    $new_file = file_put_contents($filepath, $content, LOCK_EX); 
    if (!$new_file) { die('Fehler ... konnte die Datei nicht erstellen'); } 
    
    print '<br>'."\n"; 
    print '<p>OK ... Verzeichnis und Datei erstellt ... <a href="'.$filepath.'" target="_blank"><strong>'.$filepath.'</strong></a></p>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Erstellt am: '.$go_datum.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Neu starten .... <a href="javascript:history.back();">Seite erstellen</a></p>'."\n"; 
    print '<br>'."\n"; 
    
    }
    else { 
    print '<br>'."\n"; 
    print '<p>Fehler .... Das Verzeichnis <a href="'.$go_bezeichnung.'" target="_blank"><strong>'.$go_bezeichnung.'</strong></a> existiert bereits.'."\n"; 
    print '<br>'."\n"; 
    }
    
    }
    else { 
    
    // ---------------------------------------------------------------- 
    ?>
    
    <form name="form1" method="post" action="">
      Bezeichnung: 
      <input type="text" name="bezeichnung" size="50" maxlength="100">
      <br>
      Ziel URL: 
      <input type="text" name="zielurl" size="50" maxlength="150">
      <br>
      <input type="hidden" name="datum" value="<?php echo date('Y-m-d H:i:s'); ?>">
      <br>
      OK ........ 
      <input type="submit" name="go" value="Speichern">
    </form>
    
    <br>
    <br>
    
    <?php 
    // ---------------------------------------------------------------- 
    
    }
    
    // ---------------------------------------------------------------- 
    ?>
    
    
    <br>
    <br>
    
    </body>
    </html>


    aber das nur als rudimentäres Beispiel,

    habe den Seiten-Code bischen geändert / erweitert ... refresh = 3 Sekunden, usw.
    ... das mit dem Datum kannst Du auch weg lassen ... aber egal

    die User-Eingaben aus Formular ($_POST['bezeichnung'], etc)
    sollte man dringend vor der Weiter-Verwendung noch prüfen / filtern
    damit damit kein Unfug gemacht werden kann (hacking)


    aber wie schon gesagt wurde, stellt sich die Frage, warum statisch speichern,
    das geht auch dynamisch ... z.B. auch über mod_rewrite

    EDIT ... PS ... das Thema gehört ins PHP-Forum und nicht ins HTML-Forum
    evtl. bitte verschieben ...


    Beitrag zuletzt geändert: 18.2.2014 16:00:31 von favoriten
  6. Autor dieses Themas

    funnyweb

    Kostenloser Webspace von funnyweb

    funnyweb hat kostenlosen Webspace.

    Vielen Dank all-in1 und favoriten für die erstklassigen Vorschläge! :smile:


    jalstudios schrieb:
    Tut mir leid, das nachzufragen, aber: warum willst du diese Datein auf dem Server speichern, wenn du sie auch einfach mit jeder Anfrage zurückgeben kannst. Dann musst du (falls das eine größere Anzahl wird) nur {Bezeichnung} speichern
    favoriten schrieb:
    […] aber wie schon gesagt wurde, stellt sich die Frage, warum statisch speichern,
    das geht auch dynamisch ... z.B. auch über mod_rewrite […]
    Natürlich – das wäre viel einfacher. Aber ich brauche einen wirklich existierenden Ordner, weil ich Subdomains zuordnen möchte.
  7. Du solltest aufpassen, dass man darüber kein PHP einschleusen kann, dass die Datein also nicht mit PHP ausgegeben werden, sondern einfach per HTML. Sonst wäre das eine gravierende Sicherheitslücke.
  8. Hallo

    hier nochmal eine erweiterte Version von meinem BSP

    mit der Variable
    $runtype = 'test';
    kannst Du einstellen,
    ob das Script nur eine Test DEBUG Ausgabe mit <pre> macht
    oder ob es wirklich den Ordner und die Datei erstellen soll


    <?php 
    // ---------------------------------------------------------------- 
    
    header("Content-Type: text/html; charset=utf-8");
    
    mb_internal_encoding('UTF-8');
    
    ## $runtype = 'live';  // ----- erstellt Dir und File ----- 
    
    $runtype = 'test';  // ----- nur Test DEBUG Ausgabe ----- 
    
    
    // ---------------------------------------------------------------- 
    ?>
    <html>
    <head>
    <title>Seite erstellen</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    
    <body bgcolor="#FFFFFF" text="#000000">
    <br>
    
    <h1>Seite erstellen</h1>
    
    <hr>
    
    <?php 
    // ---------------------------------------------------------------- 
    
    function escape_user_input($strvar) { 
    	
    	if (mb_detect_encoding($strvar, 'UTF-8', true) === false) { $strvar = utf8_encode($strvar); } 
    	
    	$strvar = strip_tags($strvar); 
    	$strvar = stripslashes($strvar); 
    	$strvar = html_entity_decode($strvar); 
    	
    	$replace = ' '; 
    	$strvar = str_replace("\s",$replace,$strvar); 
    	$strvar = trim(preg_replace('/ {2,}/',$replace,$strvar)); 
    	
    	$zeichen = '0-9a-zA-Z_ \-'; 
    	$umlaute = utf8_encode('äöüßÄÖÜ'); 
    	$pattern = '/'.$zeichen.$umlaute.'/u'; 
    
    	$strvar = preg_replace($pattern,$replace,$strvar); 
    	$strvar = trim($strvar,$replace); 
    
    	return $strvar; 
    	
    }
    
    
    // ---------------------------------------------------------------- 
    
    
    function clean_dirname($strvar) { 
    
    	$spacer = '-'; 
    	$strvar = mb_strtolower($strvar); 
    	$strvar = str_replace(' ', $spacer, $strvar); 
    	$strvar = str_ireplace(array(utf8_encode('ä'),utf8_encode('ö'),utf8_encode('ü'),utf8_encode('ß')), array('ae','oe','ue','ss'), $strvar); 
    	$strvar = trim($strvar,$spacer); 
    
    	return $strvar; 
    	
    }
    
    // ---------------------------------------------------------------- 
    
    
    
    if (!empty($_POST['bezeichnung']) && !empty($_POST['zielurl'])) { 
    
    $go_bezeichnung = trim($_POST['bezeichnung']); 
    $go_zielurl = trim($_POST['zielurl']); 
    $go_datum = trim($_POST['datum']); 
    
    
    $go_bezeichnung = escape_user_input($go_bezeichnung); 
    $go_zielurl = escape_user_input($go_zielurl); 
    
    $go_dirname = clean_dirname($go_bezeichnung); 
    
    
    // ------------------------------------------ 
    
    $content = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <title>'.$go_bezeichnung.'</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <meta http-equiv="refresh" content="3; URL='.$go_zielurl.'">
      <meta name="date" content="'.$go_datum.'">
    </head>
    
    <body bgcolor="#FFFF33" text="#000000" link="#0000CC">
    
      <div align="center">
        <h1>'.$go_bezeichnung.'</h1>
        <br>
        <h3>Sie werden in K&uuml;rze weitergeleitet.</h3>
        <br>
        <p>Falls nicht, klicken Sie bitte <a href="'.$go_zielurl.'" title="'.$go_bezeichnung.'"><strong style="font-size:24px;">hier</strong></a>.</p>
        <br>
      </div>
      
    </body>
    
    </html>
    '; 
    
    // ------------------------------------------ 
    
    
    if (!is_dir($go_dirname)) { 
    
    $filepath = ''; 
    
    // ------------------------------------------ 
    
    if ($runtype == 'live') { 
    	
    	$new_dir = mkdir($go_dirname, 0766); 
    	
    	if (!$new_dir) { die('Fehler ... konnte das Verzeichnis nicht erstellen'); } 
    	else { print '<p>OK ... Verzeichnis: <a href="'.$go_dirname.'" target="_blank"><strong>'.$go_dirname.'</strong></a> wurde erstellt</p>'."\n"; } 
    	
    	$filename = 'index.html'; 
    	$filepath = $go_dirname.'/'.$filename; 
    	
    	$new_file = file_put_contents($filepath, $content, LOCK_EX); 
    	
    	if (!$new_file) {
    	 die('Fehler ... konnte die Datei nicht erstellen'); 
    	} 
    	else { 
    	 chmod($filepath, 0755); 
    	 print '<p>OK ... Datei: <a href="'.$filepath.'" target="_blank"><strong>'.$filepath.'</strong></a> wurde erstellt</p>'."\n"; 
    	} 
    
    }
    else { 
    	
    	print '<br>'."\n"; 
    	print '<br>'."\n"; 
    	
    	print '<pre style="text-align:left; background:#DEDEDE;">'."\n"; 
    	print htmlentities(print_r($content,true)); 
    	print '</pre>'."\n"; 
    
    }
    
    // ------------------------------------------ 
    
    
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Erstellt am: '.$go_datum.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<p>PathDirName: '.$go_dirname.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Bezeichnung: '.$go_bezeichnung.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<p>URL Adresse: '.$go_zielurl.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Neu starten .... <a href="javascript:history.back();">Seite erstellen</a></p>'."\n"; 
    print '<br>'."\n"; 
    
    // ------------------------------------------ 
    
    }
    else { 
    print '<br>'."\n"; 
    print '<p>Fehler .... Das Verzeichnis <a href="'.$go_dirname.'" target="_blank"><strong>'.$go_dirname.'</strong></a> existiert bereits.'."\n"; 
    print '<br>'."\n"; 
    }
    
    // ------------------------------------------ 
    
    }
    else { 
    
    // ---------------------------------------------------------------- 
    ?>
    
    <form name="form1" method="post" action="">
      Bezeichnung: <input type="text" name="bezeichnung" size="50" maxlength="100">
      <br>
      Ziel URL: <input type="text" name="zielurl" size="50" maxlength="150">
      <br>
      <input type="hidden" name="datum" value="<?php echo date('Y-m-d H:i:s'); ?>">
      <br>
      OK ........ <input type="submit" name="go" value="Speichern">
    </form>
    
    <br>
    <br>
    
    <?php 
    // ---------------------------------------------------------------- 
    
    }
    
    // ---------------------------------------------------------------- 
    ?>
    
    
    <br>
    <br>
    
    </body>
    </html>


    jetzt mit der Funktion: escape_user_input() ... zum Filtern der User-Eingaben

    und mit der Funktion: clean_dirname() ... damit Directory keine Sonderzeichen bekommt


    aber ...
    ... auch wenn Du den Seiten Subdomains zuordnen willst,
    ... dann geht das ebenso dynamisch (z.B. mit mod_rewrite)
    ... ohne solche statischen Ordner und Dateien erstellen zu müssen.
  9. Autor dieses Themas

    funnyweb

    Kostenloser Webspace von funnyweb

    funnyweb hat kostenlosen Webspace.

    favoriten schrieb:
    Hallo

    hier nochmal eine erweiterte Version von meinem BSP

    mit der Variable
    $runtype = 'test';
    kannst Du einstellen,
    ob das Script nur eine Test DEBUG Ausgabe mit <pre> macht
    oder ob es wirklich den Ordner und die Datei erstellen soll


    <?php 
    // ---------------------------------------------------------------- 
    
    header("Content-Type: text/html; charset=utf-8");
    
    mb_internal_encoding('UTF-8');
    
    ## $runtype = 'live';  // ----- erstellt Dir und File ----- 
    
    $runtype = 'test';  // ----- nur Test DEBUG Ausgabe ----- 
    
    
    // ---------------------------------------------------------------- 
    ?>
    <html>
    <head>
    <title>Seite erstellen</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    
    <body bgcolor="#FFFFFF" text="#000000">
    <br>
    
    <h1>Seite erstellen</h1>
    
    <hr>
    
    <?php 
    // ---------------------------------------------------------------- 
    
    function escape_user_input($strvar) { 
    	
    	if (mb_detect_encoding($strvar, 'UTF-8', true) === false) { $strvar = utf8_encode($strvar); } 
    	
    	$strvar = strip_tags($strvar); 
    	$strvar = stripslashes($strvar); 
    	$strvar = html_entity_decode($strvar); 
    	
    	$replace = ' '; 
    	$strvar = str_replace("\s",$replace,$strvar); 
    	$strvar = trim(preg_replace('/ {2,}/',$replace,$strvar)); 
    	
    	$zeichen = '0-9a-zA-Z_ \-'; 
    	$umlaute = utf8_encode('äöüßÄÖÜ'); 
    	$pattern = '/'.$zeichen.$umlaute.'/u'; 
    
    	$strvar = preg_replace($pattern,$replace,$strvar); 
    	$strvar = trim($strvar,$replace); 
    
    	return $strvar; 
    	
    }
    
    
    // ---------------------------------------------------------------- 
    
    
    function clean_dirname($strvar) { 
    
    	$spacer = '-'; 
    	$strvar = mb_strtolower($strvar); 
    	$strvar = str_replace(' ', $spacer, $strvar); 
    	$strvar = str_ireplace(array(utf8_encode('ä'),utf8_encode('ö'),utf8_encode('ü'),utf8_encode('ß')), array('ae','oe','ue','ss'), $strvar); 
    	$strvar = trim($strvar,$spacer); 
    
    	return $strvar; 
    	
    }
    
    // ---------------------------------------------------------------- 
    
    
    
    if (!empty($_POST['bezeichnung']) && !empty($_POST['zielurl'])) { 
    
    $go_bezeichnung = trim($_POST['bezeichnung']); 
    $go_zielurl = trim($_POST['zielurl']); 
    $go_datum = trim($_POST['datum']); 
    
    
    $go_bezeichnung = escape_user_input($go_bezeichnung); 
    $go_zielurl = escape_user_input($go_zielurl); 
    
    $go_dirname = clean_dirname($go_bezeichnung); 
    
    
    // ------------------------------------------ 
    
    $content = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <title>'.$go_bezeichnung.'</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <meta http-equiv="refresh" content="3; URL='.$go_zielurl.'">
      <meta name="date" content="'.$go_datum.'">
    </head>
    
    <body bgcolor="#FFFF33" text="#000000" link="#0000CC">
    
      <div align="center">
        <h1>'.$go_bezeichnung.'</h1>
        <br>
        <h3>Sie werden in K&uuml;rze weitergeleitet.</h3>
        <br>
        <p>Falls nicht, klicken Sie bitte <a href="'.$go_zielurl.'" title="'.$go_bezeichnung.'"><strong style="font-size:24px;">hier</strong></a>.</p>
        <br>
      </div>
      
    </body>
    
    </html>
    '; 
    
    // ------------------------------------------ 
    
    
    if (!is_dir($go_dirname)) { 
    
    $filepath = ''; 
    
    // ------------------------------------------ 
    
    if ($runtype == 'live') { 
    	
    	$new_dir = mkdir($go_dirname, 0766); 
    	
    	if (!$new_dir) { die('Fehler ... konnte das Verzeichnis nicht erstellen'); } 
    	else { print '<p>OK ... Verzeichnis: <a href="'.$go_dirname.'" target="_blank"><strong>'.$go_dirname.'</strong></a> wurde erstellt</p>'."\n"; } 
    	
    	$filename = 'index.html'; 
    	$filepath = $go_dirname.'/'.$filename; 
    	
    	$new_file = file_put_contents($filepath, $content, LOCK_EX); 
    	
    	if (!$new_file) {
    	 die('Fehler ... konnte die Datei nicht erstellen'); 
    	} 
    	else { 
    	 chmod($filepath, 0755); 
    	 print '<p>OK ... Datei: <a href="'.$filepath.'" target="_blank"><strong>'.$filepath.'</strong></a> wurde erstellt</p>'."\n"; 
    	} 
    
    }
    else { 
    	
    	print '<br>'."\n"; 
    	print '<br>'."\n"; 
    	
    	print '<pre style="text-align:left; background:#DEDEDE;">'."\n"; 
    	print htmlentities(print_r($content,true)); 
    	print '</pre>'."\n"; 
    
    }
    
    // ------------------------------------------ 
    
    
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Erstellt am: '.$go_datum.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<p>PathDirName: '.$go_dirname.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Bezeichnung: '.$go_bezeichnung.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<p>URL Adresse: '.$go_zielurl.'</p>'."\n"; 
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<br>'."\n"; 
    print '<p>Neu starten .... <a href="javascript:history.back();">Seite erstellen</a></p>'."\n"; 
    print '<br>'."\n"; 
    
    // ------------------------------------------ 
    
    }
    else { 
    print '<br>'."\n"; 
    print '<p>Fehler .... Das Verzeichnis <a href="'.$go_dirname.'" target="_blank"><strong>'.$go_dirname.'</strong></a> existiert bereits.'."\n"; 
    print '<br>'."\n"; 
    }
    
    // ------------------------------------------ 
    
    }
    else { 
    
    // ---------------------------------------------------------------- 
    ?>
    
    <form name="form1" method="post" action="">
      Bezeichnung: <input type="text" name="bezeichnung" size="50" maxlength="100">
      <br>
      Ziel URL: <input type="text" name="zielurl" size="50" maxlength="150">
      <br>
      <input type="hidden" name="datum" value="<?php echo date('Y-m-d H:i:s'); ?>">
      <br>
      OK ........ <input type="submit" name="go" value="Speichern">
    </form>
    
    <br>
    <br>
    
    <?php 
    // ---------------------------------------------------------------- 
    
    }
    
    // ---------------------------------------------------------------- 
    ?>
    
    
    <br>
    <br>
    
    </body>
    </html>


    jetzt mit der Funktion: escape_user_input() ... zum Filtern der User-Eingaben

    und mit der Funktion: clean_dirname() ... damit Directory keine Sonderzeichen bekommt


    aber ...
    ... auch wenn Du den Seiten Subdomains zuordnen willst,
    ... dann geht das ebenso dynamisch (z.B. mit mod_rewrite)
    ... ohne solche statischen Ordner und Dateien erstellen zu müssen.
    Hallo favoriten, du hast dir ja richtig Mühe gemacht! Ganz vielen lieben Dank! :smile:
  10. 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!