<?php
// Versione 1.1
//
// Version history
//
// 1.1 Inseriti ritorni a-capo nella stampa di debug per risolvere errori a monte
// 1.0 Initial version by D. Saletti
class page_info {
//Attivazione Moduli
var $m_ping;
var $m_whois;
var $m_contaparole;
var $m_dimensione;
var $m_parse_sito;
var $m_autocertificazioni;
var $m_w3c;
var $m_hera;
var $original_url; //Url iniziale senza redirect
var $main_url; //Url della pagina
var $debag_status; //Siamo in debag=1 no=0
var $dominio; //il dominio
var $url_relativo; //L'url senza il nome del file
var $path; //Il percorso senza il nome del file
var $host; //Il nome del sito (per il ping)
var $ping_ip; //L'ip restituito dal ping
var $ping_macchina; //Il nome del server restituito dal ping
var $whois_proprietario; //Il probabile proprietario tornato da whois
var $whois_manutentore; //Il probabile manutentore tornato da whois
var $whois_response; //Il responso completo di whois
//info ricavate dall'header
var $page_state; //Stato della pagina (raggiungibilità)
var $warnings; //Eventuali notizie ulteriori sul page_state
var $page_date; //Data ultima modifica
var $page_content; //il tipo di contenuto (text,doc,pdf...)
var $page_language; //il linguaggio utilizzato (PHP,ASP,...)
var $page_language_ver; //la versione del linguaggio
var $page_server; //il server utilizzato (IIS,Apache...)
var $page_server_ver; //la versione del server
var $page_redirect_path; // path di un eventuale redirect
var $page_cont_len; //la dimensione (vale soprattutto per le immagini)
var $page_file; //Il contenuto della pagina
var $header_http; //L'header http ritornato
var $a_links_image; //Array che contiene i link assoluti alle immagini
var $a_links_other_image; //Array che contiene le altre immagini trovate nel file
var $a_links_css; //Array che contiene i link assoluti ai css
var $a_links_other_css; //Array che contiene i fogli di stile non utilizzati a video url+";"+tipo
var $a_links_css_image; //Array che contiene le immagini trovate nei files css
var $a_links_js; //Array che contiene tutti i file esterni di script
var $a_links_frame; //Array che contiene tutti i frame
var $trovato_js; //si/no presenza di script all'interno della pagina
var $trovato_frame; //si/no presenza di frame all'interno della pagina
var $a_links_interni; //Array che contiene i link interni al dominio presenti nella pagina
var $a_links_esterni; //Array che contiene i link esterni al dominio presenti nella pagina
var $numero_caratteri; //Numero di caratteri (non tag e non script)
var $numero_parole; //Numero di parole (non tag e non script)
var $dimensione_pagina; //Dimensione della pagina da sola
var $dimensione_immagini; //Dimensione delle immagini
var $dimensione_css; //Dimensione dei css
var $dimensione_javascript; //Dimensione dei javascript
var $dimensione_totale; //Dimensione totale della pagina
//Validazione w3c
var $validazione_state; //Ho raggiunto il sito del validatore
var $validazione_risultato;
var $validazione_encoding;
var $validazione_doctype;
var $validazione_n_errori; //numero errori
var $validazione_a_errori; //array che contiene gli errori
var $validazione_n_warnings;
var $validazione_a_warnings;
var $validazione_n_info;
var $validazione_a_info;
//Validazione hera
var $hera_state; //Ho raggiunto il validatore
var $hera_daverificare_A;
var $hera_errori_A;
var $hera_corretti_A;
var $hera_nonapplicabili_A;
var $hera_daverificare_AA;
var $hera_errori_AA;
var $hera_corretti_AA;
var $hera_nonapplicabili_AA;
var $hera_daverificare_AAA;
var $hera_errori_AAA;
var $hera_corretti_AAA;
var $hera_nonapplicabili_AAA;
//link validatori w3c e altri
var $validatore_w3c_css; //c'è un link di questo tipo http://jigsaw.w3.org/css-validator/
var $validatore_w3c_html; //c'è un link di questo tipo http://validator.w3.org/check/referer
var $validatore_w3c_wai; //c'è un link di questo tipo http://www.w3.org/WAI/
var $validatore_pubbliacesso; //c'è un link di questo tipo http://www.pubbliaccesso.gov.it/logo/logo.php
function page_info($url,$debug=0) {
/*
Questa funzione serve per inizializzare la classe prende due parametri
url: sito da analizzare
debug: (predefinito 0) serve per dichiarare il tipo di esecuzione, in modalità debug ci sarà un output specifico per il debug
La funzione dato l'url ne ricava le varie parti e le memorizza
*/
if (!stristr($url, '://')) {
$url="http://".$url;
}
$this->main_url = $url;
$this->original_url = $url;
$this->debag_status = $debug;
$a_url=remove_file_from_url($url);
$this->url_relativo=$a_url["relativo"];
$this->dominio=$a_url["assoluto"];
$this->path=$a_url["path"];
$this->host=$a_url["host"];
}
function page_redirect($url) {
/*
Questa funzione serve per reinizializzare la classe qual'ora vi sia un http redirect
url: redirezione
*/
$this->page_redirect_path = "";
if (!stristr($url, '://')) {
$url="http://".$url;
}
$this->main_url = $url;
$a_url=remove_file_from_url($url);
$this->url_relativo=$a_url["relativo"];
$this->dominio=$a_url["assoluto"];
$this->path=$a_url["path"];
$this->host=$a_url["host"];
}
function get_head() {
/*
Questa funzione (non usata nell'analisi automatica) analizza l'head di un url ottenendone:
server: il server utilizzato (IIS,Apache...)
server_ver: la versione del server
language: il linguaggio utilizzato (PHP,ASP,...)
language_ver: la versione del linguaggio
content: il tipo di contenuto (text,doc,pdf...)
state: la raggiungibilità del sito
date: data ultima modifica
redirect_path: path di un eventuale redirect
page_cont_len: la dimensione (vale soprattutto per le immagini)
*/
$urlparts = prepara_url($this->main_url);
$all = "*/*";
$request = "HEAD ".$urlparts['path']." HTTP/1.1\r\nHost: ".$urlparts['host'].$urlparts['portq']."\r\nAccept: $all\r\nAccept-Charset: iso-8859-1\r\nAccept-Encoding: identity\r\nUser-Agent: ".user_agent."\r\n\r\n";
if (substr($this->main_url, 0, 5) == "https") {
$target = "ssl://".$urlparts['host'];
} else {
$target = $urlparts['host'];
}
$fsocket_timeout = 10;
$errno = 0;
$errstr = "";
$linkstate = "ok";
if (!$fp=fsockopen($target, $urlparts['port'], $errno, $errstr, $fsocket_timeout)) {
$this->page_state = "NOHOST";
} else {
socket_set_timeout($fp, 30);
if (!fputs($fp, $request)) {
$this->page_state = "Cannot send request";
} else {
$answer = fgets($fp, 4096);
if ($this->debag_status==1) {
echo $answer."<br />\n";
}
$regs = Array ();
if (ereg("HTTP/[0-9.]+ (([0-9])[0-9]{2})", $answer, $regs)) {
$httpcode = $regs[2];
$full_httpcode = $regs[1];
//Va bene anche forbidden (403) in quanto alcuni siti negano l'accesso via head ma non via get
if ($httpcode <> 2 && $httpcode <> 3 && $full_httpcode <> 403) {
$this->page_state = "Unreachable: http $full_httpcode";
$linkstate = "Unreachable";
}
}
if ($linkstate <> "Unreachable") {
$content = "";
while ($answer) {
$answer = fgets($fp, 4096);
if ($this->debag_status==1) {
echo $answer."<br />\n";
}
if (ereg("Location: *([^\n\r ]+)", $answer, $regs) && $httpcode == 3 && $full_httpcode != 302) {
$this->page_redirect_path = $regs[1];
$this->page_state = "Relocation: http $full_httpcode";
fclose($fp);
}
if (eregi("Last-Modified: *([a-z0-9,: ]+)", $answer, $regs)) {
$this->page_date = $regs[1];
}
if (eregi("^X-Powered-By: *([a-z0-9,:. -]+)/*([a-z0-9,:. -]*)", $answer, $regs)) {
$this->page_language = $regs[1];
$this->page_language_ver = $regs[2];
}
if (eregi("^Server: *([a-z0-9,:. -]+)/*([a-z0-9,:. -]*)", $answer, $regs)) {
$this->page_server = $regs[1];
$this->page_server_ver = $regs[2];
}
if (eregi("^Content-Length: *([0-9]+)", $answer, $regs)) {
$this->page_cont_len = $regs[1];
}
if (eregi("Content-Type:", $answer)) {
$content = $answer;
$answer = '';
}
}
$socket_status = socket_get_status($fp);
if (eregi("Content-Type: *([a-z/.-]*)", $content, $regs)) {
if ($regs[1] == 'text/html' || $regs[1] == 'text/' || $regs[1] == 'text/plain') {
$this->page_content = 'text';
$this->page_state = 'ok';
} else if ($regs[1] == 'application/pdf') {
$this->page_content = 'pdf';
$this->page_state = 'ok';
} else if (($regs[1] == 'application/msword' || $regs[1] == 'application/vnd.ms-word')) {
$this->page_content = 'doc';
$this->page_state = 'ok';
} else if (($regs[1] == 'application/excel' || $regs[1] == 'application/vnd.ms-excel')) {
$this->page_content = 'xls';
$this->page_state = 'ok';
} else if (($regs[1] == 'application/mspowerpoint' || $regs[1] == 'application/vnd.ms-powerpoint')) {
$this->page_content = 'ppt';
$this->page_state = 'ok';
} else {
$this->page_state = "Not text or html";
}
} else {
if ($socket_status['timed_out'] == 1) {
$this->page_state = "Timed out (no reply from server)";
} else {
$this->page_state = "Not text or html";
}
}
//Setto a non definito le variabili che non lo sono
if ($this->page_language=="") {
$this->page_language="non definito";
}
if ($this->page_server=="") {
$this->page_server="non definito";
}
if ($this->page_language_ver=="") {
$this->page_language_ver="non definito";
}
if ($this->page_server_ver=="") {
$this->page_server_ver="non definito";
}
}
}
}
fclose($fp);
}
function get_sito() {
/*
Questa funzione restituisce il contenuto dell'url
state: stato del sito (NOHOST,Cannot send request,timeout,ok)
file: il contenuto del sito
header_http: l'header http
*/
$urlparts = prepara_url($this->main_url);
$all = "*/*";
$request = "GET ".$urlparts['path']." HTTP/1.0\r\nHost: ".$urlparts['host'].$urlparts['portq']."\r\n\r\n";
if ($this->debag_status==1) {
logga("inizializzata richiesta: ".$request,-1);
}
$fsocket_timeout = 30;
if (substr($this->main_url, 0, 5) == "https") {
$target = "ssl://".$urlparts['host'];
} else {
$target = $urlparts['host'];
}
$errno = 0;
$errstr = "";
$fp = @ fsockopen($target, $urlparts['port'], $errno, $errstr, $fsocket_timeout);
if ($this->debag_status==1) {
logga("Soket aperto",-1);
}
if (!$fp) {
$this->page_state = "NOHOST";
//printConnectErrorReport($errstr);
} else {
if (!fputs($fp, $request)) {
$this->page_state = "Cannot send request";
if ($this->debag_status==1) {
logga("Richiesta fallita",-1);
}
} else {
if ($this->debag_status==1) {
logga("Richiesta riuscita",-1);
}
$data = null;
socket_set_timeout($fp, $fsocket_timeout);
$status = socket_get_status($fp);
if ($this->debag_status==1) {
logga("Inizio lettura dati",-1);
}
while (!feof($fp) && !$status['timed_out']) {
$data .= fgets($fp, 8192);
$status = socket_get_status($fp);
}
if ($this->debag_status==1) {
logga("Fine lettura dati",-1);
}
fclose($fp);
if ($this->debag_status==1) {
logga("Chiusura socket",-1);
}
if ($status['timed_out'] == 1) {
$this->page_state = "timeout";
} else {
$this->page_state = "ok";
}
$this->header_http = substr($data, 0, strpos($data, "\r\n\r\n") + 4);
$this->page_file = substr($data, strpos($data, "\r\n\r\n") + 4);
$this->dimensione_pagina=strlen($this->page_file);
}
}
}
function check_for_redirect() {
$chunklist = array ();
$chunklist = explode(">", $this->page_file);
$jsfun = 0;
foreach ($chunklist as $id=>$chunk) {
if (stristr($chunk, "meta") && stristr($chunk, "HTTP-EQUIV") && stristr($chunk, "Refresh")) {
if (preg_match("/(url)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs)) {
$this->page_redirect_path = $regs[2];
$this->page_state = "Relocation via meta";
}
}
//I redirect js li cerco solo se non ci sono funzioni
if (stristr($chunk,"function")) {
$jsfun = 1;
}
if (preg_match("/(document.location.href)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs) && $jsfun == 0) {
$this->page_redirect_path = $regs[2];
$this->page_state = "Relocation via js";
}
if (preg_match("/(location.replace)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs) && $jsfun == 0) {
$this->page_redirect_path = $regs[2];
$this->page_state = "Relocation via js";
}
if (preg_match("/(window.location.href)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs) && $jsfun == 0) {
$this->page_redirect_path = $regs[2];
$this->page_state = "Relocation via js";
}
if (preg_match("/(window.location)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs) && $jsfun == 0) {
$this->page_redirect_path = $regs[2];
$this->page_state = "Relocation via js";
}
if (preg_match("/(window.document.location)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs) && $jsfun == 0) {
$this->page_redirect_path = $regs[2];
$this->page_state = "Relocation via js";
}
}
}
function parse_header_http() {
/*
Questa funzione analizza l'header http ottenendone:
server: il server utilizzato (IIS,Apache...)
server_ver: la versione del server
language: il linguaggio utilizzato (PHP,ASP,...)
language_ver: la versione del linguaggio
content: il tipo di contenuto (text,doc,pdf...)
state: la raggiungibilità del sito
date: data ultima modifica
redirect_path: path di un eventuale redirect
page_cont_len: la dimensione (vale soprattutto per le immagini)
*/
$chunklist = array ();
$chunklist = explode("\r\n", $this->header_http);
$answer = array_shift($chunklist);
if ($this->debag_status==1) {
echo $answer."<br />\n";
}
$regs = Array ();
if (ereg("HTTP/[0-9.]+ (([0-9])[0-9]{2})", $answer, $regs)) {
$httpcode = $regs[2];
$full_httpcode = $regs[1];
if ($httpcode <> 2 && $httpcode <> 3) {
$this->page_state = "Unreachable: http $full_httpcode";
$linkstate = "Unreachable";
}
}
$content = "";
while ($answer) {
$answer = array_shift($chunklist);
if ($this->debag_status==1) {
echo $answer."<br />\n";
}
if (ereg("Location: *([^\n\r ]+)", $answer, $regs) && $httpcode == 3) {
$this->page_redirect_path = $regs[1];
$this->page_state = "Relocation: http $full_httpcode";
}
if (eregi("Last-Modified: *([a-z0-9,: ]+)", $answer, $regs)) {
$this->page_date = $regs[1];
}
if (eregi("^X-Powered-By: *([a-z0-9,:. -]+)/*([a-z0-9,:. -]*)", $answer, $regs)) {
$this->page_language = $regs[1];
$this->page_language_ver = $regs[2];
}
if (eregi("^Server: *([a-z0-9,:. -]+)/*([a-z0-9,:. -]*)", $answer, $regs)) {
$this->page_server = $regs[1];
$this->page_server_ver = $regs[2];
}
if (eregi("^Content-Length: *([0-9]+)", $answer, $regs)) {
$this->page_cont_len = $regs[1];
}
if (eregi("Content-Type:", $answer)) {
$content = $answer;
$answer = '';
}
}
if (eregi("Content-Type: *([a-z/.-]*)", $content, $regs)) {
if ($regs[1] == 'text/html' || $regs[1] == 'text/' || $regs[1] == 'text/plain') {
$this->page_content = 'text';
} else if ($regs[1] == 'application/pdf') {
$this->page_content = 'pdf';
} else if (($regs[1] == 'application/msword' || $regs[1] == 'application/vnd.ms-word')) {
$this->page_content = 'doc';
} else if (($regs[1] == 'application/excel' || $regs[1] == 'application/vnd.ms-excel')) {
$this->page_content = 'xls';
} else if (($regs[1] == 'application/mspowerpoint' || $regs[1] == 'application/vnd.ms-powerpoint')) {
$this->page_content = 'ppt';
} else {
$this->page_state = "Not text or html";
}
} else {
$this->page_state = "Not text or html";
}
//Setto a non definito le variabili che non lo sono
if ($this->page_language=="") {
$this->page_language="non definito";
}
if ($this->page_server=="") {
$this->page_server="non definito";
}
if ($this->page_language_ver=="") {
$this->page_language_ver="non definito";
}
if ($this->page_server_ver=="") {
$this->page_server_ver="non definito";
}
}
function parse_sito() {
/*
Questa funzione dato il file di un sito html trova:
a_links_image
a_links_other_image
a_links_css
a_links_other_css
a_links_js
trovato_js
trovato_frame
a_links_interni
a_links_esterni
a_links_frame
*/
$chunklist = array ();
$chunklist = explode(">", $this->page_file);
$links_immagini = array ();
$links_other_immagini = array ();
$links_css = array ();
$links_other_css = array ();
$links_js = array ();
$links_int = array ();
$links_ext = array ();
$links_frame = array ();
$regs = Array ();
$trovato_js="no";
$this->trovato_frame="no";
foreach ($chunklist as $id=>$chunk) {
$chunk=trim(strtolower($chunk));
//Cerco se ci sono immagini di stile in locale
//solo nei tag
if (!stristr($chunk, "<img ")) {
if (preg_match("/\s*<[\s\S]*\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)\.(png|jpg|jpeg|gif)[\'\" ]?/", $chunk, $regs)) {
$tmp_link = aggiusta_link($regs[1].".".$regs[2],$this->main_url);
if (!array_search($tmp_link,$links_other_immagini)) {
array_push($links_other_immagini, $tmp_link);
}
}
if (preg_match("/\s*<[\s\S]*\s*url\(\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)\.(png|jpg|jpeg|gif)[\'\" ]?/", $chunk, $regs)) {
$tmp_link = aggiusta_link($regs[1].".".$regs[2],$this->main_url);
if (!array_search($tmp_link,$links_other_immagini)) {
array_push($links_other_immagini, $tmp_link);
}
}
}
//Gestione frame (da finire)
if (stristr($chunk, "<frameset ")) {
$this->trovato_frame="si";
}
if (stristr($chunk, "frame") && stristr($chunk, "src")) {
if (eregi("(frame[^>]*src[[:blank:]]*)=[[:blank:]]*[\'\"]?(([[a-z]{3,5}://(([.a-zA-Z0-9-])+(:[0-9]+)*))*([+:%/?=&;\\\(\),._a-zA-Z0-9-]*))(#[.a-zA-Z0-9-]*)?[\'\" ]?", $chunk, $regs)) {
$tmp_link = aggiusta_link($regs[2],$this->main_url);
array_push($links_frame, $tmp_link);
}
}
if (stristr($chunk, "<img ")) {
if (preg_match("/(src)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs)) {
$tmp_link = aggiusta_link($regs[2],$this->main_url);
if (!array_search($tmp_link,$links_immagini)) {
array_push($links_immagini, $tmp_link);
}
}
}
if (stristr($chunk, "<link ")) {
if (preg_match("/(href)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)(.css)[\'\" ]?/", $chunk, $regs)) {
//Verifichiamo se è un tipo caricato o no
$ok=0;
if (preg_match("/(media)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs1)) {
if (strtolower($regs1[2])=="screen" || strtolower($regs1[2])=="screen") {
$ok=1;
}
} else {
//non è specificato nulla quindi si carica
$ok=1;
}
$tmp_link = aggiusta_link($regs[2].".css",$this->main_url);
if ($ok==1) {
if (!array_search($tmp_link,$links_css)) {
array_push($links_css, $tmp_link);
}
} else {
if (!array_search($tmp_link.";".$regs1[2],$links_other_css)) {
array_push($links_other_css, $tmp_link.";".$regs1[2]);
}
}
}
}
if (stristr($chunk, "<script ")) {
$trovato_js="si";
if (preg_match("/(src)\s*=\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)[\'\" ]?/", $chunk, $regs)) {
$tmp_link = aggiusta_link($regs[2],$this->main_url);
if (!array_search($tmp_link,$links_js)) {
array_push($links_js, $tmp_link);
}
}
}
if (stristr($chunk, "<a ") && !stristr($chunk, "mailto:")) {
while (preg_match("/(href)\s*=\s*[\'\"]?(([[a-z]{3,5}:\/\/(([.a-zA-Z0-9-])+(:[0-9]+)*))*([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*))(#[.a-zA-Z0-9-]*)?[\'\" ]?(\s*rel\s*=\s*[\'\"]?(nofollow)[\'\"]?)?/i", $chunk, $regs)) {
if (!isset ($regs[10])) { //se nofollow non è settato
$tmp_link = aggiusta_link($regs[2],$this->main_url);
//interno o esterno??
if (stristr($tmp_link,$this->dominio)) {
if (!array_search($tmp_link,$links_int)) {
array_push($links_int, $tmp_link);
}
} else {
if (!array_search($tmp_link,$links_ext)) {
array_push($links_ext, $tmp_link);
}
}
}
$pos = strpos ($chunk, $regs[0]);
$chunk = substr($chunk, $pos + strlen($regs[0]));
}
}
}
$this->a_links_interni=$links_int;
$this->a_links_esterni=$links_ext;
$this->a_links_image=$links_immagini;
$this->a_links_other_image=$links_other_immagini;
$this->a_links_css=$links_css;
$this->a_links_other_css=$links_other_css;
$this->a_links_js=$links_js;
$this->trovato_js=$trovato_js;
$this->a_links_frame=$links_frame;
$this->find_images_incss();
}
function find_images_incss() {
/*
Questa funzione restituisce gli url delle immagini eventualmente contenute nei css attivi
*/
$links_immagini = array ();
foreach ($this->a_links_css as $css) {
$tmp_css = new page_info($css);
$tmp_css->get_sito();
$chunklist = array ();
$chunklist = explode(">", $tmp_css->page_file);
foreach ($chunklist as $id=>$chunk) {
//Cerco se ci sono immagini nel foglio di stile
if (preg_match("/[\s\S]*url\(\s*[\'\"]?([+:%\/\?~=&;\\\(\),._a-zA-Z0-9-]*)\.(png|jpg|jpeg|gif)[\'\" ]?/", $chunk, $regs)) {
$tmp_link = aggiusta_link($regs[1].".".$regs[2],$tmp_css->main_url);
if (!array_search($tmp_link,$links_immagini)) {
array_push($links_immagini, $tmp_link);
}
}
}
}
$this->a_links_css_image=$links_immagini;
}
function find_dimensione() {
/*
Questo modulo calcola la dimensione totale degli elementi della pagina
dim_img: dimensione delle immagini
dim_css: dimensione dei css attivati
dim_js: dimensione dei js esterni
*/
$dimensione=0;
//la dimensione della pagina
$dimensione+=$this->dimensione_pagina;
//Più le dimensioni delle immagini
$dim_img=0;
foreach ($this->a_links_image as $img) {
$tmp_img = new page_info($img);
$tmp_img->get_head();
$dim_img+=$tmp_img->page_cont_len;
}
$dimensione+=$dim_img;
//Più le dimensioni dei css caricati
$dim_css=0;
foreach ($this->a_links_css as $css) {
$tmp_css = new page_info($css);
$tmp_css->get_head();
$dim_css+=$tmp_css->page_cont_len;
}
$dimensione+=$dim_css;
//Più le dimensioni dei file javascript
$dim_js=0;
foreach ($this->a_links_js as $js) {
$tmp_js = new page_info($js);
$tmp_js->get_head();
$dim_js+=$tmp_js->page_cont_len;
}
$dimensione+=$dim_js;
$this->dimensione_immagini=$dim_img;
$this->dimensione_css=$dim_css;
$this->dimensione_javascript=$dim_js;
$this->dimensione_totale=$dimensione;
}
function conta_parole() {
/*
Questo modulo conta le parole e i caratteri presenti nella pagina escludendo i tag gli attributi il contenuto dei tag script e style
numero_caratteri: caratteri
numero_parole: parole
*/
$chunklist = array ();
$chunklist = explode("<", $this->page_file);
$lookjs=0;
$lookstyle=0;
$body="";
foreach ($chunklist as $id=>$chunk) {
if ($this->debag_status==1) {
echo htmlspecialchars($chunk)."<br />";
}
//Se trovo il tag script e non è autochiuso
if (strtolower(substr($chunk,0,6))=="script" && !stristr($chunk,"/>")) {
$lookjs=1;
if ($this->debag_status==1) {
echo "Trovato tag script <br />";
}
} elseif (strtolower(substr($chunk,0,5))=="style") {
$lookstyle=1;
if ($this->debag_status==1) {
echo "Trovato tag style <br />";
}
}
if ($lookjs==0 && $lookstyle==0) {
$body.=trim(substr($chunk, strpos($chunk, ">")+1));
} elseif ($lookjs==1) {
if (strtolower(substr($chunk,0,8))=="/script>") {
$lookjs=0;
if ($this->debag_status==1) {
echo "Trovato tag chiusura script <br />";
}
}
} elseif ($lookstyle==1) {
if (strtolower(substr($chunk,0,7))=="/style>") {
$lookstyle=0;
if ($this->debag_status==1) {
echo "Trovato tag chiusura style <br />";
}
}
}
}
$this->numero_caratteri=strlen($body);
$this->numero_parole=str_word_count($body);
//htmlspecialchars(substr($data, 0, strpos($data, "\r\n\r\n") + 4);
//$pagina->page_file;
}
function make_ping() {
/*
Questo modulo esegue un ping per individuare l'ip del server
ping_ip: ip
ping_macchina: nome del server (se disponibile)
*/
$cmd=PING_CMD." ".$this->host;
if ($this->debag_status==1) {
echo $cmd."<br />";
}
exec($cmd, $result_ping);
if (isset($result_ping[0])) {
$a_resp_ping0=explode(" ",$result_ping[0]);
}
if (isset($result_ping[1])) {
$a_resp_ping1=explode(" ",$result_ping[1]);
}
if (isset($a_resp_ping0[2])) {
$this->ping_ip=substr($a_resp_ping0[2],1,-1);
}
if (isset($a_resp_ping1[3])) {
$this->ping_macchina=$a_resp_ping1[3];
}
}
function make_whois() {
/*
Questo modulo esegue un whois per trovare il proprietario del sito
whois_proprietario
whois_manutentore
whois_response
*/
$whoishost=$this->host;
if (strtolower(substr($whoishost,0,4))=="www.") {
$whoishost=substr($whoishost,4);
}
$cmd=WHOIS_CMD." ".$whoishost;
if ($this->debag_status==1) {
echo $cmd."<br />";
}
exec($cmd, $result_whois);
$proprietario="";
$manutentore="";
//A seconda del tipo ne leggo il risultato
if (strtolower(substr($whoishost,-3))==".it") {
foreach($result_whois as $line) {
if (preg_match("/(org:)\s*([\S\s]*)?/", $line, $regs)) {
$proprietario=$regs[2];
}
if (preg_match("/(mnt-by:)\s*([\S\s]*)?/", $line, $regs)) {
$manutentore=$regs[2];
}
}
} elseif (strtolower(substr($whoishost,-5))==".info") {
foreach($result_whois as $line) {
if (preg_match("/(Registrant Name:)\s*([\S\s]*)?/", $line, $regs)) {
$proprietario=$regs[2];
}
if (preg_match("/(Tech Name:)\s*([\S\s]*)?/", $line, $regs)) {
$manutentore=$regs[2];
}
}
} elseif (strtolower(substr($whoishost,-4))==".com") {
$new1=0;
$new2=0;
foreach($result_whois as $line) {
if ($new1==1) {
$new1=0;
$proprietario=$line;
} elseif ($new2==1) {
$new2=0;
$manutentore=$line;
}
if (stristr($line,"Administrative Contact")) {
$new1=1;
} elseif (stristr($line,"Registrant")) {
$new2=1;
}
}
}
$toto = implode("\n", $result_whois);
$this->whois_proprietario=$proprietario;
$this->whois_manutentore=$manutentore;
$this->whois_response=$toto;
}
//Analisi w3c
function analizza_w3c() {
/*
questa funzione valida un sito utilizzando il validatore del w3c installato presso i nostri server
*/
$resp = $this->carica_validazione_w3c();
if (!$resp["state"]=="ok") {
//echo "impossibile contattare il validatore";
} else {
$validazione=$this->analizza_resp_w3c($resp["file"]);
}
$this->validazione_state=$resp["state"];
}
function carica_validazione_w3c() {
/*
questa funzione si occupa di recuperare il responso del w3c
*/
$urlparts = prepara_url(validator_w3c_url."check?uri=".$this->main_url);
$all = "*/*";
$request = "GET ".$urlparts['path']." HTTP/1.0\r\nHost: ".$urlparts['host'].$urlparts['portq']."\r\n\r\n";
$fsocket_timeout = 30;
if (substr($this->main_url, 0, 5) == "https") {
$target = "ssl://".$urlparts['host'];
} else {
$target = $urlparts['host'];
}
$errno = 0;
$errstr = "";
$fp = @ fsockopen($target, $urlparts['port'], $errno, $errstr, $fsocket_timeout);
if (!$fp) {
$contents['state'] = "NOHOST";
return $contents;
} else {
if (!fputs($fp, $request)) {
$contents['state'] = "Cannot send request";
return $contents;
}
$data = null;
socket_set_timeout($fp, $fsocket_timeout);
$status = socket_get_status($fp);
while (!feof($fp) && !$status['timed_out']) {
$data .= fgets($fp, 8192);
$status = socket_get_status($fp);
}
fclose($fp);
if ($status['timed_out'] == 1) {
$contents['state'] = "timeout";
} else
$contents['state'] = "ok";
$contents['file'] = substr($data, strpos($data, "\r\n\r\n") + 4);
}
return $contents;
}
function analizza_resp_w3c($file) {
/*
questa funzione si occupa di analizzare il responso del w3c
encoding
doctype
risultato
n_errori
a_errori
n_warnings
a_warnings
n_info
a_info
*/
$chunklist = array ();
$chunklist = explode(">",$file);
$result = array ();
$n_errori = 0;
$a_errori = array (); //Array che contiene gli errori
$n_warnings = 0;
$a_warnings = array (); //Array che contiene i warnings
$n_info = 0;
$a_info = array (); //Array che contiene le info
$title="";//Quello che stiamo per trovare
$nrighe=0;//Tra quante righe sarà
$trovato=0;//se abbiamo trovato qualche cosa
$ctesta=0;//cartteri da eliminare in testa
$ccoda=0;//cartteri da eliminare in coda
$result["risultato"]="";
$result["encoding"]="";
$result["doctype"]="";
foreach($chunklist as $chunk) {
if ($this->debag_status==1) {
echo htmlspecialchars($chunk)."<br />";
}
if ($trovato==0) {//siamo a caccia di elementi nuovi
if ($chunk=="Result:</th") {
$title="risultato";
$trovato=1;
$nrighe=1;
$ccoda=-4;
}
if (stristr($chunk, 'title="Character Encoding"') && stristr($chunk,'for="charset"')) {
$title="encoding";
$trovato=1;
$nrighe=3;
$ccoda=-4;
}
if (stristr($chunk, 'label') && stristr($chunk,'for="doctype"') && stristr($chunk,'title="Document Type"')) {
$title="doctype";
$trovato=1;
$nrighe=3;
$ccoda=-4;
}
if (stristr($chunk, 'Error</span')) {
$n_errori++;
$trovato=2;
$nrighe=3;
$ccoda=-6;
}
if (stristr($chunk, 'Warning</span')) {
$n_warnings++;
$trovato=3;
$nrighe=3;
$ccoda=-6;
}
if (stristr($chunk, 'Info</span')) {
$n_info++;
$trovato=4;
$nrighe=3;
$ccoda=-6;
}
} else {//abbiamo individuato un elemento ora vogliamo trovarne il valore
if ($nrighe==0) {//siamo alla riga giusta
switch ($trovato) {
case 1:
$result[$title]=substr($chunk,$ctesta,$ccoda);
break;
case 2:
array_push($a_errori,substr($chunk,$ctesta,$ccoda));
break;
case 3:
array_push($a_warnings,substr($chunk,$ctesta,$ccoda));
break;
case 4:
array_push($a_info,substr($chunk,$ctesta,$ccoda));
break;
}
$trovato=0;
$title="";
$ctesta=0;
$ccoda=0;
} else {
$nrighe--;
}
}
}
$this->validazione_n_errori=$n_errori;
$this->validazione_a_errori=$a_errori;
$this->validazione_n_warnings=$n_warnings;
$this->validazione_a_warnings=$a_warnings;
$this->validazione_n_info=$n_info;
$this->validazione_a_info=$a_info;
$this->validazione_risultato=$result["risultato"];
$this->validazione_encoding=$result["encoding"];
$this->validazione_doctype=$result["doctype"];
}
//Analisi hera
function analizza_hera() {
/*
questa funzione valida un sito secondo le regole dell'accesibilità
*/
$resp = $this->carica_validazione_hera();
if (!$resp["state"]=="ok") {
//echo "impossibile contattare il validatore";
} else {
$this->analizza_resp_hera($resp["file"]);
}
$this->hera_state=$resp["state"];
}
function carica_validazione_hera() {
/*
questa funzione si occupa di recuperare il responso di hera
*/
$urlparts = prepara_url(validator_hera_url."index.php?url=".$this->main_url);
$all = "*/*";
$request = "GET ".$urlparts['path']." HTTP/1.0\r\nHost: ".$urlparts['host'].$urlparts['portq']."\r\n\r\n";
$fsocket_timeout = 30;
if (substr($this->main_url, 0, 5) == "https") {
$target = "ssl://".$urlparts['host'];
} else {
$target = $urlparts['host'];
}
$errno = 0;
$errstr = "";
$fp = @ fsockopen($target, $urlparts['port'], $errno, $errstr, $fsocket_timeout);
if (!$fp) {
$contents['state'] = "NOHOST";
return $contents;
} else {
if (!fputs($fp, $request)) {
$contents['state'] = "Cannot send request";
return $contents;
}
$data = null;
socket_set_timeout($fp, $fsocket_timeout);
$status = socket_get_status($fp);
while (!feof($fp) && !$status['timed_out']) {
$data .= fgets($fp, 8192);
$status = socket_get_status($fp);
}
fclose($fp);
if ($status['timed_out'] == 1) {
$contents['state'] = "timeout";
} else
$contents['state'] = "ok";
$contents['file'] = substr($data, strpos($data, "\r\n\r\n") + 4);
}
return $contents;
}
function analizza_resp_hera($file) {
/*
questa funzione si occupa di analizzare il responso di hera
daverificare_A
errori_A
corretti_A
nonapplicabili_A
daverificare_AA
errori_AA
corretti_AA
nonapplicabili_AA
daverificare_AAA
errori_AAA
corretti_AAA
nonapplicabili_AAA
*/
$table = strstr( $file, '<th scope="row"' );
$chunklist = array ();
$chunklist = explode("</tr>",$table);
$result = array ();
$result["daverificare_A"]=0;
$result["errori_A"]=0;
$result["corretti_A"]=0;
$result["nonapplicabili_A"]=0;
$result["daverificare_AA"]=0;
$result["errori_AA"]=0;
$result["corretti_AA"]=0;
$result["nonapplicabili_AA"]=0;
$result["daverificare_AAA"]=0;
$result["errori_AAA"]=0;
$result["corretti_AAA"]=0;
$result["nonapplicabili_AAA"]=0;
$a="A";
foreach($chunklist as $chunk) {
// echo htmlspecialchars($chunk)."<br />";
$chunkinnerlist = array ();
$chunkinnerlist = explode(">",$chunk);
foreach($chunkinnerlist as $innerchunk) {
// echo htmlspecialchars($innerchunk)."<br />";
if (preg_match("/[\s]*([0-9]+)[\s]*(<img src=\"img\/duda.gif\")/", $innerchunk, $innerregs)) {
$result["daverificare_".$a]=$innerregs[1];
}
if (preg_match("/[\s]*([0-9]+)[\s]*(<img src=\"img\/bien.gif\")/", $innerchunk, $innerregs)) {
$result["corretti_".$a]=$innerregs[1];
}
if (preg_match("/[\s]*([0-9]+)[\s]*(<img src=\"img\/mal.gif\")/", $innerchunk, $innerregs)) {
$result["errori_".$a]=$innerregs[1];
}
if (preg_match("/[\s]*([0-9]+)[\s]*(<img src=\"img\/na.gif\")/", $innerchunk, $innerregs)) {
$result["nonapplicabili_".$a]=$innerregs[1];
}
}
$a.="A";
}
$this->hera_daverificare_A=$result["daverificare_A"];
$this->hera_errori_A=$result["errori_A"];
$this->hera_corretti_A=$result["corretti_A"];
$this->hera_nonapplicabili_A=$result["nonapplicabili_A"];
$this->hera_daverificare_AA=$result["daverificare_AA"];
$this->hera_errori_AA=$result["errori_AA"];
$this->hera_corretti_AA=$result["corretti_AA"];
$this->hera_nonapplicabili_AA=$result["nonapplicabili_AA"];
$this->hera_daverificare_AAA=$result["daverificare_AAA"];
$this->hera_errori_AAA=$result["errori_AAA"];
$this->hera_corretti_AAA=$result["corretti_AAA"];
$this->hera_nonapplicabili_AAA=$result["nonapplicabili_AAA"];
}
//////////////////////////////////////////////////////////////////
//GESTIONE BOLLINI CERTIFICAZIONE
function autocertificazioni() {
/*
$validatore_w3c_css; //c'è un link di questo tipo http://jigsaw.w3.org/css-validator/
$validatore_w3c_html; //c'è un link di questo tipo http://validator.w3.org/check/referer
$validatore_w3c_wai; //c'è un link di questo tipo http://www.w3.org/WAI/
$validatore_pubbliacesso; //c'è un link di questo tipo http://www.pubbliaccesso.gov.it/logo/logo.php
*/
//Cerchiamo il link ai validatori
$this->validatore_w3c_css="no";
$this->validatore_w3c_html="no";
$this->validatore_w3c_wai="no";
$this->validatore_pubbliacesso="no";
foreach ($this->a_links_esterni as $link) {
if (stristr($link,"jigsaw.w3.org/css-validator")) {
$this->validatore_w3c_css="si";
}
if (stristr($link,"validator.w3.org/check")) {
$this->validatore_w3c_html="si";
}
if (stristr($link,"www.w3.org/WAI")) {
$this->validatore_w3c_wai="si";
}
if (stristr($link,"www.pubbliaccesso.gov.it/logo")) {
$this->validatore_pubbliacesso="si";
}
}
}
/////////////////////////////////////////////////////////////////
//GESTIONE FRAME
function seguiframe($frame) {
$p_frame=new page_info($frame,$this->debag_status);
if ($this->m_contaparole) {
$p_frame->m_contaparole=TRUE;
}
if ($this->m_dimensione) {
$p_frame->m_dimensione=TRUE;
}
if ($this->m_parse_sito) {
$p_frame->m_parse_sito=TRUE;
}
$p_frame->analisi();
//Faccio il merge dei risultati
if (is_array($p_frame->a_links_image))
$this->a_links_image=array_merge($this->a_links_image, $p_frame->a_links_image);
if (is_array($p_frame->a_links_other_image))
$this->a_links_other_image=array_merge($this->a_links_other_image, $p_frame->a_links_other_image);
if (is_array($p_frame->a_links_css))
$this->a_links_css=array_merge($this->a_links_css, $p_frame->a_links_css);
if (is_array($p_frame->a_links_other_css))
$this->a_links_other_css=array_merge($this->a_links_other_css, $p_frame->a_links_other_css);
if (is_array($p_frame->a_links_css_image))
$this->a_links_css_image=array_merge($this->a_links_css_image, $p_frame->a_links_css_image);
if (is_array($p_frame->a_links_js))
$this->a_links_js=array_merge($this->a_links_js, $p_frame->a_links_js);
if (is_array($p_frame->a_links_interni))
$this->a_links_interni=array_merge($this->a_links_interni, $p_frame->a_links_interni);
if (is_array($p_frame->a_links_esterni))
$this->a_links_esterni=array_merge($this->a_links_esterni, $p_frame->a_links_esterni);
if ($p_frame->trovato_js=='si') {
$this->trovato_js='si';
}
$this->numero_caratteri+=$p_frame->numero_caratteri;
$this->numero_parole+=$p_frame->numero_parole;
$this->dimensione_pagina+=$p_frame->dimensione_pagina;
$this->dimensione_immagini+=$p_frame->dimensione_immagini;
$this->dimensione_css+=$p_frame->dimensione_css;
$this->dimensione_javascript+=$p_frame->dimensione_javascript;
$this->dimensione_totale+=$p_frame->dimensione_totale;
}
////////////////////////////////////////////////////////////////
function analisi_totale() {
if ($this->main_url!="NOT FOUND") {
//$this->get_head();
$this->make_ping();
$this->make_whois();
$this->get_sito();
$this->parse_header_http();
$this->check_for_redirect();
if (stristr($this->page_state,'Relocation')) {
//Se è un redirect devo agire ricorsivamente
//Trovo il nuovo url
$url=aggiusta_link($this->page_redirect_path,$this->url_relativo);
if ($this->debag_status==1) {
echo "Ridirezione all'url: ".$url."<br />";
}
//Se ridireziona su se stesso vado avanti
if ($this->main_url == $url || $this->original_url == $url) {
$this->page_state = 'ok';
} else {
//Altrimenti seguo il redirect
$this->page_redirect($url);
$this->analisi_totale();
}
}
if ($this->page_state == 'ok') {
$this->parse_sito();
$this->find_dimensione();
$this->conta_parole();
$this->autocertificazioni();
$this->analizza_w3c();
$this->analizza_hera();
//Se ci sono dei frame li seguo.
if (count($this->a_links_frame)!=0) {
foreach ($this->a_links_frame as $frame) {
$this->seguiframe($frame);
}
}
}
} else {
$this->page_state = 'no site';
}
}
function analisi() {
if ($this->main_url!="NOT FOUND") {
if ($this->m_ping) {
$this->make_ping();
}
if ($this->m_whois) {
$this->make_whois();
}
$this->get_sito();
$this->parse_header_http();
$this->check_for_redirect();
if (stristr($this->page_state,'Relocation')) {
//Se è un redirect devo agire ricorsivamente
//Trovo il nuovo url
$url=aggiusta_link($this->page_redirect_path,$this->url_relativo);
if ($this->debag_status==1) {
echo "Ridirezione dall'url: ".$this->main_url." all'url: ".$url."<br />";
}
//Se ridireziona su se stesso vado avanti
if ($this->main_url == $url || $this->original_url == $url) {
$this->page_state = 'ok';
} else {
//Altrimenti seguo il redirect
$this->page_redirect($url);
$this->analisi();
}
}
if ($this->page_state == 'ok') {
if ($this->m_parse_sito) {
$this->parse_sito();
}
if ($this->m_dimensione) {
$this->find_dimensione();
}
if ($this->m_contaparole) {
$this->conta_parole();
}
if ($this->m_autocertificazioni) {
$this->autocertificazioni();
}
if ($this->m_w3c) {
$this->analizza_w3c();
}
if ($this->m_hera) {
$this->analizza_hera();
}
//Se ci sono dei frame li seguo.
if (count($this->a_links_frame)!=0) {
foreach ($this->a_links_frame as $frame) {
$this->seguiframe($frame);
}
}
}
} else {
$this->page_state = 'no site';
}
}
function save_all($codice_sito,$codice_valutazione,$automatico) {
//Prende in input: codice del sito, codice della valutazione, e tipo di raccolta
$salva['codice_sito']=$codice_sito;
$salva['data']=dataoraodierna();
$salva['codice_valutazione']=$codice_valutazione;
$salva['tipo_ws']=$this->page_server;
$salva['versione_ws']=$this->page_server_ver;
$salva['linguaggio']=$this->page_language;
$salva['versione_linguaggio']=$this->page_language_ver;
$salva['warnings']=$this->warnings;
$salva['w3c_state']=$this->validazione_state;
$salva['w3c_encoding']=$this->validazione_encoding;
$salva['w3c_doctype']=$this->validazione_doctype;
$salva['w3c_risultato']=$this->validazione_risultato;
$salva['w3c_nerrori']=$this->validazione_n_errori;
$salva['w3c_elenco_errori']=implode("[paos2el]", $this->validazione_a_errori);
$salva['w3c_nwarnings']=$this->validazione_n_warnings;
$salva['w3c_elenco_warnings']=implode("[paos2el]", $this->validazione_a_warnings);
$salva['w3c_ninfo']=$this->validazione_n_info;
$salva['w3c_elenco_info']=implode("[paos2el]", $this->validazione_a_info);
$salva['numero_parole']=$this->numero_parole;
$salva['numero_caratteri']=$this->numero_caratteri;
$salva['dimensione_pagina']=$this->dimensione_pagina;
$salva['dimensione_immagini']=$this->dimensione_immagini;
$salva['dimensione_css']=$this->dimensione_css;
$salva['dimensione_javascript']=$this->dimensione_javascript;
$salva['dimensione_totale']=$this->dimensione_totale;
$salva['hera_state']=$this->hera_state;
$salva['hera_daverificare_A']=$this->hera_daverificare_A;
$salva['hera_errori_A']=$this->hera_errori_A;
$salva['hera_corretti_A']=$this->hera_corretti_A;
$salva['hera_nonapplicabili_A']=$this->hera_nonapplicabili_A;
$salva['hera_daverificare_AA']=$this->hera_daverificare_AA;
$salva['hera_errori_AA']=$this->hera_errori_AA;
$salva['hera_corretti_AA']=$this->hera_corretti_AA;
$salva['hera_nonapplicabili_AA']=$this->hera_nonapplicabili_AAA;
$salva['hera_daverificare_AAA']=$this->hera_daverificare_AAA;
$salva['hera_errori_AAA']=$this->hera_errori_AAA;
$salva['hera_corretti_AAA']=$this->hera_corretti_AAA;
$salva['hera_nonapplicabili_AAA']=$this->hera_nonapplicabili_AAA;
$salva['main_url']=$this->main_url;
$salva['dominio']=$this->dominio;
$salva['url_relativo']=$this->url_relativo;
$salva['path']=$this->path;
$salva['host']=$this->host;
$salva['ping_ip']=$this->ping_ip;
$salva['ping_macchina']=$this->ping_macchina;
$salva['whois_proprietario']=$this->whois_proprietario;
$salva['whois_manutentore']=$this->whois_manutentore;
$salva['whois_response']=$this->whois_response;
$salva['page_state']=$this->page_state;
$salva['page_date']=$this->page_date;
$salva['page_content']=$this->page_content;
$salva['page_redirect_path']=$this->page_redirect_path;
$salva['page_cont_len']=$this->page_cont_len;
$salva['elenco_immagini']=implode(",", $this->a_links_image);
$salva['numero_immagini']=count($this->a_links_image);
$salva['elenco_altre_immagini']=implode(",", $this->a_links_other_image);
$salva['numero_altre_immagini']=count($this->a_links_other_image);
$salva['elenco_immagini_css']=implode(",", $this->a_links_css_image);
$salva['numero_immagini_css']=count($this->a_links_css_image);
$salva['elenco_css']=implode(",", $this->a_links_css);
$salva['numero_css']=count($this->a_links_css);
$salva['elenco_altri_css']=implode(",", $this->a_links_other_css);
$salva['numero_altri_css']=count($this->a_links_other_css);
$salva['elenco_js']=implode(",", $this->a_links_js);
$salva['numero_frame']=count($this->a_links_frame);
$salva['elenco_frame']=implode(",", $this->a_links_frame);
$salva['numero_js']=count($this->a_links_js);
$salva['presenza_js']=$this->trovato_js;
$salva['presenza_frame']=$this->trovato_frame;
$salva['link_interni']=implode(",", $this->a_links_interni);
$salva['numero_link_interni']=count($this->a_links_interni);
$salva['link_esterni']=implode(",", $this->a_links_esterni);
$salva['numero_link_esterni']=count($this->a_links_esterni);
$salva['validatore_w3c_css']=$this->validatore_w3c_css;
$salva['validatore_w3c_html']=$this->validatore_w3c_html;
$salva['validatore_w3c_wai']=$this->validatore_w3c_wai;
$salva['validatore_pubbliacesso']=$this->validatore_pubbliacesso;
salvavalutazione($salva);
}
function print_all() {
echo "main_url: ".$this->main_url."<br />";
echo "dominio: ".$this->dominio."<br />";
echo "url_relativo: ".$this->url_relativo."<br />";
echo "path: ".$this->path."<br />";
echo "host: ".$this->host."<br />";
echo "ping_ip: ".$this->ping_ip."<br />";
echo "ping_macchina: ".$this->ping_macchina."<br />";
echo "whois_proprietario: ".$this->whois_proprietario."<br />";
echo "whois_manutentore: ".$this->whois_manutentore."<br />";
echo "whois_response: ".$this->whois_response."<br />";
echo "page_state: ".$this->page_state."<br />";
echo "page_date: ".$this->page_date."<br />";
echo "page_content: ".$this->page_content."<br />";
echo "page_language: ".$this->page_language."<br />";
echo "page_language_ver: ".$this->page_language_ver."<br />";
echo "page_server: ".$this->page_server."<br />";
echo "page_server_ver: ".$this->page_server_ver."<br />";
echo "page_redirect_path: ".$this->page_redirect_path."<br />";
echo "page_cont_len: ".$this->page_cont_len."<br />";
echo "a_links_interni: ";
print_r($this->a_links_interni);
echo "<br />";
echo "a_links_esterni: ";
print_r($this->a_links_esterni);
echo "<br />";
echo "a_links_image: ";
print_r($this->a_links_image);
echo "<br />";
echo "a_links_css: ";
print_r($this->a_links_css);
echo "<br />";
echo "a_links_other_css: ";
print_r($this->a_links_other_css);
echo "<br />";
echo "a_links_js: ";
print_r($this->a_links_js);
echo "<br />";
echo "trovato_js: ".$this->trovato_js."<br />";
echo "trovato_frame: ".$this->trovato_frame."<br />";
echo "a_links_frame: ";
print_r($this->a_links_frame);
echo "<br />";
echo "a_links_other_image: ";
print_r($this->a_links_other_image);
echo "<br />";
echo "a_links_css_image: ";
print_r($this->a_links_css_image);
echo "<br />";
echo "numero_caratteri: ".$this->numero_caratteri."<br />";
echo "numero_parole: ".$this->numero_parole."<br />";
echo "dimensione_pagina: ".$this->dimensione_pagina."<br />";
echo "dimensione_immagini: ".$this->dimensione_immagini."<br />";
echo "dimensione_css: ".$this->dimensione_css."<br />";
echo "dimensione_javascript: ".$this->dimensione_javascript."<br />";
echo "dimensione_totale: ".$this->dimensione_totale."<br />";
echo "validazione_state: ".$this->validazione_state."<br />";
echo "validazione_risultato: ".$this->validazione_risultato."<br />";
echo "validazione_encoding: ".$this->validazione_encoding."<br />";
echo "validazione_doctype: ".$this->validazione_doctype."<br />";
echo "validazione_n_errori: ".$this->validazione_n_errori."<br />";
echo "validazione_a_errori: ";
print_r($this->validazione_a_errori);
echo "<br />";
echo "validazione_n_warnings: ".$this->validazione_n_warnings."<br />";
echo "validazione_a_warnings: ";
print_r($this->validazione_a_warnings);
echo "<br />";
echo "validazione_n_info: ".$this->validazione_n_info."<br />";
echo "validazione_a_info: ";
print_r($this->validazione_a_info);
echo "<br />";
echo "hera_state: ".$this->hera_state."<br />";
echo "hera_daverificare_A: ".$this->hera_daverificare_A."<br />";
echo "hera_errori_A: ".$this->hera_errori_A."<br />";
echo "hera_corretti_A: ".$this->hera_corretti_A."<br />";
echo "hera_nonapplicabili_A: ".$this->hera_nonapplicabili_A."<br />";
echo "hera_daverificare_AA: ".$this->hera_daverificare_A."<br />";
echo "hera_errori_AA: ".$this->hera_errori_A."<br />";
echo "hera_corretti_AA: ".$this->hera_corretti_A."<br />";
echo "hera_nonapplicabili_AA: ".$this->hera_nonapplicabili_A."<br />";
echo "hera_daverificare_AAA: ".$this->hera_daverificare_A."<br />";
echo "hera_errori_AAA: ".$this->hera_errori_A."<br />";
echo "hera_corretti_AAA: ".$this->hera_corretti_A."<br />";
echo "hera_nonapplicabili_AAA: ".$this->hera_nonapplicabili_A."<br />";
echo "validatore_w3c_css: ".$this->validatore_w3c_css."<br />";
echo "validatore_w3c_html: ".$this->validatore_w3c_html."<br />";
echo "validatore_w3c_wai: ".$this->validatore_w3c_wai."<br />";
echo "validatore_pubbliacesso: ".$this->validatore_pubbliacesso."<br />";
}
}