creare una pagina html dimanicamente con php

helpdesk

Utente Attivo
30 Set 2009
726
0
16
Pesaro
Ragazzi è possibile creare dinamicamente una pagina html con php?
se è possibile conoscete qualche risorsa o tutorial in merito?
 
come scrivere in un file di testo, cambia solo l'estensione
PHP:
<?php

$file = "pagina.html";

$codice = "
<html>
<head><title>Prova</title></head>
<boby></body>
</html>
";

$fo = fopen($file, "w");
fwrite($fo, $codice);
fclose($fo);
?>
 
Grazie mille per la risposta ma non succede nulla.
Nel senso che non appare neanche la scritta vediamo e se inserisco un semplice div mi da errore
Ho inserito questo codice nel file php

PHP:
<?php

$file = "pagina.html";
$codice = "
<html>
<head>
<title>Prova</title></head>
<boby>
vediamo
</body>
</html>

";
$fo = fopen($file, "w");
fwrite($fo, $codice);
fclose($fo);

?>
 
allora non ho capito
il codice che ho postato crea un file html di nome pagina nella stessa cartella dove viene eseguito
 
si funziona hai ragione tu ma quindi quando al link mando a prova.php crea la pagina nella stessa directory online?
 
si
se vuoi crearlo da un altra parte cambi il percorso
PHP:
$file = "cartella/pagina.html";
 
tutto è possibile
PHP:
<?php
if (isset($_POST["crea"])) {
    $file = "pagina.html";

    $codice = "
<html>
<head><title>Prova</titile></head>
<boby></body>
</html>
";

    $fo = fopen($file, "w");
    fwrite($fo, $codice);
    fclose($fo);
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <input type="submit" name="crea" value="Crea Pagina"/>
</form>
 
tutto è possibile
PHP:
<?php
if (isset($_POST["crea"])) {
    $file = "pagina.html";

    $codice = "
<html>
<head><title>Prova</titile></head>
<boby></body>
</html>
";

    $fo = fopen($file, "w");
    fwrite($fo, $codice);
    fclose($fo);
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <input type="submit" name="crea" value="Crea Pagina"/>
</form>

Io ho provato però mi da un errore altervista che è: La pagina http://miosito.altervista.org/%3C?php%20echo%20$_SERVER[%27PHP_SELF%27]%20?%3E non è presente.

Come mai? dove sbaglio? eppure ho inserito il codice in questo modo

HTML:
<?php 
if (isset($_POST["crea"])) { 
    $file = "pagina.html"; 
    $codice = " 
<html> 
<head><title>Prova</titile></head> 
<boby></body> 
</html> 
"; 
    $fo = fopen($file, "w"); 
    fwrite($fo, $codice); 
    fclose($fo); 
} 
?> 

<html>
<head>

  <title></title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> 
    <input type="submit" name="crea" value="Crea Pagina"/> 
</form>
</body>
</html>
 
Puoi anche fare qualche cosa di più creativo :) per esempio evitare di usare un form per la creazione della pagina:
PHP:
<?php 
if ( isset( $_GET['crea'] ) && $_GET['crea'] == 'yes' ) { 
    $codice =<<<PAGINAHTML 
<html> 
<head><title>Prova</titile></head> 
<boby>
  <h1>Pagina di prova</h1>
</body> 
</html> 
PAGINAHTML; 

    $fo = fopen( 'pagina.html', "w" ); 
    fwrite( $fo, $codice ); 
    fclose( $fo ); 
} 
?><html>
<head>

  <title></title>
</head>
<body>
    <input type="button" name="crea" value="Crea Pagina" onclick="location.assign( 'http://tuo_url/<?php echo $_SERVER['PHP_SELF']; ?>?crea=yes' )">
</body>
</html>

Per non parlare di non usare un brutto bottone standard ( che comunque puoi modificare tramite css ) ma un comodo link, sostituendo l'input con l'ancora, così:
HTML:
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?crea=yes">Crea la pagina</a>

Alla fine quel che fai è creare una chiamata tramite GET in cui passi un valore attraverso la coppia crea = yes, se questa c'è crea il file, salvandolo poi nel disco.
Ovviamente non ci sono dati passati oltre al crea=yes, via GET si possono passare solo 256 caratteri meno la lunghezza dell'url completo, insomma va bene per queste cose ma se devi passare informazioni da mettere nel tuo file html, allora torni al form e invii tramite POST.
Ho usato l'heredoc per creare il file perché ti da più possibilità, per esempio non avrai i soliti problemi di escape ( la barretta rovescia ) da mettere davanti agli apici, singoli o doppi, creando il file html.
Dubito che ti basta l'esempietto :)
 

Discussioni simili