Author Archive
Ciao a tutti ragazzi, datochè devo tenere un mini-corso ne approfitto per redigere una mini guida dove andrò a spiegare l’interafacciamento a un Database di tipo Mysql sfruttando le potenzialità del linguaggio PHP versione 5 utilizzando un approccio alla programmazione di tipo OOP (Object Oriented) e le classi fornite dal suddetto linguaggio.
Iniziamo dal Database che possiamo considerarlo come un’oggetto a se stante, al quale faremo riferimento per le operazioni di lettura/scrittura e modifica. Per poterlo richiamare avremmo bisogno di alcuni parametri di base, quali: [Host/User/Password/Nome Database], quindi iniziamo a creare una classe dove memorizzeremo queste informazioni e facciamo che questa erediti (cioè sia figlia) della classe mysqli che possiamo trovare tra le specifiche di PHP5!
class database extends mysqli{}
protected $connection;
protected $host = "numero ip host";
protected $user = "Sql277074-1234";
protected $pwd = "password sql";
protected $db = "nome del Database che utilizziamo"; //nel senso che base di dati, non l'applicativo
Avendo impostato tutti i parametri della connessione, ora possiamo tranquillamente creare una funzione per connetterci al Database. Ma come si fa? Bè non c’e nulla di più facile che utilizzare qualcosa scritto da qualcun’altro e che già funzioni. Come già annunciato la nostra classe è figlia della classe mysqli che contiene tutti i metodi che servono per interfacciarsi con il database, quindi l’unica cosa che dovremmo fare è controllare il manuale di reference, ed andare a vedere che tipo di metodo possiamo utilizzare : www.php.org
Vediamo un’esempio di connessione :
public function accesso(){
parent::__construct($this->host,$this->user,$this->pwd,$this->db);
if ($this->connect_errno) {
die('Connect Error (' . $this->connect_errno . ') '. $this->connect_error);
}
}
Questo è un metodo valido per poterci connettere al database e che possiamo dunque includere nella nostra classe, anche se sarebbe meglio raffinarlo con più controlli, ma per quello che dobbiamo fare queste poche righe bastano e avanzano.
Ma in realtà come facciamo a comunicare veramente con il database? Cioè a mandare delle interrogazioni e ricevere dei risultati? Ovviamente c’e più di un modo, ma vi illustrerò quello che a me piace di più in termini di scrittura di codice e di sicurezza contro SQL-Injection.
Avendo ereditato la solita classe mysqli, disponiamo di un metodo che ci permette di preparare le query Sql, fare un BIND dei parametri ed eseguirli. Facciamo un’esempio
-
Preparo la mia query per es. SELECT * FROM Evento WHERE ID_evento = ?
-
Una volta preparata la query faccio un BIND dei parametri, cioè assegno ai parametri un valore, quindi al posto del “?” andrò a specificare un esatto valore, e ne dichiarerò anche il tipo in modo da filtrare possibili “false stringhe”
-
Eseguire quello che abbiamo appena dichiarato
-
Memorizzare i risultati in delle variabili che utilizzeremo per la visualizzazione/etc.
Vediamone dunque un’esempio pratico :
#class Database
class database extends mysqli{
protected $connection;
protected $host = “62.149.150.100″;
protected $user = “Sql277074″;
protected $pwd = “93df69a5″;
protected $db = “Sql277074_1″;
public $results;
public function __construct(){}
public function accesso(){
parent::__construct($this->host,$this->user,$this->pwd,$this->db);
if ($this->connect_errno) {
die(‘Connect Error (‘ . $this->connect_errno . ‘) ‘
. $this->connect_error);
}
}
}
#CLASS eventi
class evento{
public function __construct(){
}
public function view_detail($id){
$db = new database(); //creiamo una istanza della classe DB.
$db->accesso(); // Richiamiamo il metodo accesso in modo da essere collegati al db
$stmt = $db->prepare(“SELECT * FROM Evento WHERE ID_Evento = ? “); //prepariamo la query
$stmt->bind_param(‘i’,$id); // facciamo il BIND dei parametri (in questo caso passatro tramite valore)
$stmt->execute(); //eseguiamo quello che abbiamo dichiarato prima
$stmt->bind_result($ID_Evento,$FK_Azienda,$FK_Evento_categoria,$Descrizione,$Data_evento_inizio,$Data_evento_fine); //facciamo un’altro bind per ricevere i risultati tutte queste variabili sono associate a tutte le colonne che ha la tabella interrogata!
//fino a quando c’e qualcosa da “prendere” tu prendila e stampa il campo descrizione
while($row = $stmt->fetch()){
print(”
Descrizione completa:
“);
echo $Descrizione; //Stampa a video Descrizione
?>
Richiamando dunque la funzione view_detail da una pagina che andremo a creare, dunque saremo in grado di poter visualizzare ciò che c’e nel nostro database a quell’interrogazione! Ovviamente se non si ha comprensione del linguaggio SQL, PHP e non si hanno basi di OOP questo articolo potrebbe risultare futile. In caso contrario questo è un buon metodo per poter fare interrogazioni sfruttando la classe mysqli e ponendo fine all’uso di vecchi metodi “old syle & dangerous”.
Rispogliavo vecchi lavori fatti in passato prima ancora di sapere cosa era un’esame universitario e dove le giornate trascorrevano molto più leggere di questi giorni passati a studiare numeri teoremi e definizioni.. Questo è un mio piccolo lavoretto fatto con Lightwave versione 7.5? Eh si, mi sa che è passato un bel pò di tempo dall’ultima volta che lo ho toccato!
Comunque vi regalo questo sfondo, che con qualche giusta modifica potrebbe diventare veramente carino
Io lo avevo fatto per il mio pc, datochè su internet non avevo trovato uno sfondo che mi piacesse, ed avevo voglia di imparare a usare un modeler 3D, ho fatto tutto di mano mia!
EDIT: Datoche’ è entrato in fase betatest, allo stesso tempo che vedete l’immagine implementata, mi faccio anche pubblicità Youcity.it
Per tutti i patiti del look tondeggiante, oggi vi illustrerò una bellissima tecnica in CSS per poter realizzare BOX con angoli ARROTONDATI, senza NESSUN USO DI IMMAGINI
Iniziamo con illustrare il codice CSS:
.b1, .b2, .b3, .b4{font-size:1px; overflow:hidden; display:block;}
.b1 {height:1px; background:#BBB; margin:0 5px;}
.b2 {height:1px; background:trasparent; border-right:2px solid #BBB; border-left:2px solid #BBB; margin:0 3px;}
.b3 {height:1px; background:trasparent; border-right:1px solid #BBB; border-left:1px solid #BBB; margin:0 2px;}
.b4 {height:2px; background:trasparent; border-right:1px solid #BBB; border-left:1px solid #BBB; margin:0 1px;}
.contentb {background: trasparent; border-right:1px solid #BBB; border-left:1px solid #BBB;}
.contentb div {
padding-top: 2.5em;
padding-left: 0.5em;
}
Con b(n) Si vuole identificare il NUMERO DI BORDO, o meglio ancora, la linea di pixel presente sia sopra che sotto la BOX che andremo a creare.
L’idea chiave per poter disegnare un bordo arrotondato si rifà alla vecchia e cara accensione di pochi pixel. Cosa voglio dire? Bene, ora ve lo spiego!
Immaginate di usare paint.. se fate una scalettatura a uno zoom abbastanza alto, quando andrete a de-zoomare vi ritroverete con una piacevole curva visiva.. Dunque se questa tecnica funziona su Paint, perche’ non dovrebbe funzionare anche su CSS ?
Per ottenere un’effetto come quello ottenuto su PAINT però non avremo a disposizione la cara matitina, e neanche qualche bell’algoritmo di disegno, ma solo le regole CSS che per questo caso basteranno! La regola principale utilizzata e’ la MARGIN. Nell’esempio sopracitato Margin e’ utilizzato con due attributi, questo vuol dire che il primo attributo si riferisci ai margini TOP e BOTTOM, invece il secondo attributo si rifà ai margini LEFT e RIGHT.
Ma veniamo alle cose serie.. Cosa fa la MARGIN? Niente di piu semplice, ci dice che margine ci deve esser prima di poter disegnare qualche cosa..
Cosi facendo potete immaginare che facendo iniziare il disegno qualche pixel dopo, ovviamente diminuendo tale valore per ogni riga di pixel aggiunta, l’effetto grafico dovrebbe essere si e’ no questo:
—-
—-
—
Che visto da moooolto lontano, parrebbe un bordo arrotondato! CREDETEMI e’ COSI
Bene, ora viene la parte difficile….. Iniziate a prepararvi … Perche’ il TUTORIAL e’ GIà FINITO
Codice HTML:
<b class="b1"></b><b class="b2"></b><b class="b3"></b><b class="b4"></b> <div class="contentb"> <div>Nel cammin di nostra vita mi ritrovai inculato da una matita, non essendo fiero ne codardo, la trasformai proprio in un petardo </div> </div><b class="b4"></b><b class="b3"></b><b class="b2"></b><b class="b1"></b>
Buon divertimento!
Lascio a voi provare a modificare le altezze e vedere che cose bizzarre riuscite a creare
Come ben tutti sappiamo, L’IP (Internet Protocol) e’ il protocollo più diffuso per l’interconnessione di reti. E’ approdato su internet con la versione IPv4, descritta dall’ IETF (Internet Engineering Task Force) attraverso l’RFC (Request For Comment) 791 pubblicata la prima volta, nel lontano settembre 1981 !
Come potete constatare, dal 1981, sono passati ben si 28 anni, e nel campo dell’informatica sono stati fatti veramente passi da gigante, sopratutto se si parla di connessioni di rete ed annessi. Come possiamo ben immaginare, dal 1981 ad oggi, il numero di persone/macchine che sono entrate a far parte di Internet, sono aumentate in maniera esponenziale, fino a diventare un numero veramente spropositato.
Il protocollo IPv4 permette di assegnare ben si 2^32 indirizzi, anche se per la sua natura questi vanno a sfumarsi perchè vi sono da considerare tutte le classi speciali e gli indirizzi statici assegnati a specifiche funzioni (es. 127.0.0.1 → LocalHost).
Alla data odierna quasi tutti questi indirizzi sono stati praticamente assegnati. Quindi cosa succederà se non vi saranno più altri indirizzi?? All’occhio dell’utente non succederà praticamente niente, dall’altro lato invece inizierà una vera e propria rivoluzione.
Iniziamo a parlare del fatto che Ipv4, essendo nato cosi tanto tempo fa, ovviamente non poteva prevedere che il numero di indirizzi disponibili potesse permetterne un esaurimento, ed e’ proprio questo che ha portato ai giorni d’oggi ad avere gran parte degli indirizzi già assegnati. Il problema più grosso della scarsità di indirizzi da assegnare, risiede sul fatto delle scarse politiche adottate per l’assegnamento di uno o più indirizzi IP a chi li richiedeva, ed il mancato controllo dell’uso di questi(molti indirizzi IP assegnati, al giorno d’oggi potrebbero essere in disuso). Solo da qualche anno a questa parte si sta adottando un’azione di riassegnazione in modo da poter recuperare anche intere classi di indirizzi!
Ovviamente queste azioni potranno solamente ritardare la fine di Ipv4, che oramai sta decadendo, ma una decadenza che si prospetta moooolto lunga, per gli esperti difatti, fino al 2025 l’IPv4 sarà ancora in uso.
Dunque, ci sarà bisogno a breve di un instradamento verso il protocollo Ipv6 (tra l’altro già supportato appieno dai nuovi sistemi operativi) oppure potremmo ancora rimanere tranquilli ad aspettare che lo IANA (Internet Assigned Number Authority) esaurisca gli indirzzi Ipv4 da consegnare ai cinque RIR (Regional Internet Registry)?
Non vi e’ una risposta definitiva a questa domanda, dato che solo l’evoluzione delle cose potrà confermarcela, però con l’avvento di Ipv6, potremo passare da 2^32 indirizzi assegnabili fino a 2^128 cioè una cifra che detta in lettere somiglia circa a “340 miliardi di miliardi di miliardi di miliardi”. . . Chissà se anche questa volta riusciremo a finirli, o almeno se smetteremo di utilizzare il NAT (Network Addess Translation) che da un punto di vista del risparmio e’ utlissimo ma dal punto di vista pratico viola il principio della comunicazione “da qualsiasi host a qualsiasi host” (any to any).
Salve a tutti, questo e’ il mio primo post, quindi come vuole la tradizione mi dovrei anche presentare !! ^_^ Bene.. ricominciamo da capo allora.. Ciao a tutti io sono Alberto! sono entrato da poco nel Code Zero Zone, e come primo post volevo proporvi un progetto per una rete (datoche’ sono appassionato di questo campo) Wi-MAX. Le specifiche sono un po vecchiotte, ma tanto non c’e da preoccuparsi qua in Sardegna e’ ancora tutto fermo ^_^!! Buona lettura!

