PHP

UTF-8 in paginile web (diacritice, caractere speciale, suport multilingv)

Se poate sa fi intampinat dorinta/nevoia de a include in paginile voastre suport pentru alte limbi in afara de romana. In acest caz apare problema afisarii caracterelor speciale, diacriticelor ce sa mai vorbim de alfabetul chirilic sau de limbile arabe/asiatice, etc.

Tags:

Integrarea propriului motor de cautare in Firefox

Demonstratie

Una din multele facilitati ale Firefox este posibilitatea configurarii mai multor motoare de cautare ce pot fi accesate direct din interfata browserului:

Putini stiu insa ca in principiu orice site poate oferi vizitatorilor posibilitatea adaugarii site-ului in cauza in lista motoarelor de cautare din Firefox. Voi ilustra pe un exemplu simplu.

AJAX: Degradare gratioasa

Una din provocarile intalnite in crearea unei aplicatii este necesitatea ca aceasta sa functioneze pentru un numar cat mai mare de utilizatori. Printre aspectele care trebuie acoperite in acest sens se numara si degradarea gratioasa a respectivei aplicatii. Pe scurt functionalitatile principale trebuie sa fie prezente indiferent de tehnologiile la care are acces utilizatorul.

Asigurarea functionarii unei aplicatii ce foloseste AJAX si in cazul in care din diferite motive Javascript nu mai functioneaza (fie datorita dezactivarii sale fie din cauza aparitiei unei erori) nu este dificila, si una din cele mai simple metode este de a proiecta initial aplicatia fara a se face uz de AJAX (dar cu planuirea atenta asa incat implementarea solutiei alternative sa se faca cat mai simplu apoi). In momentul in care totul functioneaza cum ar trebui se poate trece la schimbarea comportamentului aplicatiei pentru cazul optim.

Ca exemplu, voi prezenta o mica aplicatie pentru filtrarea unor articole prezente intr-o baza de date.

TUTORIAL: Cum sa-ti faci propriul CAPTCHA

CAPTCHA - un termen familiar pentru unii dintre noi, mai putin cunoscut altora, dar cu siguranta ceva cu care toti ne-am intalnit la un moment dat.
Generalizat, CAPTCHA (acronim pentru Completely Automated Public Turing test to tell Computers and Humans Apart) reprezinta o modalitate oarecare de a face distinctia intre un utilizator uman si o masina (computer), dupa cum spune si numele. Acest mecanism a aparut din nevoia de securitate, fiind pentru prima oara implementat in sistemul de inregistrare de la Yahoo, si consta in prezentarea unei imagini ce continea un cuvant distorsionat, cerandu-i-se utilizatorului sa recunoasca cuvantul din imagine, lucru foarte greu de realizat, daca nu chiar imposibil, de catre o masina. Cu timpul, conceptul s-a raspandit si s-a dezvoltat, ajungand la forme foarte diverse care impuneau utilizatorilor una din urmatoarele:

Tags:

Stick to the frameworks

Intr-o lume in care aplicatiile web devin din ce in ce mai complexe si majoritatea lucrurilor cu adevarat utile de pe desktop se porteaza pe web, programarea in sine, indiferent de limbajul de programare a devenit o mare consumatoare de timp, resurse, cu alte cuvinte eficienta.
In ultimul timp, programatorii web care-si cunosc telurile si care se descurca destul de bine cu programarea orientata pe obiecte au inceput sa foloseasca framework-uri (in special MVC - Model View Controller) ca sa-si usureze munca. Si s-a dovedit ca framework-urile nu doar ca usureaza munca programatorului, dar adauga si un plus de securitate si integritate aplicatiei.

Exemplul perfect este framework-ul CakePHP pe care-l folosesc de mai bine de 6 luni si de cand lucrez proiectele pe el, ma misc mai repede si mi-e mult mai usor sa adaug functionalitate website-ului.
CakePHP este desi foarte puternic, destul de lipsit de multe facilitati pe care le-ar putea implementa echipa (probabil in versiunile ce urmeaza), dar pe de alta parte este exact ce ai nevoie ca proiectarea unei aplicatii sa fie cake.

Un lucru pe care l-am vazut zilele trecute si care mi-a atras atentia indeajuns de mult cat sa raman pe subiect cateva zile si sa studiez, a fost un alt framework MVC, numit Symfony.
Acest Symfony este mult mai complex decat CakePHP dar mult mai greu de folosit. Se orienteaza catre segmentul de programare enterprise, acolo unde aplicatia va fi instalata pe serverul propriu al firmei... and so on.
Destul de stresanta pentru tine, ca om care vrei sa vezi ce poate, e instalarea: trebuie sa ai PEAR > 1.4.2. Apoi se adauga un nou canal la PEAR, de unde isi ia proiectul Symfony si se instaleaza. Din momentul ala exista comanda "symfony" in consola si se lucreaza cu ea orice s-ar face. Cam asta e baza.

