2010-09-23 1 views
35

Quale approccio qualcuno potrebbe suggerire di salvare la pagina corrente come file HTML sul server? In questo caso, nota anche che la sicurezza è non un problema.Salva la pagina corrente come HTML sul server

Ho passato ore interminabili a cercare questo, e non ho trovato nulla.

Il vostro aiuto è molto apprezzato, grazie!

Modifica

Grazie a tutti per il vostro aiuto, è stato molto apprezzato.

+1

si hanno chiesto la stessa domanda a soli 14 minuti fa: [Fonte risparmio del Sé (PHP)] - perché non si tenta di ottenere una risposta c'è invece di inviare di nuovo? (http: // StackOverflow.it/questions/3769504/saving-source-of-self-php) – oezi

+1

oezi - Beh, sembra che abbia ragione a creare questa nuova domanda. Ho una risposta corretta ... Nuova domanda, persone diverse, risposte diverse. Puoi andare avanti e chiudere questa domanda ora. –

+0

Queste domande non sono esattamente le stesse. Sono molto simili ma differiscono nel target: qui è il server, nell'altra questione è il browser stesso. – nalply

risposta

59

Se si intende salvare l'output di una pagina in un file, è possibile utilizzare il buffering per farlo. Le funzioni che devi utilizzare sono ob_start e ob_get_contents.

<?php 
// Start the buffering // 
ob_start(); 
?> 
Your page content bla bla bla bla ... 

<?php 
echo '1'; 

// Get the content that is in the buffer and put it in your file // 
file_put_contents('yourpage.html', ob_get_contents()); 
?> 

Ciò salverà il contenuto della pagina nel file yourpage.html.

+2

Grazie mille. Mi hai appena salvato la vita. – asdfkjasdfjk

+0

Ho anche avuto la stessa domanda. Grazie per la risposta. * MA * dove viene salvato questo 'yourpage.html'? Non ho trovato il file nella mia cartella di directory – AlwaysANovice

+2

@Walahh A meno che non sia stato chiamato 'chdir', dovrebbe essere nella stessa cartella dello script richiesto. Se non sei sicuro di cosa si tratta, puoi chiamare 'getcwd'. – HoLyVieR

3

Utilizzare JavaScript per inviare document.getElementsByTagName('html')[0].innerHTML come valore di input nascosto o da ajax sul lato server. Questo è più utile del buffering dell'output se il contenuto viene successivamente attraversato/modificato da JavaScript, di cui il lato server potrebbe non avere alcuna nozione.

+0

Grazie, BalusC. Quindi, se uso var $ s = document.getElements ... (in php) posso quindi scrivere l'intera var su un file sul server? –

+0

JavaScript viene eseguito sul browser Web, non sul server web. Conosci JS? Comunque, visto il tuo commento, penso che questa risposta non è dopotutto ciò di cui hai bisogno :) Probabilmente preferisci salvare la pagina HTML generata da PHP, non la pagina HTML attualmente aperta (in tutto il suo stato lato client corrente). Controlla la risposta di Holyvier. – BalusC

+0

Grazie BalusC :) –

9

Penso che possiamo usare Output Control Functions di PHP, è possibile utilizzare prima salvare il contenuto nella variabile e poi salvarli nel nuovo file, la prossima volta è possibile testarlo, il file html esiste, quindi renderlo nuovamente generare la pagina.

<?php 
$cacheFile = 'cache.html'; 

if ((file_exists($cacheFile)) && ((fileatime($cacheFile) + 600) > time())) 
{ 
    $content = file_get_contents($cacheFile); 
    echo $content; 
} else 
{ 
    ob_start(); 
    // write content 
    echo '<h1>Hello world to cache</h1>'; 
    $content = ob_get_contents(); 
    ob_end_clean(); 
    file_put_contents($cacheFile,$content); 
    echo $content; 
} 
?> 

Esempio tratto da: http://www.php.net/manual/en/function.ob-start.php#88212

+0

Grazie Chetan :) –

+0

Siete i benvenuti .. –

1

mi sento è necessario riccio, in modo che è possibile salvare in uscita alcuna pagina. Usa curl con returntransfer true. e fai quello che vuoi con l'output.

+0

Grazie, Satya. :) –

3

Nel caso in cui si sta cercando di salvare la pagina completa html insieme con i CSS, immagini e script in un unico file HTML, è possibile utilizzare questa classe ho scritto:

Questa classe può salvare pagine HTML completi di immagini, CSS e JavaScript.

Prende l'URL di una determinata pagina e lo recupera per archiviare in un dato file .

La classe può analizzare il codice HTML e determinare quali immagini, file CSS e JavaScript di cui ha bisogno, così i file vengono scaricati anche e salvato all'interno della pagina HTML salvata in un file locale.

Opzionalmente è possibile saltare il codice JavaScript, mantenere solo il contenuto della pagina e comprimere la pagina risultante rimuovendo gli spazi.

http://www.phpclasses.org/package/8305-PHP-Save-HTML-pages-complete-with-images-CSS-and-JS.html

0
//function to use curl to get the content of the page. 
//parameter used url and $data for the posting credentials to retrieve information. 

function httpPost($url, $data){ 
    $curl = curl_init($url); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

    $response = curl_exec($curl); 
    curl_close($curl); 
    return $response; 
} 

// 
$filename="abc.html"; // whatever name you want. 
$myfile = fopen($filename, "w") or die("Unable to open file!"); 
$txt = httpPost(<url>, ""); //<url> replace by url you want. 
fwrite($myfile, $txt); 
fclose($myfile);