Newsgroup: it.comp.www.php
Titolo: Script per versione stampabile

Salve a tutti,
mi servirebbe uno script da utilizzare ogni volta che voglio
aggiungere una funzione "Versione stampabile" alle mie pagine Web.
Avevo pensato a una cosa di questo tipo:
in ogni pagina inserisco dei commenti HTML che indicano dove inizia e
dove finisce la parte da stampare, il link "Printable version"
porterebbe a una pagina print.php che apre l'URL dalla quale e' stata
chiamata e legge solo la parte da stampare.
Un problema nasce se la pagina da stampare aveva ricevuto variabili in
POST, potrei leggere l'array delle post variables e inviarlo a
print.php, che aprirebbe la pagina aggiungendo le variabili in get, e'
fattibile tutto cio'?
Esiste qualcosa di gia' fatto?
Grazie.
Lupin
-------------------------
http://www.antiloco.com/
<la directory del Web developing>
----------------------------------
Rimuovere XXX per rispondere via e-mail

fattibile tutto cio'?
Non completamente. In POST puoi mandare, ipoteticamente, molti piu' dati.
Un problema del genere l'ho "risolto" - si fa per dire - usando dei files
temporanei:
<?
	$MAXCHUNKS = 64;
	// Riceve delle variabili in POST, le codifica in GET.
	$LOCKY  = 0;
	$MYLOCK = uniqid("RND-").".lock";
	for ($retry=0; $retry < 20; $retry++)
	{
		if (file_exists("lock.php"))
			rename("lock.php", $MYLOCK);
		else
		{
			clearstatcache();
			sleep(1);
			continue;
		}
		clearstatcache();	// Windows
		if (file_exists($MYLOCK))
		{
			include "$MYLOCK";
			break;
		}
	}
	// Qui, file system permettendo, siamo in una critical section
	$LOCKY++;
	if ($LOCKY > $MAXCHUNKS)
		$LOCKY = 0;
	$fp = fopen($MYLOCK, "w");
	fwrite ($fp, "<?php \$LOCKY = $LOCKY; ?>\n");
	fclose($fp);
	rename($MYLOCK, "lock.php");
	// Sempre file system permettendo, possiamo ircene.
	// Adesso abbiamo un numero, $LOCKY, che solo noi abbiamo fra
	// $MAXCHUNKS scripts in esecuzione.
        $fp = fopen("lock-$LOCKY.php", "w");
        fwrite($fp, "<?php\n");
        while(list($key, $val) = each($HTTP_GET_VARS))
        {
                $ser = serialize($val);
                fwrite($fp, "\t\$$key = unserialize('$ser');\n");
        }
        fwrite($fp, "\t\$HTTP_GET_VARS = unserialize('" .
                serialize($HTTP_GET_VARS) . "');\n");
	srand(time()); $UID = rand();
///////////////////////////////////////////
	fwrite($fp, "
// Security patch
	if (!isset(\$UID))
		exit(0);
	if (\$UID != \"$UID\")
		exit(0);
");
// End of patch
///////////////////////////////////////////
        fwrite($fp, "?>\n");
        fclose($fp);
        // Adesso, "newurl.php?ID=$LOCKY" mi manda alla nuova pagina.
        // Se questa pagina esegue un
        //      include "lock-$ID.php";
        // automagicamente si ritrova tutte le variabili come se avesse
        // effettuato un post.
        print "Clicca <A HREF=test.php?ID=$LOCKY&UID=$UID>qui</A>";
?>
Se si ha bisogno di sicurezza, si puo' inviare due variabili, ID e UID,
e salvare dentro lock-*.php lo stesso valore come CHECK_UID. UID poi lo
si genera con uniqid() o con random(). Anzi meglio random(), perche' e'
possibile prevedere uniqid().
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.

temporanei:
[......]
Ok, grazie 1000, daro' un'occhiata al tuo codice.


                serialize($HTTP_GET_VARS) . "');\n");
Leonardo
