Category Archives: PHP

Un cinguettio alternativo

Ciao a tutti cari amici di Ok, panico,

Sono 61ll35, questo è il mio secondo post.

Il primo post l’avevo dedicato alla creazione di una specie di google offline, dove utilizzavo in locale, sul mio pc, il linguaggio di programmazione PHP, affiancato al database MySql.

Tutto ciò era offline.

Vi spiego il motivo di questo post: Grazie agli stessi linguaggi di programmazione sopra citati ho realizzato un piccolo clone di twitter.

L’ho prima testato abbondantemente su localhost, poi l’ho trasferito online, su altervista, un sito di hosting gratuito.

Ora vorrei il vostro aiuto per testare questo piccolo social network…

Non vi aspettate granchè,in fatto di estetica,velocità, facilitò d’uso: comunque è un primo passo… e perdonate gli errori di gioventù.. Tenete inoltre presente che la velocità non dipende in gran parte da me: l’archiviazione su altervista è ottima, il servizio eccellente, ma la banda non sarà mai pari a quella di siti in cui si paga per avere questi servizi…

okp

Lo trovate al sito http://www.juhanpassaatwitter61ll35.altervista.org

Registratevi,loggatevi e iniziate a twittare!!

Quando vi registrerete, vi sarà detto di attivare il vostro account tramite mail: ignorate questo messaggio per il momento,in quanto, sul mio account di prova, le mail arrivavano con forte ritardo.

Se volete mandarmi un messaggio, inserite nel tweet “@61ll35”, proprio come su twitter!

Vi aspetto numerosi!

Ciao

Una specie di Google Offline

Cari amici di Ok, panico,

Sono nuovo del blog,ma lo seguo da abbastanza tempo.

Sono diventato amico con il caro Juhan,che seguo su Twitter.

Sono un ragazzo di vent’anni,ed uso come nickname “61LL35”, “gilles” in lingua leet.

Il motivo per cui con molta soddisfazione mi ritrovo a scrivere su questo blog è dovuto ad una discussione che ho avuto con Juhan,che dopo aver installato ubuntu 14.04 è passato a Chrome, abbandonando -almeno per il momento- Firefox.

Io gli ho detto che anch’io,sebbene entusiasta di tutto ciò che è Linux e open source o FOSS, ho abbandonato Firefox, in favore di Chrome.

Gli ho confidato che la causa scatenante di questa mia scelta è stato un piccola “imperfezione” di Firefox che ho riscontrato con uno script PHP che ho scritto la scorsa estate.

Che cosa fa questo script?

E’ una specie di rudimentale motore di ricerca che “cerca” dei file PDF che ho dentro una cartella.

Screenshot from 2014-05-07 19:41:24

Premetto una cosa… Non ho fatto scuole del settore,ma ho solamente tanta passione per l’informatica e la programmazione.

Inoltre sono partito completamente da zero, seguendo i video di NIKTORTHENAT su youtube. ( https://www.youtube.com/user/NiktorTheNat )

Tutto ciò è scritto in HTML,il linguaggio di markup di internet, in PHP, un linguaggio di scripting lato server con una sintassi abbastanza simile al C (linguaggio che ancora conosco poco, ma che amo) e con MySql.

L’HTML ci viene in aiuto per visualizzare del testo nelle pagine web, ed è caratterizzato da dei tag per la formattazione del testo. Volete vederli? aprite una qualsiasi pagina web e pigiate control+u in chrome oppure “visualizza sorgente”.

IL PHP invece è un linguaggio per rendere “dinamiche” le pagine web, specie se si appoggia a dei database, Mysql in questo caso.

Una nota: se aprite gedit, ci scrivete del codice html,salvate il file con estensione .html e lo aprite, allora vedrete senza problemi il risultato sul vostro browser preferito. Completamente differente è il discorso per PHP, che è un linguaggio che viene interpretato sui server,il metodo descritto per l’HTML non funziona. Come possiamo allora farlo funzionare sul nostro PC offline ???….

Dobbiamo allora installare dei pacchetti, di diversi mega 😉

Per settare tutto il nostro ambiente di lavoro, seguite la guida che trovate all’indirizzo http://www.morrolinux.it/come-creare-un-web-server-apache-mysql-php/.

Questo è un passaggio obbligato, se non lo fate non potete andare oltre.

Pronti?

Iniziamo.

Apriamo gedit, incolliamoci il codice qui sotto, salviamo il tutto con un nome qualsiasi, avendo cura di assegnargli l’estensione “.php”.

Per esempio se vogliamo salvare questo file con il nome “google” dovremo digitare “google.php”. Importantissimo, dobbiamo salvarlo nella cartella /var/www, che è stata creata al momento dell’installazione di Apache.


<?php
echo "<html><head><title>TITOLO</title>";
echo "<script type=\"text/javascript\"> function Invia(){var destinazione=pdfquery.php;location.href=destinazione;}</script>";
echo "</head><style type=\"text/css\">body {background-color:white;}</style><body>";
echo "<small><div align=\"right\" style=\"background:yellow\">Questo script cerca PDF nella cartella /var/www/pdf</div></small>";

echo "<small><div align=\"right\" style=\"background:yellow\">Powered by NOME NICKNAME COGNOME -2013</div></small>";
echo "<br><br>";

echo "<center><small>POWERED by NOME COGNOME-2013</small></center><br><br><br>";
echo"<center><strong><img src=\"google.jpg\"</strong> width=\"400\" height=\"283\"></center>";
echo <strong>"<form</strong> name=\"myform\" onsubmit=\"Invia();return false;\" <strong>method=\"post\" action=\"pdfquery.php\">"</strong>;
//IMPORTANTISSIMO: invece di premere il pulsante invia con lo script javascript basta scrivere sull'input type e premere INVIO!!!
echo "<center><strong><input type=\"text\" name=\"q\"></strong></center><br>";
echo "<center>cerca i primi<input type=\"text\" name=\"howmany\" size=\"3\" value=\"300\">risultati</center><br>";
echo " <center><<strong>input type=\"submit\</strong>" name=\"submit\" value=\"Cerca\"</center>";
echo "<strong></form></strong>";
echo "</body></html>";
?>

dovrete rendere eseguibili TUTTI gli script che avete in /var/www, altrimenti per questioni di permessi che non ho ben capito, non vedrete niente. Perciò,date da teminale


sudo chmod -R 777 /var/www

Ora se aprite il browser e nella barra di indirizzi digitate


127.0.0.1/google.php

vi dovrebbe apparire questo

Screenshot from 2014-05-07 19:41:24

Dimenticavo, non vedrete l’immagine del logo di Google, a meno che non abbiate un immagine JPG chiamata google.jpg in /var/www.google

google

Che cosa fa il codice sopra?

Si occupa di visualizzare tutto ciò che vedete sulla pagina web, in più tramite PHP, ci prepariamo a raccogliere la query dell’utente, cioè la parola che l’utente vuole cercare.

Questo codice “posta” la parola che viene digitata sulla casella di ricerca ad un’altra pagina,sempre in php, che si occupa di eseguire materialmente la ricerca e di visualizzare i risultati. Potete vedere come funziona il meccanismo ossevando il codice più sopra.

La chiave del funzionamento è nel tag <form> che “posta” ciò che viene scritto nella casella di ricerca ( <input type=”text” name=”q” …> verso un altra pagina, pdfquery.php in questo caso.

Essenzialmente, google.php dice a pdfquery.php “Ehi, tu che sei più brava di me a fare le ricerche, perchè non mi aiuti a cercare tutto i pdf che hanno nel loro nome la parola che io stessa ti invio, ti posto?”

invio è in grassetto, in inglese si dice “submit” e il pulsante con scritto sopra “cerca” aziona questo meccanismo di passaggio di informazioni, di variabili, tra una pagina e un altra.

Facciamo finta che la parola cercata sia “robot”

Questa sarebbe la pagina che ci ritroveremo davanti.

Screenshot from 2014-05-07 19:41:38

 

Da dove attinge i risultati della ricerca questa pagina? Da un database, mysql.

apriamo il nostro terminale e digitiamo


mysql -u root -p

e digitiamo la password del database che abbiamo protetto in fase di installazione.

Creiamo un database con il comando


create database google;

use google;

Il punto e virgola finale è importantissimo!! (waiting for a semicolon direbbe @imadevloper)

andiamo a creare una tabella dentro a questo database!


create table pdf (nome varchar(200), id int not null auto_increment, primary key(id));

e diamo invio.

Attenzione! per un motivo non identificato,Wordpress non mi fa mettere un underscore “_” tra le parole “primary” e “key”. quello che dovete digitare è “primary_key”

Adesso apriamo nautilus in /var/www e creiamo una cartella di nome “pdf”.

Dentro “pdf” mettiamo tutti i nostri cari pdf, se siete come me mettete pure pdf in lingua thailandese di meccanica quantistica e robotica che non leggerete mai.

ora apriamo un altro terminale e diamo


cd /var/www/pdf

ls >nome-a-piacere

aprite pure con gedit nome-a-piacere, contiene una lista di tutti i nomi dei pdf che avete nella cartella.

muovete o copiate questo file nella cartella /var/lib/mysql/google


sudo cp nome-a-piacere /var/lib/mysql/google/

Ora torniamo al terminale con mysql e diamo


load data infile "nome-a-piacere" into table pdf;

per confermare l’avvenuto inserimento digitate


select * from pdf;

se vedrete comparire i nomi dei vostri file, beh siamo a cavallo!!

andiamo a creare la famosa pagina “pdfquery.php”, facendo la stessa identica cosa che abbiamo fatto con “google.php”.

Stavolta incolliamo il codice seguente.


<?php
$query=$_POST['q'];
$howmany=$_POST['howmany'];
echo "<html><body><head><title>HAI CERCATO:$query
</title><style type=\"text/css\">
img {margin-left:100px}
td.dimensioni {background-color:red;}
td.immagine {background-color:green;}
td.nomepdf {background-color:pink;}
td.contatore {background-color:yellow;}
</style></head>";

echo "<div align=\"right\" style=\"background-color:#D8BFD8\">
<small>hai cercato <input type=\"text\" value=\"$query\"></small></div><center>";
echo "<div align=\"right\"><small>hai selezionato $howmany risultati</small></div>
<img src=\"google.jpg\" width=\"400\" height=\"283\"></center>";
echo"<center>by <big><b><u>nome cognome</b></u></big></center><br><br>";
//echo "<script type=\"text/javascript\">alert(\"ciao\");</script>";
$username="root";
$password="LAPASSWORDDIROOT";
$host= "localhost";
$database= "google";
//echo"prova";
mysql_connect($host,$username,$password) or die("<br>PROBLEMA<br>") ;

mysql_select_db($database) or die ("impossibile selezionare il database");
$qu="%$query%";
//echo"ciao";
$ricerca="select nome from pdf where nome like \"$qu\" order by rand() limit 0,$howmany";
$risultati=mysql_query($ricerca);
$num=mysql_numrows($risultati);
mysql_close($con);
$i=0;
if ($num==0)
{
echo "<center>NON ci sono risultati per <b><u>$query</b></u></center>";
}
$contatore=1;
echo "<table border=\"1\">";
while ($i<$num)
{
$nome=mysql_result($risultati,$i,"nome");

echo "<tr><td class=contatore>$contatore</td>";
$dimensione= ceil(filesize("pdf/$nome")/1024);
if ($dimensione>1000)
{
$dimensione=round($dimensione/1024,2) . MB; //serve per togliere inutili cifre dopo la virgola!!
}
else
{
$dimensione=$dimensione . KB;
}
$meno=substr($nome, 0, strrpos($nome, '.')); //toglie l'estensione .pdf dal file
$immagine = "thumbpdf/$meno.jpg";
$dimensioni = getimagesize($immagine);
$quanto=4;
$larghezza = $dimensioni[0]/$quanto;
$altezza = $dimensioni[1]/$quanto;
echo"<td class=immagine><a href=\"pdf/$nome\"><img src=\"thumbpdf/$meno.jpg\" width=\"$larghezza\" height=\"$altezza\" border=\"1\"></a></td>";//c
echo "<td class=nomepdf><a href=\"pdf/$nome\">$nome</a></td>";
echo "<td class=dimensioni>[$dimensione]</td>";
echo"</tr>";
$i++;
$contatore++;
}
echo "</table></body></html>";
?>

prima di salvare questo file con il nome di “pdfquery.php” rintracciate la seguente riga


$password="LAPASSWORDDIROOT";

inserendo al posto di LAPASSWORDDIROOT la vostra password, non quella del vostro account, bensì QUELLA DI MYSQL!!

Che poi, tra l’altro, nel mio caso coincidono 😉 😉 😉 ;(

Questo codice si connette al database, esegue una query, e tramite un ciclo WHILE visualizza uno per uno i risultati.

QUESTA E’ LA POTENZA DI PHP: genera automaticamente, interattivamente del codice HTML per noi, a seconda dei risultati che gli passa mysql. A noi basta premere il link per essere rimandati al pdf, che possiamo leggere nel nostro browser preferito, in questo caso chrome.

Con chrome, se clicchi sul link del pdf te lo apre, mentre con firefox ti propone di salvarlo….

Un abbellimento…

volete l’anteprima del pdf?

Create una cartella in /var/www e chiamatela thumbpdf

Installate ImageMagick con il comando


sudo apt-get intall imagemagick

ora creiamo materialmente l’anteprima


cd /var/www

convert pdf/nome_di_un_vostro_file_pdf.pdf[0] thumbpdf/nome_di_un_vostro_file_pdf.jpg

xdg-open nome_di_un_vostro_file_pdf.jpg

Se avete tanti pdf, dovete realizzare uno script che faccia il lavoro sporco per voi…

Per gli script chiedete aiuto a chi ne sa di più (@_juhan) (WARNING: se il file pdf contiene parole con degli spazi….)

Ogni volta che fate una ricerca, i risultati vengono visualizzati RANDOM grazie a “order by rand()” in


$ricerca="select nome from pdf where nome like \"$qu\" order by rand() limit 0,$howmany";

“pdfquery.php” non l’ho scritto linearmente: ho prima scritto lo scheletro, poi l’ho abbellito, inserendo i risultati in una tabella, visualizzando le dimensioni dei file, le anteprime e la visualizzazione random dei risultati. Ciò torna utile se avete tanti pdf su un unico tema, e vi stufate che compaia sempre lo stesso risultato per primo.

Screenshot from 2014-05-07 19:41:50

Concludo il mio primo post su okp, sperando di non avervi annoiato.

Commentate numerosi,date un feedback, domande,miglioramenti al codice…

Grazie per l’attenzione,

a presto