Pe mine m-a uimit foarte tare cum lucreaza si cum se configureaza. Daca la CakePHP nu faci decat sa creezi fisiere si sa scrii in ele, aici nici macar nu le mai creezi, doar schimbi prin ele variabile, si adaugi proprietati.
Sistemul de retinere a datelor de configurare este format din fisiere .yml (http://www.yaml.org/) si e foarte intuitiv.
Un lucru care o sa uimeasca multi developeri este admin-generator-ul care e o componenta care genereaza pagini de administrare pentru continutul site-ului si nu numai.
Il puteti urmari in actiune aici (doar pentru coderii dedicati, daca va plictisiti nu va uitati :D)

Tags:

Fortare download-ului a oricarui tip de fisier in PHP

Poate ati avut nevoie vreodata ca aplicatia voastra sa permita donloadul unui pdf sau a unui fisier imagine fara insa a le incarca in pagina. (de exemplu un link spre o imagine o va deschide tot timpul in browser).

Iata si cum se face chestia asta:

Tags:

Securitate - Formularul de contact

Continuand cu articolele despre securitatea aplicatiilor web, astazi vorbim despre securizarea formularului de contact.

Mai toata lumea are unul pe site si ni se pare banal. Ei, pe cat de simplu pare pe atat de usor poate fi folosit in scopuri nu tocmai ortodoxe.

Luam cazul clasic in care datele din formular pleaca pe un mail si nu intra in baza de date (aici campurile pot fi injectate cu SQL - lucru de care vom vorbi in alt articol cel mai probabil), ci pleaca pe mail cum se intampla pe majoritatea site-urilor.

Tags:

Cinci pa?i pentru o aplica?ie web mai sigur?

Cu to?ii am avut probabil de-a face cu numeroase aplica?ii web care con?in diverse formulare de c?utare, autentificare, editare, etc. Marea majoritate dintre noi s-a confruntat cu problema creerii unei astfel de aplica?ii... Întrebarea este: "C??i dintre noi au reu?it s? creeze o astfel de aplica?ie cu adev?rat sigur??". Nu sunt statistician, dar probabil c? doar jum?tate dintre noi. Pentru cealalt? jum?tate am câteva sfaturi demne (cred eu) de luat în seam?.

Cel mai important lucru pe care trebuie s? îl ai în minte când te apuci s? scrii o astfel de aplica?ie este urm?torul: "Niciodat? s? nu te încrezi în inputul utilizatorului!". Exist? foarte mul?i utilizatori r?u-inten?ionat care vor încerca s? î?i fac? via?a grea. A?adar, iat? cele 5 sfaturi promise:

  • Încearc? s? validezi întregul input al utilizatorului
    Pentru aceasta este necesar? o bun? în?elegere a tuturor parametrilor care vin de la client (câmpuri ascunse, cookie-uri, etc).
    Atentie: Validarea datelor trebuie s? precead? orice alt? opera?ie!
  • Creaz? ?i utilizeaz? func?ii de validare
    Un exemplu clasic ar fi metodele isValidEmail() care returneaz? o valoare logic? (adev?rat sau fals) în fun?ie de datele introduse de c?tre utilizator.
  • Verific? întotdeauna formatul ?i domeniul datelor
    Domeniul se refer? în special la datele de tip numeric. De exemplu, în cazul unui magazin virtual, pre?ul unui produs nu poate fi negativ.
  • Nu te baza niciodat? DOAR pe validarea datelor f?cut? pe partea de client (cu ajutorul Javascript)
    Dup? cum se bine ?tie, navigatoarele actuale permit dezactivarea execut?rii codului Javascript. Dac? partea de cod de pe server se bazeaz? doar pe validarea care s-a f?cut pe partea de client, aplica?ia ta este una total nesigur?.
  • Ai mare grij? la datele pe care le trimi?i prin intermediul câmpurilor de tip "hidden"
    Nu te baza pe faptul c? dac? aceste câmpuri nu se v?d în pagina afi?at? utilizatorului ele sunt sigure. Dimpotriv?, un câmp ascuns este la fel de u?or de modificat ca ?i unul vizibil. De exemplu, nu trimite date sensibile de la o pagin? la alta prin intermediul acestui tip de câmpuri. O metod? mult mai sigur? este folosirea sesiunilor, deoarece acestea sunt stocate pe server, clien?ii neavând acces la ele.


Bibliografie:

Tags: