NewSCript notizie gratis sul sito

Procede  la fase di migrazione di tutti i miei piccoli script sparsi sui vari tex[.*].altervista.org verso il nuovo dominio texilee.it

Oggi è terminato lo spostamento degli NewSCript,  alcuni semplici script php che ti permettono di “abbellire” il sito (php) con semplicità, inoltre cliccando sui link si apriranno dei popup contententi  altre informazioni

Per il momento sono disponibili 3 script:

Oroscript  

Visualizza  l’oroscopo del giorno,  io personalmente non lo leggo 🙂

Repubblica 

Mostra l’elenco delle ultime $n notizie prelevandole dal sito di Repubblica, per essere sempre aggiornati

Movie 

Mostra a caso un’immagine di un film in uscita al ciname questa settimana, click sull’immagine porta a filmup.com ,  click sul  titolo a un popup con altre immagini e trama

Download , FAQ , e modulo contatti 

PS: non c’è input sanitizing, questi script possono essere “pericolosi” e in alcuni casi “rompervi” il sito, usateli a vostro rischio e pericolo!

Posted in Php at May 24th, 2007. No Comments.

Guida da perl a php e php vs python

Una ottima pagina per gli sviluppatori che si trovano a dover affrontare per le prime volte uno di questi due linguaggi conoscendo l’altro. Le comparazioni sintattiche fra i due linguaggi di scripting variano dall’utilizzo degli array, alle funzioni di hashes, formattazione del testo, variabili GET e POST, all’interfacciamento a Mysql
http://www.cs.wcupa.edu/~rkline/perl2php/

Per conoscere le principali differenze fra php e python questa pagina

http://wiki.w4py.org/python-vs-php.html

offre notevoli spunti per prediligere un linguaggio o l’altro a seconda della applicazione che si intende realizzare. Appena avrò un pò di tempo vedrò di realizzare lo stesso scriptino ( inutile come sempre) nei 3 linguaggi, magari un motore di ricerca di mp3 trance.

Posted in Php at January 26th, 2007. No Comments.

Top rbl email blacklist graph

Qmail section:

Per visualizzare un elenco del tipo

763 list.dsbl.org:
97 bl.spamcop.net:
26 relays.ordb.org:

utilizzare il comando

grep rblsmtpd /var/log/mail.log |  awk '{ print $11}'| sort |uniq -c | sort -r

Postfix section :

Il comando è molto simile al precedente, per rendermi la vita più difficile ho modificato la struttura dei campi del maillog, precedentemente nel campo n° 19 veniva scritta l’url della lista nera, dopo le mie modifiche al n° 20, quindi li devo analizzare entrambi, fino al prossimo logrotate.

grep "blocked using" /var/log/maillog |  awk '{if ($20 ~ /^[a-z./]+..*..*;$/) print $20; if ($19 ~ /^[a-z./]+..*..*;$/) print $19;  }' | sort |uniq -c | sort -r

Il risultato è

9396 cbl.abuseat.org;
3137 dul.dnsbl.sorbs.net;
1620 list.dsbl.org;
1368 dnsbl.njabl.org;
825 korea.services.net;
485 combined.njabl.org;
27 sbl.spamhaus.org;
13 dnsbl.antispam.or.id;
5 relays.ordb.org;
1 spamsources.fabel.dk;

Come potete vedere questo sito è un museo della grafica, dallo sfondo ai menù per arrivare alle decine di animazioni Flash. Per rendere ancora più artistico il sito ho pensato di provare PHP4: JpGraph

Necessita delle GD e di una semplice modifica per funzionare sotto Debian.

$vi /path/jpgraph/jpg-config.inc

DEFINE("TTF_DIR","/usr/share/fonts/truetype/msttcorefonts/");

Questo tool serve a creare grafici tramite l’ausilio di classi e estensioni delle stesse.

Un ottimo tool per monitorare il funzionamento delle RBL potrebbe essere:

