Location: PHPKode > projects > WEB-PA > spider/include/classes/page-info.class.php
<?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 />";




	}

}

Return current item: WEB-PA