Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203

    Inserire il codice sorgente html in una variabile

    Esiste il modo per inserire il codice html di una pagina web in una variabile?

  2. #2
    Si puo' fare in diversi modi. Se il file html si trova in locale puoi usare fopen() e vai a colpo sicuro
    Se invece vuoi aprire un url di una pagina web a disposizione su internet la funzione fopen potrebbe
    restituire un errore (forse nel 10% dei casi). Comunque ecco il codice:
    Codice PHP:
     $My_Path "PATH"# Percorso preferibilmente del file in locale
     
    $Page_html_source "";
     
    $file_open_http =  @fopen($My_Path"r") or $Page_html_source .= 'errore';
     if(
    $Page_html_source != 'errore')
     {
          while(
    $little fread($file_open_http100))
          {
              
    $Page_html_source .= $little;
          }
     } else {
         print(
    "Errore!");
     }
     
    fclose($file_open_http); 
    In linea di massima e' un sistema valido. Se ti interessa con il comando GET in linux puoi estrpolare
    solo determinate informazioni come per esempio tutti i link oppure solo il testo.

  3. #3
    leggere solo 100 byte non conviene, praticamente tutti i sistemi operativi leggono 8kb per volta quindi leggere la stessa quantità letta dal sistema operativo è estremamente più efficente (chiamare fopen per leggere 100 byte per volta vuol dire devi chiamare l'fread 82 volte per leggere i dati che lui ha letto in un colpo)

    detto questo, c'è la comoda funzione file_get_contents ( www.php.net/file_get_contents ) se non hai bisogno di funzionalità particolari (ad esempio il parsing mentre leggi, oppure se il file lo devi inviare direttamente al browser senza però tenerlo in memoria e via dicendo)

    per finire, i problemi relativi ad errori nella lettura di pagina html restituite da webserver possono essere dovuti ad un flag presente nel php.ini che "disattiva" questo tipo di streams (http://, ftp:// e via dicendo) per fopen ... la direttiva è questa http://www.php.net/manual/en/filesys...llow-url-fopen e la si può verificare tramite un phpinfo() ... anche se c'è scritto fopen fa riferimento a tutte le funzioni che accedono ai dischi tramite stream ed in realtà può essere bypassata con facilità se si ci scrive un wrapper che gestisce la cosa

    ad esempio se si ci scrive uno stream wrapper ( http://php.net/manual/en/book.stream.php ) che utilizza le curl, se presente, o ancora meglio fsockopen o le socket si bypassa in toto il problema: ovviamente se il provider blocca le richieste sulla porta 80 in uscita ... c'è poco da fare

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    Innanzitutto ringrazio tutti anticipatamente per la disponibilità. Ora con calma proverò le vaie soluzioni.

    In buona sostanza, visto che feedburner ultimamanete è impazzito e la newsletter non funziona più ho deciso di crearmene una mia tutta automatizzata.

    Ho predisposto un "generatore" in php che, il tale giorno della settimana, effettua le sue belle queries e crea il contenuto della newsletter

    http://www.miolegale.it/newsletter/admin/gen.php

    Il codice html della pagina di cui sopra deve essere letto e finire memorizzato nella variabile che a sua volta verrà utilizzata per contentere il corpo del testo della newsletter stessa.

    Poi, utilizzando i cronjobs del server programmerò l'invio automatico della newsletter che si "autogenera".

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    http://www.miolegale.it/info.php

    purtroppo i miei tentativi sono stati vani a causa delle impostazioni del server.

    Se volessi usare la funzione file_get_contents è sufficiente l'attivazione di allow_url_fopen ?

  6. #6
    Dipende.

    Se il web server è dietro ad un firewall/nat/proxy, potrebbe non essere sufficiente.

    Chiedi al fornitore di hosting.

    In alternativa puoi provare con le funzioni curl oppure con fsockopen (se disponibile).

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    Grazie a tutti per i consigli.
    Ho provato in locale la funzione file_get_contents ed è uno spettacolo!
    Ora vediamo se mi attivano la stessa sul server e dovrei essere apposto....

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    Funzione attivata anche in remoto per cui sono ormai prossimo all'obiettivo ...ma...

    ...problema è in htaccess ora.

    Mi spiego:

    Questo è il file di prova

    http://www.miolegale.it/newsletter/admin/1.php

    il contenuto di questo file è il seguente:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento senza titolo</title> </head> <body> <?php $gen = file_get_contents('http://miolegale.it/newsletter/admin/gen.php'); echo $gen; ?>
    tuttavia il risultato è un redirect 301

    se cancello dalla directory principale htaccess (che uso per il mod rewrite) funziona invece perfettamente per cui http://www.miolegale.it/newsletter/admin/1.php rigenera a video il file indicato nella funzione file_get_contents ovvero http://miolegale.it/newsletter/admin/gen.php

  9. #9
    Perchè devi lavorare con file_get_contents() ed un URL quando il file che devi ottenere è locale?

    Perchè non usi include()?

    Example #6 Using output buffering to include a PHP file into a string
    http://www.php.net/manual/en/function.include.php

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    mi sono perso nell'esempio....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.