Salvare i risultati del comando grep+awk in un database quotidianamente.
Generare un grafico giornaliero , settimanale e mensile con tempi di aggiornamento proporzionali e salvarli sul filesystem, creare un form web per ottenere via DB i valori di un determinato range temporale.
Ma come esempio basta soffermarsi sui valori ottenuti precedentemente. Per comodità visiva raccolgo il seguente insieme di elementi in “Altro”

sbl.spamhaus.org; dnsbl.antispam.or.id;relays.ordb.org;spamsources.fabel.dk;
per un totale di 46 elementi

Genero il grafico a “torta” con l’opzine 3D (guarda il sorgente php)
http://enrico.tenivella.it/rblgraph.php

Posted in Bash, Php, Qmail-Postfix at September 29th, 2006. No Comments.

Hardening Debian Linux LAMP Servers

Hardening Debian Linux Web PHP Servers

L’aspetto più rilevante nella configurazione di un web server è senza dubbio la completa collaborazione fra sviluppatori di codice e sistemisti (gli sviluppatori grafici non hanno voce in questione 😛 )

Inutile preparare una macchina dalla configurazione hardware ottimale con RAID 5 o 10 su 4 dischi SCSI e un firewall di 3000 righe per scoprire di lunedì mattina che il DB è vuoto. Motivo? Account di amministratore settato con USER: “Admin” e Password indovinate un po’… 😐 … “Admin” ovvio!

Sprecare quel paio d’ore in più a chiacchierare con lo sviluppatore non è male, ma cosa buona e giusta! Prendetevi tutto il tempo per rendere stabili e congruenti le modifiche e non abbiate nè fretta nè timore di far osservare qualche policy di sicurezza in più al vostro collega cresciuto su manuali che danno per scontato il non effettuare input sanitazing.

Per la preparazione del kernel (personalmente pendo dalla parte degli amanti di conf monolitiche con le giuste patch applicate vedi grsecurity) penso di scrivere qualcosina più avanti.

Security is a process, not a result (sia chiaro in partenza…)

Security a livello di sistema

Questo è il compito del sistemista … effettivamente c’è bisogno di parecchio tempo per raffinare la tecnica e centralizzare le politiche in un layer di controllo non troppo invasivo.

Prima di iniziare a stilare qualche linea di codice e iniziare a riconfigurare mezza /etc è un consiglio confrontarsi con lo sviluppatore. Bisogna tener conto delle effettive esigenze del developer: upload (accesso ftp per lo spostamento di file) , directory con permessi di scrittura lato utenza apache (chmod www-data dir ), parametri dimensionali (massimo tempo di esecuzione script), necessità di reloadare servizi (accesso ssh), accettare traffico da e verso determinati ip e porte.

Il bello della configurazione di un server è che ogni volta che ne andrete a creare uno nuovo vi verrà sempre più naturale orientarlo verso sicurezza e performance, ovviamente se avete voglia di imparare e tenervi aggiornati!

Stilata la lista delle necessità dello sviluppatore iniziamo a modificare le configurazioni più “critiche”.

Dividiamo in due rami il nostro compito: network security e file system security, iniziamo a leggere le specifiche e trarre le conclusioni. Il server web ospiterà un cms php/mysql, dovrà essere permesso l’invio di mail, il webmaster dovrà modificare i file della htdocs, e restartare o stoppare apache e mysql. Installiamo una LAMP e phpmyadmin per l’amministrazione del DB, qmail per l’invio delle mail, il demone ssh per permettere “ftp” over SSH (quindi niente proftpd o simili) e la gestione dei demoni (via sudo darete la possibilità all’utente webmaster di compiere quelle determinate operazioni…)

Network security

#netstat -l -n -p -t -u -w
Active Internet connections (only servers)
Proto  Local Address         PID/Program name
tcp    127.0.0.1:3306        31920/mysqld
tcp    192.168.168.168:80    15695/apache
tcp    192.168.168.168:22    26850/sshd
tcp    127.0.0.1:25          15809/tcpserver

L’elenco delle porte in ascolto sul server, comprende i vari protocolli ma esclude i socket unix (canali di comunicazione fra ad esempio apache e mysql) e qualche colonna poco utile a fini didattici.

#nmap -sS 192.168.168.168

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap finished: 1 IP address (1 host up) scanned in 0.578 seconds

Perfetto (siamo ancora sprovvisti di firewall) vengono riconosciute da nmap le porte dei servizi che saranno contattabili dal segmento pubblico e nn solo da localhost: apache sulla 80 e ssh sulla 22

Come fare a disabilitare i servizi di default? Semplicemente commentate le entry relative nei file di configurazione sotto /etc e sotto /etc/init.d per i file di configurazione come quello di qmail. E’ inutile lasciare servizi che non dovranno essere raggiungibili dal mondo esterno in ascolto. Meglio bindarli su localhost. Su Debian date uno sguardo /etc/inetd.conf /etc/init.d/* e /etc/default

IPTABLES

Per completare la nostra configurazione di rete non rimane che scrivere un piccolo firewall da mettere sulla macchina, che rimarrà cmq. in dmz dietro a un altro firewall un po’ più corposo. La politica che preferisco è quella del DROP, check del set di regole e in caso di pacchetto non contemplato loggo e droppo. Loggo cmq. tutti i tentativi di accesso verso ssh, molti cambiano porta per l’accesso ssh ( sempre molta fantasia.. 220,2200,222,2222), tuttavia non sento questa necessità perchè permetto l’accesso solo da determinati IP o classi se dinamici.

#policy in drop
/sbin/iptables -t filter -P INPUT DROP

#loggo tentativi ssh
/sbin/iptables -t filter -A INPUT -p tcp -m state –state NEW –dport 22 -j LOG –log-prefix ***SSH*** –log-level ERR

#permetto in input connessioni già “fidate”
/sbin/iptables -t filter -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

#permetto http da tutti
/sbin/iptables -t filter -A INPUT -p tcp –dport 80 -j ACCEPT

#permetto ssh da client fidati
/sbin/iptables -t filter -A INPUT -s 192.168.168.169 -p tcp –dport 22 -j ACCEPT
/sbin/iptables -t filter -A INPUT -s 45.98.45.98 -p tcp –dport 22 -j ACCEPT

#loggo input con dest non ok
/sbin/iptables -t filter -A INPUT -j LOG –log-level ERR –log-prefix “input: ”

#e droppo
/sbin/iptables -t filter -A INPUT -j DROP

Il firewall da mettere direttamente sul server è abbastanza completo, megli lavorare più massicciamente sul firewall con eth con ip esterno, anche per effettuare analisi sulla rete senza dover disattivarlo ogni volta.
Per salvare le nostre regole

#iptables-save > /root/fw
#chmod 600 /root/fw

ed eventuale restore

iptables-restore < /root/fw oppure crearsi uno script bash iniziando con #!/bin/sh Per quanto riguarda SSH modificate le seguenti entries nelfile /etc/ssh/sshd_config

Port 22
ListenAddress 192.168.168.168
Protocol 2
PermitRootLogin no
AllowUsers texilee webmaster

e reload

/etc/init.d/ssh restart

File System
E’ cosa buona non creare una sola partizione / ma suddividere in base alle esigenze il FS in diverse partizioni e montarle in maniera diversa. Le più critiche sono la /tmp e la /var, se nella prima è di moda parcheggiarci rootkit nella seconda il problema può essere causa di DOS per log “impazziti” che nel giro di poco tempo riempiono il filesystem. Appurato che non lanceremo nulla dalla /tmp poichè i nostri script e binari risiedono da tutt’altra parte possiamo impedire a livello di filesystem l’esecuzione di codice dall’interno di tmp modificando il file /etc/fstab in questa maniera

/dev/hda2 /tmp ext3 nodev,nosuid, noexec 0 0

Può capitare (tipico esempio uno dei centinaia bachi di tipo “esecuzione di codice arbitrario” di prodotti php open source) che un attaccante ti sfondi la macchina e parcheggi nella /tmp il suo simpatico rootkit, ti hanno appena modificato ls e netstat e non te ne puoi accorgere se non facendo delle analisi da un’altra macchina messa in eth promiscous mode… tornano utili un paio di tools: samhain chkrootkit

Samhain crea un database con “firme” di file di sistema presenti al momento della esecuzione del tool, record contenenti valori quali data dimensione inode. Il demone controlla periodicamente l’integrità dei file sul FS con le informazioni contenute nel suo DB ed in caso di incongruenza si occupa di mandare una mail all’indirizzo specificato nel file di configurazione. Su Debian apt-get install samhain chkrootkit , i file di configurazione come al solito sotto /etc.

Per concludere trovo estremamente interessante costruire qualche script bash per tracciare quelle situazioni di gravità (disco pieno, troppe connessioni dallo stesso ip, carico di lavoro troppo elevato… argomento di prossimi post ) e l’utilizzo di atsar (apt-get install atsar) per avere uno storico del carico di lavoro e poter rintracciare con facilità nei log i motivi di “sbalzi” particolarmente elevati di carico.

Posted in Apache, Linux, Mysql, Php at June 30th, 2006. No Comments.

REGEX Espressione regolare controlla e valida indirizzo EMAIL

Espressione regolare per controllare la validità di un indirizzo email, utile per il sanitizing dei form.

/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+-+)|([A-Za-z0-9]+.+)|([A-Za-z0-9]+++))*[A-Za-z0-9][email protected]((w+-+)|(w+.))*w{1,63}.[a-zA-Z]{2,6}$/
Posted in Linux, Php at June 9th, 2006. No Comments.

Apache 1.3 stato dei processi figli script PHP

Apache 1.3 su Unix è un server Web basato su processi. Il programma Apache, al suo avvio, genera (fork) svariati processi figli; con il fork un processo primario genera copie identiche di se stesso, chiamate figli. Ognuno di tali figli può servire una richiesta indipendente dalle altre, con il vantaggio di migliorare la stabilità: se uno di tali figli ha un comportamento anomalo (va fuori controllo o ha perdite di memoria) può essere interrotto senza alcun effetto sugli altri. La stabilità è conseguita a spese delle prestazioni. Nella maggior parte dei sistemi Unix, la creazione di processi e il cambiamento del contesto (assegnazione di tempo del processore a ogni processo) sono operazioni costose in termini di risorse di sistema, dal momento che i processi sono isolati gli uni dagli altri e non possono quindi facilmente condividere codice e dati. [www.pluto.it]

Per controllare lo “stato” di ognuno dei processi figli di apache via php si può utilizzare questo semplice script, la consultazione dello stato dei processi risulta estremamente rapida.

<?php echo "<h3>Apache Forked Status Viewer< /h3>"; $cmd = '/bin/ps --User www-data -o \'%p %C\''; exec($cmd,$status); foreach ($status as $val) echo '<br />'.$val; ?>
Posted in Apache, Linux, Php at June 9th, 2006. No Comments.

JAVASCRIPT Andare a capo alert da variabili PHP

Immaginate di dover mostrare via alert (javascript) il contenuto di una variabile php. Per formattare correttamente l’output potete prendere spunto da questo codice:

$descrizione_JS = ereg_replace("(\r\n|\n|\r)", "\\n'+\n' ", $descrizione); <script language="JavaScript"> <!-- desc='<?=$descrizione_JS?>' if (!confirm(" Conferma l'inserimento o premi annulla per tornare indietro \n\n"+ desc)) { history.back(); } //--> </script>
Posted in Php at June 9th, 2006. No Comments.

Workaround php restriction include external files

Questo how-to propone un semplicissimo metodo per raggirare le restrizioni imposte (giustamente) dai fornitori di spazi web php riguardante l’inclusione di file esterni.

La direttiva che inibisce l’inclusione è allow_url_fopen = Off

Viene impostata a livello globale nel file di configurazione di php (php.ini) Mi trovo completamente d’accordo con la politica di Altervista.org che non permette l’inclusione di contenuto non locale via php. Trovo altrettanto giusto informare gli utilizzatori del servizio di hosting gratuito di come si raggira questa restrizione. Per gli utenti Linux non dovrebbero esserci problemi, per gli utenti windows penso seriamente di si 🙂 perciò mi soffermo esclusivamente sulla configurazione Windows

Iniziamo: gli strumenti “necessari” sono tre e nell’ordine

1) http://www.kalab.com/freeware/cron/cron.zip -> permette di eseguire operazioni ad orari e tempi prestabiliti senza intervento umano

2) http://www.interlog.com/~tcharron/wgetwin-1_5_3_1-binary.zip -> permette il download di pagine o file da riga di comando

3) ftp -> client ftp da linea di comando già presente su windows
Su sistemi Linux questi strumenti sono presenti di default, su windows ovviamente no! Scaricateli ed estraete il contenuto degli zip in una directory ad esempio c:\Programmi\cron

Per rendere l’esercitazione più reale prendiamoci come obiettivo la pubblicazione della foto in prima pagina della sezione sport di Repubblica. Oggi 5 giugno 2006 è dedicata al mitico Valentino Rossi fresco vincitore del GP del Mugello. Pagina target da inviare via ftp: http://www.repubblica.it/sport/index.html

valentino rossi

Prepariamo lo script per inviare la pagina, chiamatelo cron_repubblica.bat e salvatelo sempre in c:\Programmi\cron

<<<<<<< cron_repubblica.bat >>>>>>>

@echo off
wget -O index_sport_rep.html -o logfile.txt http://www.repubblica.it/sport/index.html echo open texilee.altervista.org> upload.ftp
echo texilee>> upload.ftp
echo password>> upload.ftp
echo cd /_php_script>> upload.ftp
echo del index_sport_rep.html>> upload.ftp
echo put index_sport_rep.html>> upload.ftp
echo quit>> upload.ftp
ftp.exe -v -s:upload.ftp
del upload.ftp
del index_sport_rep.html

<<<<<<</ cron_repubblica.bat >>>>>>>

Collegatevi via ftp al vostro spazio e create la direcotry /_php_script, dopodichè lanciate lo script con doppio click e refreshate la directory appena creata.

Se vi appare una finestrella del firewall di windows con avvertimenti vari riguardo al programmino che cerca di accedere alla rete rispondete con “SBLOCCA”. Ora che abbiamo la nostra paginetta uppata sul nostro spazio non ci rimane che scrivere poche linee di codice per trovare il percorso della foto di Valentino Rossi e automatizzare il tutto.

<<<<<< sport_repubblica.php >>>>>

<? // la var $img_url contiene il percorso della img…
$file = file_get_contents(‘index_sport_rep.html’);
$content = explode (‘<!– start cover –>’,$file);
$content = explode (‘” width=’,$content[1]);
$content = explode (‘src=”‘,$content[0]);
$img_url = “http://www.repubblica.it”.$content[1]; ?>

<img xsrc=”<?=$img_url?>” mce_src=”<?=$img_url?>” />
<<<<<< sport_repubblica.php >>>>>

Salvatelo come sport_repubblica.php e mettetelo nel vostro spazio ftp http://texilee.altervista.org/_php_script/sport_repubblica.php

Ultimo passo automatizzare la procedura: cron. Aprite il file “crontab” nella directory c:\Programmi\cron con un editor qualsiasi e commentate le entries di esempio. Aggiungete quella relativa al nostro script.

49 10 * * * c:\Programmi\cron\cron_repubblica.bat

Ogni giorno alle ore 10:49 del mattino verrà eseguito il nostro script. Se volete cambiare orario il primo il formato è * * * * * dove il primo * indica il minuto , il secondo * l’ora.

Se volete farlo eseguire a mezzanotte

0 0 * * * c:\Programmi\cron\cron_repubblica.bat

Se volete una volta ogni mezzora

0,30 * * * * c:\Programmi\cron\cron_repubblica.bat

Copiate un collegamento a cron.exe in Esecuzione Automatica in modo da farlo ripartire ad ogni riavvio.

Posted in Php at June 5th, 2006. 2 Comments.

phpMyAdmin was unable to read your configuration file!

Mi è capitato, dopo un aggiornamento di phpmyadmin su Sarge di trovarmi di fronte a questo errore. La macchina client che utilizzo è spesso e volentieri customizzata secondo le esigenze del momento.

Questo è il simpatico errore…
phpMyAdmin – Error

phpMyAdmin was unable to read your configuration file!
This might happen if PHP finds a parse error in it or PHP cannot find the file.
Please call the configuration file directly using the link below and
read the PHP error message(s) that you receive. In most cases a quote
or a semicolon is missing somewhere.
If you receive a blank page, everything is fine.

Dopo un quarto d’ora di sclero  finalmente capisco di cosa si trattava: una impostazione del php.ini impostata ad On per motivi di testing…

[php.ini]
magic_quotes_runtime = Off
E’ bastato re-impostarla ad On
Posted in Php at May 26th, 2006. No Comments.

HOW-TO prelevare o grabbare codice da un sito con php.

Come grabbare codice da un sito.

Questo how-to è stato scritto solo a scopo didattico. L’autore non si assume nessuna responsabilità
per ogni uso improprio (danno causato direttamente o indirettamente dall’articolo).
Prerequisiti necessari sono la discreta conoscenza di HTML e PHP.

HTML: è un linguaggio “statico” lato client. Il server riceve le richieste dal client e restituisce codice html che verrà analizzato e interpretato dal browser del client.

PHP: acronimo di “PHP: Hypertext Preprocessor” è un linguaggio scripting server-side: il server riceve le richieste dal client e genera direttamente la pagina richiesta prima di restituirla al client.

Passiamo alla pratica.
Prefissato il codice obiettivo il primo passo da affrontare è l’analisi del codice. Se la pagina fosse una semplice e statica .html non ci sarebbero impedimenti nell’utilizzo del classico copia/incolla, diventa interessante una pagina con contenuti dinamici, cioè aggiornata e/o modificata frequentemente.

E’ molto semplice prelevare codice se i dati sul sito TARGET sono impaginati uniformemente, quasi impossibile se i dati che ci interessano vengono impaginati ogni volta in maniera diversa. Nel secondo caso la crezione dello script risulterebbe inutile richiedendo aggiornamenti frequenti e parecchio tempo sia da parte dell’autore che dai webmaster che utilizzano lo script….

Attenzione: questa “famiglia” di script fa uso di pagine esterne e non può essere utilizzata su server FREE like altervista.

Si può sempre utilizzare un altro script che si occupa di scaricare e uploadare la pagina da processare inserito su crontab a esempio.

________________________________________

Visualizzazione di un box contenente un’immagine di un film in uscita al cinema.

TARGET= http://filmup.com/speciale/anteprime/index.htm

Sicuramente questa pagina viene “aggiornata” con frequenza settimanale. Non possiamo semplicemente copiare/incollare il codice di un film. Notate la linearità con cui vengono presentate le informazioni che vogliamo visualizzare.
Costruiremo uno script che effettuerà le seguenti operazioni:
– Caricamento del codice della pagina in una variabile
– Epurazione del codice
– Restituzione immagine e link a filmup.com

L’epurazione del codice è la parte più impegnativa. Dipendentemente dal tipo di dati che vogliamo ottenere la procedura cambia. In questo caso i passi sono:

– selezione del punto di inizio codice da grabbare
– selezione del punto di fine codice da grabbare
– inserimento in un array di ogni blocco film
– scelta casuale del film
– impostazione visiva e stampa

il punto di inizio deve essere una sequenza di codice formata da testo o tag che precede il codice da prelevare.

Sotto la dicitura “Questa settimana” troviamo la data di uscita dei film e una linea delimitante l’elenco dei blocchi film.

Utilizzando un browser leggiamo il sorgente delle 2 linee che ci interessano.

<font color=”Blue” face=”arial,helvetica” size=”3″><b>Questa settimana</b><br>
<font size=”1″>(in uscita il: <font color=”Black”>giorno mese anno</font>)</font></font>

Subito dopo inizia il codice di cui abbiamo bisogno. Un punto di partenza potrebbe essere

</font>)</font></font>

difficilmente verrà ripetuto nel resto della pagina ma controlliamo con “cerca” e assicuriamoci che sia una sequenza di

codice unica. Bene, ora ci occuperemo del codice successivo alla sequenza appena trovata al fine di trovare il punto finale del codice da analizzare. Controlliamo il sorgente subito l’ultimo box dei film

<div align=”center”><font face=”arial,helvetica” size=”2″><a xhref=”prec.htm” mce_href=”prec.htm” ><u><b>Clicca qui</b></u></a>, per le recensioni

dei film usciti <b>la precedente settimana</b></font></div><br>

Siamo fortunati: la sequenza <div align non è contenuta all’interno dei blocchi destinati ai film.

Grazie alle funzioni di php saremo in grado di aprire la pagina di filmup e leggerne il contenuto, modificarla sul nostro server e restituire il risultato.

<?
$webpage = “http://www.filmup.com/speciale/anteprime/index.htm”; //Pagina contenente il codice da grabbare

$fp = fopen ($webpage, “r”); //Apriamo la pagina di filmup in sola lettura

while (! feof($fp)) //Copiamo tutto il codice di filmup in $pagina
{
$riga = fgets($fp,1024);
$pagina = $pagina.$riga;
}

//Dividiamo la pagina in 2 parti:
//$pagina[0] -> da <HTML> a </font>)</font></font>
//$pagina[1] -> da </font>)</font></font> a </HTML>

$pagina = split(“</font>)</font></font>”,$pagina);

//Lavoriamo solo su $pagina[1] e dividiamo ancora la pagina
//$pagina[0] -> da </font>)</font></font> a <div align
//$pagina[1] -> da <div align a </HTML>

//NB: il codice “</font>)</font></font>” e “<div align” non verrà incluso.

$pagina = split(“<div align”,$pagina[1]);

//La nostra pagina contenente solo i blocchi dei film.

$pagina = $pagina[0];

//Modifico i link alle img e alla pagina recensione di filmup
$pagina = str_replace(“href=”/” mce_href=”/” ,”href=”http://www.filmup.com/” mce_href=”http://www.filmup.com/” , $pagina);
$pagina = str_replace(“src=”/” mce_src=”/” ,”src=”http://www.filmup.com/” mce_src=”http://www.filmup.com/” , $pagina);

//Divido i blocchi utilizzando un commento inserito dall’autore che identifica l’inizio di un nuovo blocco film
$pagina = split (“<!– start mod anteprima –>”,$pagina);

//Seleziono casualmente uno di questi blocchi
$film = $pagina[rand(1,count($pagina)-1)];

//Assegno alla variabile $img l’url della immagine comprendente il tag img
$film = split(“<td”,$film);
$img = split(“nowrap>”,$film[1]);
$img = str_replace(“</td>”,””, $img[1]);

//$img = str_replace(“67″,”87”, $img[1]); //modifico height img def 67
//$img = str_replace(“100″,”120”, $img); //modifico width img def 100

//Assegno alla variabile $nome l’url della recensione comprendente il tag a
$nome = split(“<b>”,$film[4]);
$nome = split(“</b>”,”$nome[1]”);

//Inserisco alt img
$img = str_replace(‘width=’, “alt=”Al cinema…” widht=”,$img);

//Stampo il risultato al centro pagina.
print “<center>” .$img .”<br><font size=”2″ face=”verdana”>”. $nome[0]. “</font></center>”;

?>
Ecco lo script in azione premete F5 per ottenere un nuovo screenshot…
Potete trovarne uno un pò più completo (galleria di immagini su popup) sul sito NewScript

Posted in Php at May 26th, 2006. No Comments.