#offline - We bring IRC to www!
Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.
Căutare
 
 

Rezultate pe:
 


Rechercher Cautare avansata

Vezi ceasul

Promovare Gratuita - Top123
Ultimele subiecte
» Haide sa facem acest forum cat mai placut
Despre PHP EmptyMar Oct 30, 2012 9:29 am Scris de birthday

» haideti sa ne cunoastem :P
Despre PHP EmptyVin Iun 05, 2009 6:03 am Scris de BLaCkShaDoW

» In legatura cu take-ul de aseara si remuser pe userul meu
Despre PHP EmptyMier Mai 13, 2009 11:27 am Scris de r0gu3

» despre sex ?
Despre PHP EmptyLun Mai 11, 2009 2:56 am Scris de chrysta

» hmmm scripturi:
Despre PHP EmptyMier Mai 06, 2009 12:23 pm Scris de gore

» Tu ce preferi?
Despre PHP EmptyMier Mai 06, 2009 12:15 pm Scris de gore

» DAN DIACONESCU SE EXTINDE SI IN AUSTRIA
Despre PHP EmptyMier Apr 15, 2009 6:40 pm Scris de R32

» CELE MAI URATE CELEBRITATI MASCULINE
Despre PHP EmptyMier Apr 15, 2009 6:33 pm Scris de R32

» CNA A DECIS DIFUZAREA REALITY SHOW-URILOR DUPA ORA 23
Despre PHP EmptyMier Apr 15, 2009 6:27 pm Scris de R32

Navigare
 Portal
 Index
 Membri
 Profil
 FAQ
 Cautare
Meteo
Meteo
Bucuresti
Constanta
Iasi
Bacau
Timisoara
Craiova
Flux RSS


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 


Cine este conectat?
În total sunt 2 utilizatori conectați: 0 Înregistrați, 0 Invizibil și 2 Vizitatori :: 1 Motor de căutare

Nici unul

[ Vizualizeaza toata lista ]


Recordul de utilizatori conectați a fost de 20, Joi Dec 09, 2021 10:48 pm

Despre PHP

In jos

Despre PHP Empty Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:41 am

PHP 1
aici poti invata php foarte simplu
http://www.php.net
Unelte de baza - ce aveti nevoie pentru un site profesionist.

De ce sa folositi PHP în loc de HTML sau ASP sau PERL? Pentru ca, fata de alte limbaje, PHP este gratuit.
Sa spunem ca aveti de facut un site care va contine peste 150 de pagini. Daca ar fi sa îl faceti în HTML, ar dura ceva vreme. Ok. Sa zicem ca site-ul este gata, dar acum vreti sa schimbati fontul si culorile textului si ale link-urilor în toate cele 150 de pagini. Va apuca durerea de cap doar când va gânditi ce aveti de facut. În schimb, în PHP, acest lucru si multe altele sunt foarte simple. Daca site-ul respectiv ar fi fost facut în PHP pe module, tot ce ar fi trebuit sa faceti este ca în partea care contine informatiile despre text sa schimbati informatile despre text si link asa cum doriti si modificarea este aceeasi pentru toate paginile. Simplu nu?
Pentru a rula exemplele si scripturile existente pe acest site pe calculatorul dvs. de acasa sau pe pagina proprie trebuie sa aveti instalate si configurate câteva aplicatii de care o sa vorbim în continuare. Nu trebuie sa aveti cunostinte preliminare de baze de date sau programare. Simpla studiere a codului sursa si aplicarea exemplelor va poate lamurii ce poate face php. Deci, daca va credeti pregatiti cititi în continuare...
Unelte de baza

Crearea unor pagini dinamice la un nivel performant, precum si punerea lor în functiune, nu poate fi facuta fara anumite programe. Iata cam de ce aveti nevoie:

Browsere - Pentru testarea paginilor este nevoie de mai multe browsere pentru ca nu toate afiseaza acelasi rezultat si este neprofesional sa obligati vizitatorul sa foloseasca un anumit browser doar pentru ca pagina facuta de voi arata si merge mai bine cu acel browser. Deci va recomand sa instalati 2-3 browsere pentru teste. Dintre cele mai folosite în prezent va recomand Internet Explorer (folosit pe calculatoare cu sistem de operare Windows), Firefox (se foloseste din ce în ce mai des datorita extensiilor si faptului ca se poate instala atât pe sisteme de operare Windows cât si pe Mac OS X sau Linux) si Opera (care are suport pentru mai multe sisteme de operare).

Serverul web pentru teste - Daca lucrati cu PHP-MySQL sub Windows, sigur aveti nevoie de triada Apache - PHP - MySQL sa fie instalata pe calculatorul local. Pentru aceasta aveti doua posibilitati: prima ar fi sa descarcati de pe pagina producatorului fiecare aplicatie în parte si sa o instalati manual, urmând apoi sa faceti configurarea serverelor manual (lucru nerecomandat începatorilor) si a doua varianta sa descarcati un program care instaleaza toate acestea gata configurate pe calculator, urmând ca voi doar sa va apucati de lucru. Astfel de aplicatii sunt EasyPHP de exemplu (pentru Windows 95-98 dar merge si pe Windows 2000 si XP) sau recomandarea mea WAMP5 care merge doar pe Windows NT (adica 2000, XP, 2003, Longhorn, etc) dar care are multe alte facilitati în plus fata de EasyPHP pe care cu timpul când veti învata mai multe despre PHP si MySQL o sa le considerati foarte utile (cum ar fi posibilitatea de testare a scripturilor PHP atât pentru versiunea 4 cât si 5). Ultima recomandare, atât pentru cei care folosesc sistemul de operare Windows cât si Linux, ar fi XAMP care contine toate pachetele necesare instalarii si configurarii unui server de web profesional (inclusiv server de FTP, SSI, DNS si MAIL), dar pe care nu îl recomand începatorilor pentru ca multimea de facilitati oferite va poate încurca.

Editoare web - Dupa ce ati instalat serverul web si browserele acum va mai trebuie un editor bun pentru a scrie cod si a vizualiza paginile create. Pentru aceasta recomandarea mea este suita Macromedia (Dreamweaver, FLASH si FreeHAND). Puteti descarca Dreamweaver (pentru a scrie cod si a vedea/rula paginile în timp real) de la ei de pe site si tot de la ei va mai recomand Fireworks (daca va ocupati si cu design-ul paginilor aceasta aplicatie va este utila împreuna cu Adobe Photosop sau Corel Draw) si Flash (daca doriti sa faceti animatie pentru site). Desigur sunt o multime de programe care fac aceleasi lucruri cu ce va recomand eu, dar daca doriti sa lucrati la nivel profesional recomand sa lucrati cu unelte de profesionisti. Bineânteles ca puteti scrie cod si în Notepad si desena în Paint dar aplicatiile pe care vi le-am recomandat va usureaza extraordinar de mult munca si va semnaleaza rapid erorile din pagini.
Alte editoare pe care vi le recomand sa le testati sunt: PSPad (un bun înlocuitor al Notepad-ului, mai ales ca este freeware), Zend Studio (destinat profesionistilor).

Dupa ce ati facut rost de tot ce va trebuie ca sa începeti treaba, va recomand sa cititi în continuare celelalte articole, eventual sa vizitati si pagina de download, sigur gasiti ceva util acolo pentru început, apoi pagina de link-uri, unde gasiti resurse gratuite si sa discutam pe forum eventualele probleme pe care le întâmpinati.
Multa Bafta !

PHP 2

Despre PHP - ce este si instructiuni pentru începatori.

Despre PHP

PHP este limbajul ideal pentru construirea de pagini web dinamice. Este usor de învatat, open-source, poate fi rulat pe mai multe platforme si se poate conecta la mai multe tipuri de baze de date. Cel mai important aspect al limbajului este însa posibilitatea de a fi îmbricat cu cod HTML. Putem astfel crea pagini HTML statice si din loc în loc, acolo unde este nevoie, sa introducem dinamism cu ajutorul PHP.
Limbajul PHP s-a "nascut" în 1994 din nevoia lui Rasmus Lerdorf de a afla câte persoane îi viziteaza CV-ul online. El a denumit setul de scripturi create PHP, acronimul pentru Personal Home Page. Pe parcursul urmatorilor trei ani limbajul a evoluat dar adevaratul succes a început sa îl cunoasca de când Zeev Suraski si Andi Gutmans au rescris motorul PHP de la cap la coada, motor care poarta din versiunea 4 a PHP numele Zend, o combinatie de litere din prenumele creatorilor sai: Zeev si Andi.
Fiind open-source, PHP beneficiaza de suport activ din partea comunitatii online, acesta fiind si motivul cresterii explozive a numarului site-urilor bazate pe PHP.
Interpretorul PHP este cel mai cunoscut limbaj de scripting folosit în acest moment pentru crearea site-urilor Web interactive. Denumirea este un "acronim recursiv" pentru Hypertext PreProcessor. Diferenta esentiala fata de alte limbaje de scripting (gen JavaScript) este faptul ca PHP este un interpretor server-side (operatiile sunt executate de catre server si nu pe calculatorul utilizatorului). Pentru a putea testa pagini PHP aveti nevoie de un server de web (Apache) si de pachetul PHP instalat.
PHP permite folosirea unor elemente specifice limbajelor de programare. Iesirea standard a script-ului PHP devine intrarea standard pentru programul de navigare care vizualizeaza pagina. Asadar, la iesirea standard poate fi scris (de exemplu, prin intermediul comenzii echo) orice tip de cod HTML, acesta fiind interpretat de catre browser.
Pe lânga manipularea continutului paginilor de web, PHP poate trimite headere HTTP pentru autentificare, seta cookie-uri sau redirectiona utilizatorii. Mai mult, cu ajutorul bibliotecilor externe de functii poate parsa fisiere XML, crea si manipula imagini, animatii Shokwave Flash, PDF-uri sau se poate conecta la un server de mail, iar acestea sunt doar câteva din functiile pe care le poate îndeplini.
Interpretorul PHP parcurge documentul accesat pâna în momentul în care întâlneste un marcaj de deschidere care indica faptul ca textul care urmeaza trebuie interpretat ca fiind cod PHP. În continuare, textul este interpretat ca fiind cod PHP pâna în momentul în care este întâlnit marcajul de inchidere. Întreg textul care nu este interpretat ca fiind cod PHP este furnizat la iesire în forma în care a fost primit ca intrare de catre interpretor. Exista mai multe marcaje care indica începerea unei secvente de cod PHP, dar doar doua dintre ele sunt folosite de obicei (aceste marcaje depind si de configurarea serverului de web). Daca dorim ca documentul sa respecte specificatiile XML, atunci singura posibilitate de inserare a codului PHP este folosirea unei secvente de tipul:


Cod:
<?php
//cod PHP
?>

Cea de-a doua posibilitate este utilizarea marcajului <SCRIPT> într-o maniera asemanatoare celei folosite pentru includerea de script-uri JavaScript. Sintaxa este urmatoarea:


Cod:
<SCRIPT language = "php">
//cod PHP
</SCRIPT>

Exista alte doua posibilitati, dar acestea sunt folosite rar, în situatii particulare si depinde în mare masura de setarile serverului de web.
Este permisa "iesirea" si "intrarea" în "modul PHP" de oricâte ori este necesar în pagina. Aceasta este util când se lucreaza cu texte de mari dimensiuni.
Pentru ca instructiunile PHP sa fie interpretate corect, acestea trebuie separate prin caracterul ';'.
În PHP, comentariile pot fi inserate folosind sintaxele din C, C++ si shell-urile Unix. Aparitia secventei de caractere '//' sau a caracterului '#' indica faptul ca restul liniei reprezinta un comentariu. Pentru a insera comentarii pe mai multe linii, acestea trebuie delimitate de secventa '/*' la început si de secventa '*/' la sfârsit.

PHP 3

Variabile în PHP - ce sunt si cum se folosesc.

Variabile în PHP

Programarea de orice fel, nu doar PHP, are doua elemente de baza: datele si instructiunile. Pentru a lucra cu datele trebuie sa întelegem ce sunt variabilele si tipurile, iar pentru a lucra cu instructiuni trebuie sa aflam ce sunt structurile de control si functiile.
O variabila este o zona de memorie caruia i se da un nume pentru a putea fi recunoscuta ulterior si pentru a ne putea referi mai târziu la ea.
În PHP, o variabila este reprezentata de semnul '$', urmat de numele variabilei. La fel ca în limbajele C/C++ sau Java, pentru denumirea variabilelor se face distinctia între literele mari si literele mici.
Numele unei variabile poate începe cu o liniuta de subliniere '_' sau o litera. Restul caracterelor care formeaza numele variabilei pot fi litere, cifre sau liniute de subliniere. În PHP, sunt considerate litere toate caracterele cuprinse între 'a' si 'z', cele cuprinse între 'A' si 'Z', precum si cele care au codul ASCII cuprins între 127 si 255.
Începând cu versiunea 4, au fost introduse referintele; astfel, o variabila poate referi o alta, astfel încât modificarea valorii uneia duce la modificarea automata a valorii celeilalte. O referinta la o variabila este reprezentata de caracterul '&'. Iata un scurt exemplu:

Cod:
<?php
$a = "PHP4 e slab";
$b = &$a;
$b = "PHP4 e foarte bun";
echo $a;
echo "<br>";
echo $b;
?>

Dupa cum se vede, modificarea valorii variabilei $b a dus automat la modificarea automata a valorii variabilei $a.
Sa disecam codul pentru a învata câteva lucruri:
- toate instructiunile PHP se termina cu punct si virgula. Omiterea semnului ";" este cea mai frecventa greseala pe care o fac programatorii începatori.
- codul PHP începe întotdeauna cu "<?php" si se termina cu "?>". El poate fi îmbricat cu cod HTML dupa cum puteti vedea în exemplul de mai sus. Puteti chiar crea pagini HTML fara pic de cod PHP în ele si sa le dati extensia php. Atâta vreme cât parser-ul PHP nu "vede" tagurile "<?php ...?> ", el va trimite pagina neschimbata catre server.
- putem pune diacritice în cadrul unui string însa pentru ca browserul sa le afiseze corect va trebui sa specificam în <head> setul de caractere folosit, la fel ca într-un document HTML.
- valoarea unei variabile poate fi schimbata dupa necesitati (asa cum am schimbat valoarea lui $a) sau ea va fi schimbata automat în functie de celelalte variabile de care depinde.

PHP 6

Afisarea mesajelor în PHP

Limbajul PHP ofera mai multe variante de a trimite la browser mesaje si siruri de caractere sau chiar cod HTML. Cea mai folosita functie este echo(). Sintaxa corecta este:

<?php

echo("sir de caractere");

?>

Instructiunea de mai sus va afisa în browser mesajul introdus între ghilimele. Functia echo, la fel ca si print, nu este chiar o functie, ci mai degraba un constructor al limbajului si nu este nevoie sa folositi parantezele ca pentru o functie. De fapt, daca doriti sa trimiteti mai multi parametri catre echo, nu trebuie sa includeti acesti parametrii între paranteze. Exista chiar si o varianta mai scurta a lui echo, dar aceasta functioneaza doar daca este setat în configuratia php.ini directiva short_open_tag pe ON. Sintaxa pentru varianta scurta este:

<?=$foo?>

În cazul de mai sus, imediat dupa deschiderea tagului php se va afisa valoarea variabilei $foo. Nu recomand aceasta abordare, deoarece nu toate serverele au setata în configuratia lor short_open_tag pe ON si nu va functiona.
O functie asemanatoare cu echo este print. La fel ca si echo, nici aceasta nu este chiar o functie ci un constructor al limbajului, si nu trebuie sa utilizati parantezele. Textul ce urmeaza a fi afisat trebuie introdus între ghilimele simple sau duble, rezultatul fiind usor diferit. Folosind ghilimelele duble, orice variabila din cadrul stringului este parsata. Astfel, daca am avea de exemplu:

<?php

$x = 1;

$rezultat = $x*1;

print "Rezultatul inmultirii lui $x cu 1 este $rezultat";

?>

afiseaza în browser:

Rezultatul inmultirii lui 1 cu 1 este 2

Daca am folosi ghilimelele simple (print '...'), variabilele $x si $rezultat nu ar fi fost parsate si output-ul ar fi fost:

Rezultatul inmultirii lui $x cu 1 este $rezultat

Putem afisa variabilele si daca folosim ghilimelele simple, "rupând" stringul si intercalându-l cu variabile, în forma urmatoare, folosind operatorul "."(punct) de concaternare a stringurilor (sirurilor):

<?php

print 'Rezultatul inmultirii lui '.$x.' cu 1 este '.$rezultat;

?>

Pentru a afisa caracterele speciale folosite de PHP (ghilimelele simple ', ghilimelele duble ", backslash-ul \, semnul $) trebuie sa le precedati cu semnul \, astfel:

<?php

echo "Semnul dolar \$, back-slash \\";

?>

Ghilimelele trebuie precedate de semnul \ doar daca sunt de acelasi tip cu cele care încadreaza string-ul. În plus, într-un string puteti folosi celelalte ghilimele normal. Daca doriti sa afisati doar valoarea unei variabile, puteti sa nu o încadrati între ghilimele. Exemplu:

<?php

echo $x;

?>

Alte informatii despre aceste functii, precum si altele asemanatoare cu acestea, de genul printf(), si flush() puteti gasi în manualul oficial pe care îl puteti lua gratuit de pe site-ul oficial al PHP - www.php.net.


Ultima editare efectuata de catre R32 in Vin Mar 27, 2009 6:47 pm, editata de 1 ori
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:42 am

Construieste un site cu php

În continuare, o sa încerc sa va prezint cum se poate construi un site cu ajutorul limbajului PHP. Exemplul prezentat nu este un standard, este doar o modalitate de a vedea cum se poate construi un site si cum se preiau sau trimite variabilele prin intermediul site-ului. Puteti, pe baza acestui exemplu, sa va construiti propriul site, în forma preferata de dvs. si adaptând modelul acesta la necesitatile voastre.
În exemplul meu, am preferat sa am o singura pagina, anume index.php, în care sa includ dinamic continutul si meniul, în functie de ce link acceseaza vizitatorul. Puteti vedea acest model într-un fel modular, fiecare script fiind de fapt un modul care executa anumite operatii specifice. Astfel, în pagina index.php se includ mai multe module (scripturi) care luate separat, fiecare fac anumite lucruri, dar puse împreuna, formeaza pagina de web generata dinamic. În acest exemplu, nu am folosit o baza de date, dar pe acelasi principiu se poate adapta ideea la un site care preia datele din baza de date.

Partea de sus a paginii (head)
Partea cu meniul orizontal generat dinamic (partea de body)
meniul lateral partea in care se afiseaza continutul paginilor, si alte informatii aici se pot pune alte informatii generate dinamic
partea de incheiere a paginii (footer)

Dupa cum puteti vedea alaturat, am despartit fiecare parte a unei pagini în bucati, fiecare bucata este colorata diferit pentru o mai buna vizualizare. Puteti introduce în fiecare bucata câte un script php care sa genereze respectiva bucata dinamic. Astel, în cazul unei modificari, va fi mult mai usor sa modificati doar scriptul care se ocupa de o anumita parte a paginii, pe când daca tot site-ul ar fi fost facut static în HTML, la un site cu 100-200 de pagini chiar si cea mai mica modificare ar fi însemnat un chin.


Am numit fiecare script care se ocupa de o anumita parte a site-ului astfe:
head.php - contine partea dintre tagurile HTML si
body.php - contine partea dintre tagurile HTML si continutul paginii
footer.php - contine partea de jos a paginii

În continuare, o sa va prezint fiecare modul în parte.
index.php -
- head.php -
- css.php -
- js.php -
- body.php -
- meniu_orizontal.php -
- meniu_vertical.php -
- continut.php -
- contact.php -
- module.php -
- /module/data_ora.php -
- footer.php -

index.php - în care se seteaza nivelul de raportare al erorilor (daca nu doriti ca vizitatorii sa vada eventualele erori raportate de catre php, puteti stabili nivelul 0).Apoi, se verifica daca exista fisierul head.php si body.php si se încarca sau se opreste cu un mesaj de eroare.
head.php - în acest fisier se afiseaza codul html pentru începutul paginii, si daca exista, se încarca si fisierele cu cod CSS si Javascript folosite în pagina.
css.php - acest fisier contine codul CSS folosit pentru formatarea si afisarea paginii HTML.
js.php - daca se foloseste cod Javascript în pagini, este de preferat sa se salveze codul în acest fisier, pentru a putea avea acces rapid la el în cazul în care doriti sa faceti modificari.
body.php - contine codul HTML existent între tagurile si Daca exista, se încarca si fisierele care contin meniul orizontal si/sau vertical, precum si fisierul care afiseaza continutul paginii cerute. Pe langa acestea, daca doriti sa bagati alte scripturi în pagini, se include si fisierul module.php
meniu_orizontal.php - contine codul HTML pentru meniul orizontal.
meniu_vertical.php - consine codul HTML pentru meniul vertical
continut.php - afiseaza consinutul paginilor, în functie de linkul cerut. Daca se cer pagini externe, se verifica daca acea pagina exista si se încarca pentru afisare.
contact.php - poate fi o pagina externa, cu continut HTML sau PHP, precum si formulare de contact.
module.php - este un fisier care atunci când este accesat, verifica ce fisiere exista în directorul MODULE si le încarca pe fiecare.
data_ora.php - este un fisier extern, care afiseaza câteva informatii despre vizitator.
footer.php - este fisierul care afiseaza în josul paginii numele curent al paginii

PHP 7

Operatori PHP

Interpretorul PHP permite folosirea a noua tipuri diferite de operatori. Acestia opereaza asupra unor expresii (una, doua sau trei) si furnizeaza ca rezultat o alta expresie (rezultatul operatiei corespunzatoare).

Operatori aritmetici:
Toti operatorii aritmetici opereaza asupra a doua expresii (operanzi). Exista cinci astfel de operatori:
- adunare ('+');
- scadere ('-');
- înmultire ('*');
- împartire ('/');
- rest ('%').
Aceste operatii se aplica asupra unor valori care reprezinta tipuri numerice. Daca unul dintre operanzi nu are tip numeric, atunci el va fi convertit automat la o valoare întreaga. Daca cel putin unul dintre operanzi (dupa efectuarea eventualelor conversii necesare) este un numar real, atunci rezultatul operatiei va fi tot un numar real, cu exceptia operatorului rest; rezultatul operatiei de determinare a restului este întotdeauna un numar întreg. Daca ambii operanzi sunt numere întregi, atunci rezultatul va fi un numar întreg, cu exceptia împartirii al carei rezultat este întotdeauna un numar real. Daca operatorul rest este aplicat asupra unor numere reale, atunci rezultatul este un numar întreg. Nu este permisa împartirea la valoarea 0. Daca al doilea operand asupra caruia se aplica unul dintre operatorii '/' sau '%' are valoarea 0, va fi semnalata o eroare.

Operatori de comparare:
Interpretorul PHP pune la dispozitie mai multi operatori care pot fi folositi pentru compararea a doua valori. Expresiile în care apar astfel de operatori au ca rezultat valori logice (true sau false).
Cel mai des întâlnit operator este cel de atribuire, definit prin semnul =
Daca scriem $x = 1 nu înseamna ca $x este egal cu 1 ci ca i s-a acordat valoarea 1. Daca scriem $rezultat = $x + $y nu înseamna ca $rezultat este egal cu suma celor doua, ci ca i-am atribuit (acordat) valoarea sumei celor doua.
Operatorul de egalitate este == si se foloseste cel mai des în propozitii conditionale, pentru a testa egalitatea. Opusul sau, !=, este operatorul de inegalitate si se foloseste în acelasi scop. Operatorul de egalitate se foloseste pentru a compara egalitatea a doua valori. Pentru a va lamuri cum sta treaba cu egalitatea si atribuirea, testati urmatorul cod:


Cod:

$x = 1;
$y = 7;
if ($x == $y)
{
print "$x este egal cu $y";
}
if ($x != $y)
{
print "$x este diferit de $y";
}
?>

Alti operatori folositi pentru compararea valorilor variabilelor sunt:
'>' mai mare
'>=' mai mare sau egal
'<' mai mic
'<=' mai mic sau egal

Exemplu:

Cod:

$x = 5;
$y = 4;
if ($x > $y)
{
print "$x este mai mare ca $y";
}
if ($x <= $y)
{
print "$x este mai mic sau egal cu $y";
}
?>

'==' - rezultatul este true daca cele doua expresii au aceeasi valoare;
'===' - rezultatul este true daca cele doua expresii au aceeasi valoare si au acelasi tip;
'!=' sau '<>' - rezultatul este true daca cele doua expresii au valori diferite;
'!==' - rezultatul este true daca cele doua expresii au valori diferite sau au tipuri diferite;
'<' - rezultatul este true daca valoarea primei expresii este mai mica decât valoarea celei de-a doua expresii;
'>' - rezultatul este true daca valoarea primei expresii este mai mare decât valoarea celei de-a doua expresii;
'<=' - rezultatul este true daca valoarea primei expresii este mai mica sau egala cu valoarea celei de-a doua expresii;
'>=' - rezultatul este true daca valoarea primei expresii este mai mare sau egala cu valoarea celei de-a doua expresii.

Pe lânga acestea exista si operatorul conditional '?' care are forma expresie1?expresie2:expresie3 si are ca rezultat valoarea expresiei expresie2 daca valoarea expresiei expresie1 este true (eventual dupa conversia la tipul boolean) sau valoarea expresiei expresie3 în caz contrar.

Operatori pentru siruri de caractere:
Operatorii pentru stringuri sunt '.' (punct) pentru concaternare si '.=' (punct si egal) pentru atribuirea concaternarii. Acesti operatori sunt folositi pentru a unii stringuri, în felul urmator:


Cod:

// concaternarea stringurilor
$test = 'Am scris un '.'text'.'oarecare';
print $test;
// pe ecran va fi afisat "Am scris un text oarecare"

// concaternarea stringurilor cu variabile
$nr = 5;
print 'Am scris numarul '.$nr.' si un text '.' oarecare';
// pe ecran va fi afisat "Am scris numarul 5 si un text oarecare"

// atribuirea concaternarii
$nr = 6;
$text = "Un text ";
$text .= "oarecare ";
$text .= "si numarul ".$nr;
print $text;
// pe ecran va fi afisat "Un text oarecare si numarul 6"
?>

Operatori pe biti si operatori logici:
Interpretorul PHP pune la dispozitie sase operatori care opereaza asupra bitilor unui numar întreg sau ai unui sir de caractere. Acestia sunt:
- conjunctie ('&') - SI (AND);
- disjunctie ('|') - SAU (OR);
- disjunctie exclusiva ('^') - SAU exclusiv (XOR);
- negatie ('~') - NU (NOT);
- deplasare la stânga ('<<');
- deplasare la dreapta ('>>').

Operatorii logici va vor veni la îndemâna în executia scriptului atunci când aveti nevoie sa lucrati cu valori de adevar. Sa presupunem ca la intrarea în sectiunea de administrare avem un formular care cere numele si parola de acces în sectiune. Pentru contruirea expresiilor logice operanzii trebuie sa aiba tipul boolean; daca operatorii au alt tip, valoarea este convertita la o valoare booleana. scriptul PHP ar putea verifica aceste informatii pentru a autoriza accesul în sectiune folosind operatorii logici astfel:
- operatorul 'xor' (SAU exclusiv)
Expresia în care apare operatorul 'xor' va avea valoarea true daca exact unul dintre operanzi are valuarea true

- operatorul '!' (NOT)
if (!parola_e_buna) ... parola nu este buna, accesul este interzis
if (!parola_nu_e_buna) ... parola e buna, accesul este permis
Operatorul '!' returneaza TRUE daca valoarea initiala de adevar e FALSE si FALSE daca valoarea initiala este TRUE.

- operatorul '||' (OR)
if (numele_este_valid) || parola_este_buna) ...
verifica daca numele sau parola sunt valide si daca oricare dintre ele este, returneaza valoarea de adevar TRUE. În acest exemplu de pseudocod daca numele ar fi valid dar parola nu, i-am acorda utilizatorului acces mai departe, ceea ce nu este de dorit. Trebuie sa fim siguri ca si numele si parola sunt valide. Operatorul '||' returneaza TRUE daca oricare din valorile verificate e TRUE. Returneaza FALSE doar daca amândoua sunt FALSE.

- operatorul '&&' (AND)
if (numele_este_valid && parola_este_buna) ...
daca atât numele cât si parola sunt valide putem acorda utilizatorului acces în sectiunea de administrare. Operatorul '&&' returneaza TRUE doar daca ambele valori verificate sunt TRUE. El returneaza FALSE daca oricare dintre ele este FALSE (sau daca amândoua sunt FALSE).

Operatori de atribuire:
Primul operand asupra caruia este aplicat un astfel de operator de atribuire trebuie sa fie o variabila, iar al doilea poate fi o expresie.
Operatia Varianta scurta Varianta standard
adunare ('+=') $a += 2 $a = $a + 2
scadere ('-=') $a -= 2 $a = $a - 2
înmultire ('*=') $a *= 2 $a = $a * 2
împartire ('/=') $a /= 2 $a = $a / 2
rest ('%=') $a %= 2 $a = $a % 2
conjunctie ('&=') $a &= 2 $a = $a & 2
disjunctie ('|=') $a |= 2 $a = $a | 2
disjunctie exclusiva ('^=') $a ^= 2 $a = $a ^ 2
deplasare la stânga ('<<=') $a <<= 2 $a = $a << 2
deplasare la dreapta ('>>=') $a >>= 2 $a = $a >> 2
concaternare ('.=') $a .= "2" $a = $a . "2"

Exemplu:

Cod:

$b = 2;
$a = 1;
echo "$a += $b = ";
echo $a += $b;

$b = 2;
$a = 1;
echo "
$a -= $b = ";
echo $a -= $b;

$b = 2;
$a = 1;
echo "
$a *= $b = ";
echo $a *= $b;

$b = 2;
$a = 1;
echo "
$a /= $b = ";
echo $a /= $b;

$b = 2;
$a = 1;
echo "
$a %= $b = ";
echo $a %= $b;

$b = 2;
$a = 1;
echo "
$a &= $b = ";
echo $a &= $b;

$b = 2;
$a = 1;
echo "
$a |= $b = ";
echo $a |= $b;

$b = 2;
$a = 1;
echo "
$a ^= $b = ";
echo $a ^= $b;

$b = 2;
$a = 1;
echo "
$a <<= $b = ";
echo $a <<= $b;

$b = 2;
$a = 1;
echo "
$a >>= $b = ";
echo $a >>= $b;

$b = 2;
$a = 1;
echo "
$a .= $b = ";
echo $a .= $b;
echo "
";
?>


Rezultatul codului de mai sus este:

1 += 2 = 3
1 -= 2 = -1
1 *= 2 = 2
1 /= 2 = 0.5
1 %= 2 = 1
1 &= 2 = 0
1 |= 2 = 3
1 ^= 2 = 3
1 <<= 2 = 4
1 >>= 2 = 0
1 .= 2 = 12
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:43 am

Operatori de incrementare si decrementare:
Operatorul de incrementare (++) are ca efect cresterea cu 1 a valorii unei variabile, iar cel de decrementare (--) are ca efect scaderea cu 1 a valorii variabilei. Tipul variabilei poate fi întreg sau real. Daca operatorul precede variabila, atunci rezultatul expresiei este valoarea obtinuta dupa incrementare sau decrementare. Daca variabila precede operatorul, atunci rezultatul expresiei este valoarea variabilei înaintea incrementarii sau decrementarii. Cu alte cuvinte, daca operatorul precede variabila, atunci valoarea variabilei este mai întâi modificata si apoi utilizata, iar daca variabila precede operatorul, atunci valoarea ei este mai întâi utilizata si apoi modificata.
Acesti operatori pot fi utilizati si pentru variabile care contin siruri de caractere. Operatorul de incrementare duce la cresterea cu 1 a codului ASCII a ultimului caracter din sir daca acesta este o litera sau cifra. În cazul în care litera este 'z', respectiv 'Z', sau cifra este '9', atunci ea devine 'a', respectiv 'A', sau cifra '0' si se încearca incrementarea penultimului caracter. Daca aceasta este tot '9', 'z' sau 'Z' se aplica acelasi procedeu si se trece la antepenultimul caracter. Procedeul continua pâna în momentul în care se ajunge la un caracter care nu este '9', 'z' sau 'Z' sau se ajunge la începutul sirului. În acest ultim caz, la începutul sirului se adauga caracterul '1', 'a' sau 'A'. Incrementarea nu are nici un efect pentru caracterele care nu sunt cifre sau litere.
Decrementarea sirurilor de caractere nu are nici un efect, valorile variabilelor ramânând nemodificate. Exista o singura exceptie si anume sirurile care reprezinta numere întregi sau reale. Acestea sunt incrementate sau decrementate potrivit regulilor pentru valorile numerice.

Exemplu:


Cod:

$a = 7;
echo "a = $a";
echo ":
Rezultatul operatiei a++ este ";
echo $a++;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei ++a este ";
echo ++$a;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei a-- este ";
echo $a--;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei --a este ";
echo --$a;
echo "
. Noua valoare a variabilei a este $a.";
$a = 7.5;
echo "
a = $a";
echo ":
Rezultatul operatiei a++ este ";
echo $a++;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei ++a este ";
echo ++$a;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei a-- este ";
echo $a--;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei --a este ";
echo --$a;
echo "
. Noua valoare a variabilei a este $a.";
$a = "PHP";
echo "
a = $a";
echo ":
Rezultatul operatiei a++ este ";
echo $a++;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei ++a este ";
echo ++$a;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei a-- este ";
echo $a--;
echo "
. Noua valoare a variabilei a este $a.";
echo "
a = $a";
echo ":
Rezultatul operatiei --a este ";
echo --$a;
echo "
. Noua valoare a variabilei a este $a.";
echo "
";
?>


Rezultatul codului de mai sus este:

a = 7: Rezultatul operatiei a++ este 7. Noua valoare a variabilei a este 8.
a = 8: Rezultatul operatiei ++a este 9. Noua valoare a variabilei a este 9.
a = 9: Rezultatul operatiei a-- este 9. Noua valoare a variabilei a este 8.
a = 8: Rezultatul operatiei --a este 7. Noua valoare a variabilei a este 7.
a = 7.5: Rezultatul operatiei a++ este 7.5. Noua valoare a variabilei a este 8.5.
a = 8.5: Rezultatul operatiei ++a este 9.5. Noua valoare a variabilei a este 9.5.
a = 9.5: Rezultatul operatiei a-- este 9.5. Noua valoare a variabilei a este 8.5.
a = 8.5: Rezultatul operatiei --a este 7.5. Noua valoare a variabilei a este 7.5.
a = PHP: Rezultatul operatiei a++ este PHP. Noua valoare a variabilei a este PHQ.
a = PHQ: Rezultatul operatiei ++a este PHR. Noua valoare a variabilei a este PHR.
a = PHR: Rezultatul operatiei a-- este PHR. Noua valoare a variabilei a este PHR.
a = PHR: Rezultatul operatiei --a este PHR. Noua valoare a variabilei a este PHR.

Acesti operatori sunt utili de exemplu pentru monitorizarea unui download, daca doriti sa stiti de câte ori a fost descarcat un fisier dintr-o anumita pagina. La fiecare accesare a fisierului, scriptul incrementeaza cu 1 si afiseaza valoarea. (scriptul îl gânditi voi, doar nu vreti totul la tava)

Operatori pentru controlul erorilor:
În PHP exista un operator (@) care permite ignorarea erorilor. Daca este aplicat asupra unei expresii care ar duce la afisarea unui mesaj de eroare, atunci mesajul respectiv nu va fi afisat.

Operatori de executie:
Interpretorul PHP permite executarea unor comenzi sistem prin intermediul operatorului (` `) . Comanda respectiva este cuprinsa între apostroafele inverse (tasta de lânga 1 deasupra tastei tab), iar rezultatul acestei comenzi este un sir de caractere care reprezinta si rezultatul expresiei.
Urmatorul script PHP determina executia pe server a comenzii help /? si afisarea rezultatului în fereastra programului de navigare.


Cod:

echo "
".`help /?`."
";
?>


Atentie!
Pe unele configuratii de server nu se permite executarea de comenzi prin intermediul PHP (ca masura de siguranta, altfel oricine ar putea da un format sau reboot la server prin intermediul unui script PHP).
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:43 am

Operatori pentru vectori:
Singurul operator care poate fi aplicat asupra vectorilor este cel de concaternare (+) Rezultatul concaternarii a doi vectori este un vector care contine elementele din cei doi vectori. Daca cei doi vectori contin elemente cu aceeasi cheie, atunci este pastrat doar elementul din vectorul care reprezinta primul operand.

Exemplu:


Cod:

$x[2] = 2;
$x[4] = 4;
$x[5] = 5;
$x[7] = 7;
$y[1] = 100;
$y[2] = 200;
$y[3] = 300;
$y[4] = 400;
$y[5] = 500;
$z = $x + $y;
echo "$z[1] $z[2] $z[3] $z[4] $z[5] $z[7]";
?>

Rezultatul codului de mai sus este:

100 2 300 4 5 7

Ordinea operatiilor:
Evident, o expresie poate contine mai multi operatori, din categorii diferite. Pentru a indica ordinea în care trebuie efectuate calculele, trebuie stabilita o ordine a operatiilor. Pentru aceasta a fost definita precedenta si asociativitatea operatiilor.
Valoarea expresiilor corespunzatoare operatorilor cu precedenta mai mare va fi calculata înaintea valorilor expresiilor cu o precedenta mai mica. De exemplu, pentru expresia 1 + 2 * 3 va fi efectuata mai întâi înmultirea 2 * 3, datorita faptului ca operatorul '*' are precedenta mai mare decât cea a operatorului '+'.
Daca o expresie sau o subexpresie contine numai operatori cu aceeasi precedenta, atunci operatiile se vor efectua în ordinea determinata de asociativitatea acestor operatori care poate fi de la dreapta la stânga sau de la stânga la dreapta. Toti operatorii cu aceeati precedenta au aceeasi tip de asociativitate.
Evident, pentru a modifica ordinea implicita de efectuare a operatiilor pot fi folosite paranteze pentru a indica faptul ca o anumita operatie trebuie efectuata înaintea altora, chiar daca acestea din urma au o precedenta mai mare.
Trebuie observat faptul ca, datorita asociativitatii de la dreapta spre stânga a operatorilor de atribuire, expresiile de tipul $a = $b = 1 sunt valide. Mai întâi se va efectua atribuirea $b = 1; variabila $b va primi valoarea 1 si, datorita faptului ca rezultatul unei operatii de atribuire este valoarea atribuita variabilei care reprezinta primul operand, în continuare se va efectua atribuirea $a = 1, deci si variabila $a va primi tot valoarea 1. Tabelul de mai jos contine o lista cu majoritatea operatorilor din PHP. Liniile tabelului indica precedenta, în sensul ca un operator are aceeasi precedenta cu operatorii de pe linie în care apare si o precedenta mai mare decât oricare operator aflat pe o linie anterioara. În acest tabel se observa faptul ca, desi operatorii '&&' si 'and', respectiv '||' si 'or' realizeaza aceeasi operatie, ei au precedente diferite, deci nu sunt echivalenti din toate punctele de vedere.

Tip asociativitate
Tip
Operanzi
de la stânga la dreapta unar
. (selectare)
de la stânga la dreapta binar
or
de la stânga la dreapta binar
xor
de la stânga la dreapta binar
and
de la stânga la dreapta binar
print
de la stânga la dreapta binar
=
+=
-=
*=
/=
.=
%=
&=
|=
^=
~=
<<=
>>=
de la stânga la dreapta ternar
? :
de la stânga la dreapta binar
||
de la stânga la dreapta binar
&&
de la stânga la dreapta binar
|
de la stânga la dreapta binar
^
de la stânga la dreapta binar
&
fara asociativitate binar
==
!=
===
!==
fara asociativitate binar
<
<=
>
>=
de la stânga la dreapta binar
<<
>>
de la stânga la dreapta binar
+
-
. (concaternare)
de la stânga la dreapta binar
*
/
%
de la stânga la dreapta unar
!
~
++
--
(int)
(float)
(string)
(array)
(object)
@
de la stânga la dreapta unar
[
fara asociativitate unar
new

În tabel este prezentat si numarul expresiilor asupra carora actioneaza un operand. Operatorii unari actioneaza asupra unei singure expresii, cei binari asupra a doua expresii si singurul operator ternar asupra a trei expresii.

În continuare sunt câtiva operatori care executa operatii utile:

- abs(x) - returneaza valoarea absoluta a lui x;
- ceil(x) - returneaza valoarea x, rotunjita la întregul imediat superior;
- floor(x) - returneaza valoarea x, rotunjita la întregul imediat inferior;
- max(x, y, ...) - returneaza valoarea maxima a unui set de valori;
- min(x, y, ...) - returneaza valoarea minima a unui set de valori;
- pow(x, n) - returneaza numarul x, ridicat la puterea specificata n;
- strftime(f) - returneaza data curenta, formatata conform continutului parametrului f;
- sqrt(x) - returneaza radacina patrata a lui x
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:43 am

Mai jos sunt cateva exemple:

$lungime = sqrt($arie);

Acest exemplu calculeaza lungimea laturilor unui patrat, daca este cunoscuta aria patratului. În continuare este prezentat modul de utilizare al functiei max, care preia mai multe argumente:

$punctaj_castigator = max($punctaj1, $punctaj2, $punctaj3);

Un alt exemplu calculeaza aria unui cerc de raza data:


Cod:

$raza = 2.0;
$pi = 3.14159;
$arie = $pi * $raza * $raza;
echo "raza = ";
echo $raza;
echo "
arie = ";
echo $arie;
?>

PHP 8

Câteva idei utile pentru securitatea paginilor web

Regula numarul unu a securitatii online este: nu va încredeti niciodata în utilizator. Întotdeauna verificati datele trimise catre server si "curatati-le" înainte de a le utiliza. Pentru aceasta trebuie sa luati în considerare câteva posibile "gauri" de securitate. Mentionez ca cele scrise aici sunt doar notiuni generale, pentru o securitate ridicata ar trebui sa aveti notiuni specializate de baze de date si de administrare a serverelor web.

1. Variabilele globale
Având variabilele globale din php.ini setate pe ON puteti accesa datele trimise prin formulare mai simplu: $variabila în loc de $_GET['variabila'], la fel si pentru POST sau FILES. Daca scriptul nu este foarte bine gândit, variabilele globale pot prezenta un risc major de securitate. Din acest motiv php.ini este distribuit cu globals=off în ultimele versiuni.

2. Ghilimele "magice"
Daca în php.ini magic_quotes_gpc sunt OFF folositi functia addslashes pentru a preceda ghilimelele din datele trimise de utilizatori cu caracterul \. Daca magic_quotes_gpc sunt ON, PHP adauga automat caracterul \ înainte de ghilimele dar daca ele sunt OFF, ghilimelele din input va pot crea probleme serioase.
Ca exemplu, sa presupunem ca interogarea SQL de verificare a numelui si a parolei pentru înregistrarea pe site este

SELECT * FROM users WHERE nume='$nume' AND parola='$parola'

si daca interogarea este executata cu succes, utilizatorul este logat. În acest caz, folosind parola 'OR' 1=1 oricine poate avea acces pe site deoarece interogarea

SELECT * FROM user WHERE nume='un nume oarecare' AND parola=" OR '1=1'

este executata cu succes si returneaza un rezultat (toate înregistrarile din baza de date, de fapt). Mai mult, atunci când va asteptati ca baza de date sa returneze un singur rând, verificati acest lucru si nu daca interogarea s-a executat cu succes. Implicit în php.ini magic_quotes_gpc sunt ON pentru a va proteja de astfel de atacuri, dar este bine sa verificati înainte de a renunta la addslashes.

3. Includere
Încercati sa evitati includerea "vizibila" a fisierelor în forma http://site.ro/fisier.php?file=cutare.html pentru a include fisiere în cadrul unei pagini. Cu putina neatentie din partea voastra atacatorul ar putea accesa astfel de informatii sensibile din cadrul sistemului. Nu includeti fisiere straine. PHP poate "include" fisiere aflate pe alte servere decât cel care ruleaza daca setarea URL fopen wrappers este activata în php.ini. În exemplul de mai sus, un atacator ar fi putut accesa adresa

http://site.ro/fisier.php?file=http://www.rau.ro/scriptultau.php

pentru a include în fisier un script localizat pe alt server si astfel obtine acces catre toate resursele sistemului la care are acces PHP, putând rula comenzi de sistem, afisa informatii confidentiale sau sterge baza de date. Nu permiteti includerea fisierelor din alta parte decât de pe serverul vostru. Setati allow_url_fopen=OFF în php.ini.

4. Formulare
Folositi metoda POST în formulare atunci când informatia din acestea urmeaza sa fie introdusa în baza de date. Daca variabilele globale sunt OFF în php.ini sau metoda de transmitere a formularului este GET, un utilizator rau intentionat ar putea accesa adresa dvs. si ar introduce comentariul lui (exemplu "blabla") în baza voastra de date fara sa treaca propriuzis prin site. Asa va puteti trezi ca nu mai aveti spatiu pe server iar în baza de date sunt câteva milioane de comentarii care spun acelasi lucru "blabla".
Verificarea provenientei cererilor catre server este foarte importanta si în alt caz: formularele de loghin. Cineva care stie numele de utilizator ar putea încerca sa va gaseasca parola foarte usor. În acest caz va trebui sa puneti o protectie suplimentara care sa nu permita mai mult de X încercari consecutive esuate de logare pentru un nume de utilizator. Aceasta problema se rezolva usor folosind sesiunile. În momentul când cineva încearca sa trimita numele si parola din formular putem seta o variabila de sesiune $_SESSION['login_count'] care sa tina minte numarul de încercari. Când valoarea acesteia trece de 3 (încercari nereusite) nici macar nu mai interogati baza de date pentru a verifica datele trimise. Variabila de sesiune va ramâne în memorie cât timp browserul este deschis si sesiunea activa (optiunea implicita a PHP de mentinere a sesiunilor active este de o ora). Daca atacatorul asteapta o ora sau îsi închide browserul, sesiunea va fi închisa si va putea de alte X ori sa se logheze. De cele mai multe ori acesta masura de siguranta este suficienta pentru a preveni încercarile de aflare a parolelor.

5. Extensii
O practica obisnuita este de a acorda extensia .inc fisierelor care contin biblioteci de functii ce urmeaza a fi incluse si folosite în cod. PHP nu parseaza fisierele cu extensia .inc si daca acestea sunt apelate direct ele sunt trimise plain text catre browser. Nu puneti informatii sensibile (precum nume si parola) în fisiere cu extensia .inc, .txt, sau .html care pot fi accesate si vazute. Folositi pentru aceste fisiere extensia .php care, daca sunt accesate direct, vor fi rulate fara sa afiseze informatiile continute în ele.

6. Comanda CHMOD - setarea atributelor
Comanda CHMOD (abreviere pentru change mode permissions of a file) este folosita pentru a schimba modul de acces (de permitere) a fisierelor si directoarelor de pe server. Setarea poate afecta modul cum poate fi citit, sau cum se poate executa un fisier pe server. De exemplu, daca aveti un fisier .php care trebuie sa execute o comanda de scriere pe server într-un fisier .txt trebuie sa îi dati dreptul sa poata fi executat iar la fisierul .txt trebuie sa îi dati dreptul de a se putea scrie în el. Aveti 3 tipuri de acces - OWNER - GROUP - WORLD - fiecare cu câte 3 setari - READ - WRITE - EXECUTE -
Este bine ca la WORLD sa nu dati decât acces la citire (pentru a putea accesa paginile de pe site) dar nu si drepturi de scriere sau executie (pentru ca nu doriti ca oricine sa va scrie ce vrea în respectivul fisier .txt)
În programul TOTAL COMMANDER (pe care eu îl folosesc si pentru FTP) setarea atributelor pe server se face din meniul FILES - CHANGES ATTRIBUTES. Fiecare program de FTP are în meniul lui setare pentru atributele fisierelor de pe server.

7. Cookies
Daca aveti o sectiune de administrare pe site, unde accesul este restrictionat doar la membrii de exemplu, este bine ca în toate paginile din aceasta sectiune sa încluda o pagina de verificare a accesului. Aceasta pagina va verifica la fiecare accesare daca utilizatorul este înregistrat si are acces pe pagina respectiva si permite rularea paginii doar daca utilizatorul este înregistrat. Fara aceasta verificare, un utilizator ar putea accesa paginile din sectiunea de administrare fara sa treaca prin formularul de înregistrare. Dupa autentificarea propriu-zisa, vom folosi variabile de sesiune pentru a pastra în memorie câteva informatii despre autentificare, pentru a le verifica mai târziu, atunci când accesam alte pagini din cadrul sectiunii de administrare. Pornim întâi sesiunea dupa care trecem la salvarea informatiilor în ea ca în exemplul de mai jos:

session_start();
$_SESSION ['nume_admin'] = $_POST ['nume'];
$_SESSION ['parola_encriptata'] = $parolaEncriptata;

Pe lânga acestea, pentru o si mai mare siguranta, vom salva id-ul sesiunii în alta variabila. Toate sesiunile au un id unic, un string care seamana cu rezultatul unei criptari MD5:
$_SESSION ['key_admin'] = session_id();
Cu autentificare facuta, spunem scriptului sa încarce prima pagina din sectiunea de administrare:

header ("location: admin.php");

În continuare pentru a împiedica accesul neautorizat la paginile din aceasta sectiune, scriem un mic script de verificare a datelor sesiunii înainte de a încarca orice pagina din sectiunea de administrare:

session_start();
if ($_SESSION ['key_admin'] != session_id ()) {
print 'Acces neautorizat!';
exit;
}

8. Loguri de acces
Pentru o verificare ulterioara a persoanelor care încearca sa intre în paginile restrictionate de pe site, este bine sa salvam în baza de date (sau într-un fisier text) numele, parola criptata, ora, data, semnatura browserului si ip-ul. Asa veti stii cine a încercat sa va sparga site-ul si puteti crea un script care sa verifice de exemplu ip-ul si daca corespunde cu unul din cele care sunt blocate sa nu aiba acces la nici una din pagini (chiar daca gaseste userul si parola corecte)

9. Criptarea parolelor cu MD5
Parolele care sunt salvate în baza de date este recomandat sa le tineti criptate, astfel daca cineva încearca sa citeasca parolele le va vedea criptate.

INSERT INTO admin VALUES ("administrator", md5("parola"));

Criptarea folosind md5 nu este reversibila (si astfel nici dvs., nici altcineva nu o va putea afla chiar daca are acces la baza de date).

10. Pagina index.php în subdirectoare
Daca aveti mai multe directoare si subdirectoare pe server este recomandat pentru a preveni accesul la datele aflate în aceste directoare sa introduceti în fiecare director o pagina numita index.html sau index.php care sa faca redirectarea automat catre pagina principala a site-ului. Astfel minimizati riscul sa intre cineva si sa vada tot ce este în aceste subdirectoare.

11. Fisierul .htaccess
Pentru a bloca accesul la un anumit director (sau chiar la tot site-ul) puteti crea un fisier numit .htaccess (cu punct înainte) în care sa introduceti ip-ul care doriti sa îl blocati (sau care sa aiba acces)

Order Deny,Allow
Allow from all

În exemplul de mai sus, toata lumea are acces. Daca de exemplu ip-ul 192.168.1.1 nu doriti sa aiba acces la acel director scrieti

Deny from 192.168.1.1

Atentie, sa nu va blocati singuri ip-ul la site, ca altfel trebuie sa luati legatura cu administratorul serverului sa stearga fisierul ca sa puteti intra din nou pe site, sau sa scrieti prin FTP un nou fisier .htaccess. (la subdirectoare stergeti directorul sau salvati un alt fisier .htaccess) În cazul în care dupa de ati pus fisierul pe server nu îl vedeti, el este acolo dar serverul seteaza acest nume de fisier ca fisier ascuns.

12. Robotii de cautare
Motoarele de cautare pot indexa tot ce se afla la voi pe site. Daca doriti ca un fisier sau director sa nu fie indexat de catre motoarele de cautare, trebuie sa creati un fisier numit robots.txt care sa se afle în directorul principal de pe site (nu în subdirectoare). În el scrieti urmatoarele comenzi:

# robots.txt for http://www.tutoriale.far-php.ro
User-agent: *
Disallow: /cache/
Disallow: /admin
disallow: /search

unde pentru fiecare director sau fisier se specifica locatia si numele. Pentru mai multa siguranta, am gasit pe web un mic script care verifica tipul de browser si daca nu este un browser cunoscut nu permite accesul (daca cineva încearca sa citeasca paginile cu programe spion sau gen web offline).

Cum am specificat si la începutul acestui articol, cele spuse mai sus nunt doar cateva indicii si idei pentru a va putea proteja mai bine paginile.

PHP 9
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:44 am

Clase si obiecte în PHP

O clasa este o colectie de variabile si functii care opereaza asupra variabilelor respective. Sintaxa folosita pentru declararea unei clase în PHP este:


Cod:

class nume_clasa
{
// date membre
var nume_variabila_1
...
var nume_variabila_m
// metode
function nume_functie_1 (parametri)
{
... // definitia functiei
}
...
function nume_functie_n (parametri)
{
... // definirea functiei
}
}
?>


Pentru numele unei clase poate fi utilizat orice identificator permis în PHP cu o singura exceptie: sdtclass; acest identificator este folosit de PHP în scopuri interne.
În PHP functiile ale caror identificatori încep cu _ sunt considerate functii magice si utilizarea acestora nu este recomandata.
În PHP, datele membre nu pot fi initializate decât cu valori constante. Pentru a initializa variabilele cu valori care nu sunt constante trebuie folosit un constructor. Mai jos aveti un exemplu de clasa în care initializarile nu sunt corecte:


Cod:

class Nepermis
{
var $data = date("Y-m-d");
var $nume = $prenume;
var $dest = 'Mihai '.'Claudiu';
var $obiecte = array ("minge", "pantof");
}
?>


Obiecte

În PHP clasele sunt considerate a fi tipuri de date; ele pot fi privite ca fiind "amprentele" variabilelor propriu-zise. Pentru a crea o variabila al carei tip este o clasa trebuie utilizat operatorul new. În continuare vom defini o clasa Aritmetica cu doua date membre x si y care sunt numere întregi si doua metode care realizeaza adunarea, respectiv înmultirea lor.


Cod:

class Aritmetica
{
var x = 2;
var y = 3;
function Suma ()
{
return $this -> x + $this -> y;
}
function Produs()
{
return $this -> x * $this -> y;
}
}
?>


Pentru a crea un obiect de tipul Aritmetica vom utiliza o instructiune de tipul:

$aritm = new Aritmetica;

Acum putem utiliza metodele clasei; pentru a afisa suma sau produsul celor doua numere vom putea apela cele doua metode astfel:

echo $aritm -> Suma ( );
echo $aritm -> Produs ( );

Vom obtine rezultatele 5, respectiv 6. Valorile datelor membre pot fi si ele modificate prin instructiuni de tipul:

$aritm -> x = 5;
$aritm -> y = 4;

Daca, în urma modificarii apelam din nou metodele Suma( ) si Produs( ), rezultatele vor fi 9, respectiv 20.



Cod:

class PHP4
{
var $salut = "Salut PHP4!";
function Salut()
{
return $this -> salut;
}
}
$salutare = new PHP4;
echo $salutare -> Salut()."
";
?>


Rezultatul codului de mai sus este:

Salut PHP4!

În acest exemplu a fost utilizata pseudo-variabila $this. Aceasta este folosita pentru a indica faptul ca se opereaza asupra unei date membre a obiectului curent.


Extinderea claselor

Deseori este necesara definirea unor clase cu proprietati (date membre) si metode asemanatoare. Pentru a usura definirea unor astfel de clase a fost introdus conceptul de extindere (derivare) a claselor.
O clasa derivata va pastra toate proprietatile si metodele clasei pe care o extinde si poate contine diferite proprietati si metode noi. Nu exista nici o posibilitate de a elimina din clasa derivata anumite proprietati sau metode ale clasei de baza. O anumita clasa poate avea o singura clasa parinte; asadar, în PHP nu este permisa mostenirea multipla. Pentru a extinde o anumita clasa se utilizeaza cuvântul cheie extends.
?n urmatorul exemplu voi extinde clasa Aritmetica; o sa adaug înca o variabila si o sa crez doua noi functii: una pentru calculul sumei celor trei variabile si una pentru calcularea produsului lor:


Cod:

class Aritmetica3 extends Aritmetica
{
var z = 4;
function Suma3()
{
return $this -> x + $this -> y + $this -> z;
}
function Produs3()
{
return $this -> x * $this -> y * $this -> z;
}
}
?>


Daca definim un obiect prin intermediul unei instructiuni de genul:

$aritm3 = new Aritmetica3;

atunci pentru acest obiect vom putea utiliza atât metodele definite în cadrul clasei Aritmetica3: Suma3( )si Produs3( ), cât si metodele definite în cadrul clasei de baza Aritmetica: Suma( )si Produs( ).
În continuare aveti un exemplu care ilustreaza modul în care pot fi create si utilizate clasele derivate.


Cod:

class Aritmetica
{
var $x = 2;
var $y = 3;
function Suma()
{
return $this -> x + $this -> y;
}
function Produs()
{
return $this -> x * $this -> y;
}
}

class Aritmetica3 extends Aritmetica
{
var $z = 4;
function Suma3()
{
return $this -> x + $this -> y + $this -> z;
}
function Produs3()
{
return $this -> x * $this -> y * $this -> z;
}
}

$aritm3 = new Aritmetica3;
echo "Inainte de modificare.";
echo "
";
echo "Suma primelor doua numere: ";
echo $aritm3 -> Suma()."
";
echo "Produsul primelor doua numere: ";
echo $aritm3 -> Produs()."
";
echo "Suma celor trei numere: ";
echo $aritm3 ->Suma()."
";
echo "Produsul celor trei numere: ";
echo $aritm3 -> Produs()."
";

$aritm3 -> x = 5;
$aritm3 -> y = 4;
$aritm3 -> z = 3;
echo "

";
echo "Dupa modificare.
";
echo "
";
echo "Suma primelor doua numere: ";
echo $aritm3 -> Suma3()."
";
echo "Produsul primelor doua numere: ";
echo $aritm3 -> Produs3()."
";
echo "Suma celor trei numere: ";
echo $aritm3 -> Suma3()."
";
echo "Produsul celor trei numere: ";
echo $aritm3 -> Produs3()."
";
?>
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:44 am

Rezultatul codului de mai sus este:



Citat:

Inainte de modificare.
Suma primelor doua numere: 5
Produsul primelor doua numere: 6
Suma celor trei numere: 5
Produsul celor trei numere: 6


Dupa modificare.

Suma primelor doua numere: 12
Produsul primelor doua numere: 60
Suma celor trei numere: 12
Produsul celor trei numere: 60


În PHP clasele trebuie definite înaintea utilizarii lor; asadar clasa parinte va fi definita întotdeauna înaintea clasei fiu.


Constructori

Un constructor este o metoda (functie) a unei clase care este apelata automat în momentul în care este creata o noua instanta a clasei (cu ajutorul operatorului new). În PHP, este considerata ca fiind un constructor, orice functie care are acelasi nume cu clasa în interiorul careia este definita.
Constructorii pot fi folositi pentru initializarea datelor membre cu valori care nu sunt constante. Ei pot avea argumente, iar acestea pot fi optionale. Pentru a putea utiliza clasa fara a specifica nici un parametru în momentul crearii unui obiect, se recomanda stabilirea unor valori implicite pentru toate argumentele constructorului. În cazul în care nu este definit un constructor pentru o anumita clasa, se utilizeaza constructorul clasei de baza, daca aceasta exista. De exemplu, pentru urmatoarea secventa de cod, în momentul crearii obiectului corespunzator variabilei $b, va fi apelat constructorul clasei A.


Cod:

class A
{
function A()
{
echo "Constructorul clasei A
";
}
function B()
{
echo "O functie obisnuita a clasei A.
";
}
}

class B extends A
{
function C()
{
echo "O functie obisnuita a clasei B.
";
}
}
?>


În PHP apelul constructorului clasei de baza trebuie sa fie explicit daca este necesara executarea operatiilor corespunzatoare. În majoritatea limbajelor de programare exista functii speciale numite destructori care sunt apelate automat în momentul "distrugerii" unui obiect. În PHP nu exista destructori.


Operatorul ::

Uneori este utila folosirea unor metode sau variabile ale clasei de baza sau ale unei clase care nu a fost instantiata înca. În acest scop a fost introdus operatorul ::
Pentru a descrie modul de utilizare al acestui operator voi prezenta mai întâi un exemplu:


Cod:

class A
{
function exemplu()
{
echo "Functia clasei de baza.
";
}
}

class B extends A
{
function exemplu()
{
echo "Functia redefinita
\n";
A :: exemplu();
}
}

A :: exemplu();
$b = new B;
$b -> exemplu();
$b = new B;
?>


Prin intermediul instructiunii

A :: exemplu( );

este apelata metoda exemplu( ) a clasei A, asadar se afiseaza mesajul 'Functia clasei de baza' cu toate ca nu exista nici un obiect care este o instanta a acestei clase, deci nu putem scrie o instructiune de tipul $a -> exemplu( );
În schimb apelam metoda

$b -> exemplu( );

ca "o functie a clasei" si nu ca "o functie a unui obiect". Putem avea functii ale claselor, dar nu putem avea variabile ale claselor. De fapt, în momentul unui astfel de apel nu se creeaza nici un obiect care este instanta a clasei respective. Ca urmare, o functie a unei clase nu poate opera asupra unor proprietati ale clasei, dar poate utiliza variabile locale sau globale. În plus, o astfel de functie nu poate utiliza pseudo-variabila $this.
În exemplul anterior, în cadrul clasei B este redefinita functia exemplu( ). Asadar, definitia "originala" (din cadrul clasei A) nu poate fi accesata în interiorul clasei B decât daca ne referim la ea explicit prin intermediul operatorului ::.


Accesarea clasei de baza

În exemplul anterior am utilizat o functie a clasei de baza. În locul utilizarii denumirii clasei de baza poate fi folosita denumirea speciala parent care este o referinta la clasa de baza definita în cadrul constructiei extends. Folosirea denumirii speciale este utila în cazul în care ierarhia de clase se modifica. În acest caz este suficienta o singura modificare în cadrul constructiei extends, fara a mai fi necesare modificari în interiorul clasei derivate. Asadar, definitia clasei B poate fi rescrisa astfel:


Cod:

class B extends A
{
function exemplu()
{
echo "Functia redefinita
\n";
parent :: exemplu();
}
}
?>
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:45 am

Serializarea obiectelor

Prin serializare se întelege crearea unui sir de octeti care contin reprezentarea interna (binara) a variabilei respective. Asadar, serializarea permite "salvarea" valorilor unei variabile. Daca este serializat un obiect sunt salvate doar proprietatile acestuia (variabilele membre) si numele clasei din care face parte, nu si metodele, deoarece functiile nu reprezinta valori.
Pentru a serializa un obiect este utilizata functia serialize( ) care returneaza sirul de octeti care contine reprezentarea binara.
Pentru a deserializa un obiect se foloseste functia pereche unserialize( ).
Pentru ca o astfel de operatie sa functioneze corect este necesara definirea clasei din care face parte obiectul respectiv. Functia returneaza valoarea variabilei serializate. În exemplul urmator aveti prezentat modul în care poate fi serializat si deserializat un obiect. Sirul de octeti obtinut în urma serializarii va fi scris într-un fisier si va fi citit din fisierul respectiv pentru efectuarea deserializarii. De obicei serializarea si deserializarea sunt realizate în documente php diferite deoarece aeste operatii nu au aproape nici o utilitate daca sunt folosite în cadrul aceluiasi document. Primul document în care se realizeaza serializarea trebuie sa contina o secventa asemanatoare cu urmatoarea:


Cod:

class A
{
var $msg = "Salutare lume";
function scrie()
{
echo $this -> msg;
}
}

$a = new A;
$s = serialize ($a);
// salvarea sirului intr-un fisier
$fp = fopen ("fisier", "w");
fputs ($fp, $s);
fclose ($fp);
?>


Pentru deserializare al doilea document va contine urmatoarea secventa:


Cod:

class A
{
var $msg = "Salutare lume";
function scrie()
{
echo $this -> msg;
}
}

// citirea sirului din fisier
$s = implode ("", @file ("fisier"));
$a = unserialize ($s);
// dupa deserializare obiectul poate fi folosit
$a -> show_one();
?>


Referintele pot fi utilizate pentru a accesa continutul unei variabile folosind mai multe nume. Spre deosebire de limbajul C, în PHP referintele nu sunt pointeri, ci alias-uri într-o tabela de simboluri. În PHP denumirile variabilelor si continutul acestora nu sunt unul si acelasi lucru. Asadar este posibil ca acelasi continut sa aiba denumiri diferite.


Utilizarea referintelor

Referintele PHP permit unor variabile cu denumiri diferite sa corespunda unui acelasi continut. Cu alte cuvinte, instructiunea

$a = &$b

are ca efect faptul ca $a si $b refera aceeasi variabila. În aceasta situatie $a si $b<;/em> au acelasi statut. Nu se poate spune ca $a refera $b sau invers. O alta posibilitate de utilizare a referintelor este transmiterea prin referinta a parametrilor unei functii. Efectul unei astfel de transmisii este crearea unei variabile locale care refera spre acelasi continut ca variabila din contextul apelant. Sa luam în considerare urmatorul exemplu:


Cod:

function inc(&$var)
{
$var++;
}

$a = 5;
inc($a);
?>


Initial valoarea variabilei $a este 5. Dupa apel variabila locala $var si variabila din contextul apelant $a indica spre acelasi continut. Valoarea pastrata în locatia de memorie respectiva este incrementata (devine 6) prin intermediul instructiunii $var++;.
Datorita faptului ca cele doua variabile au acelasi continut, valoarea variabilei $a va fi 6 dupa executarea functiei.
Un parametru transmis prin referinta poate fi:
- o variabila;
- o instructiune new;
- o referinta returnata de o functie.
Daca unei astfel de functii i se transmite ca parametru un alt tip de expresie rezultatul este nedefinit. Asadar, pentru o functie care are un parametru transmis prin referinta nu se poate folosi o constanta în momentul apelului. De exemplu, pentru functia inc( ) prezentata anterior nu este permis un apel de forma inc(5).


Referinte globale

În momentul declararii unei variabile globale (printr-o instructiune de tipul global $var) se creeaza de fapt o referinta spre o variabila globala. Cu alte cuvinte, aceasta instructiune este echivalenta cu $var = &$GLOBALS ["var"];.


Referinta $this

În cadrul unei metode a unui obiect $this este întotdeauna o referinta spre obiectul care utilizeaza functia (obiectul curent).

PHP 10

Crearea imaginilor thumbnails

Acest tutorial va va învata cum sa creati thumbnail-uri ale unor imagini mai mari ca dimensiune. Thumbnail-urile sunt niste imagini în miniatura de o rezolutie mai mica. Odata apasat un thumbnail vom deschide poza originala. Sa vedem în continuare cum vom face acest lucru posibil. În primul rând avem nevoie de doua foldere: unul pentru imaginile originale, si îl vom denumi pictures si unul pentru thumnail-uri pe care îl vom denumi thumbnails. Ceea ce este foarte important este ca în aceste doua foldere nu trebuie sa se gaseasca decât imagini de tip JPG altfel vom întâmpina erori. Este evident ca putem adapta scriptul pentru orice format de imagine, GIF sau PNG însa scopul principal al acestui tutorial este acela de a va face sa întelegeti care sunt pasii pe care trebuie sa îi urmati când faceti un asemenea script.
PHP-ul pe care îl rulati trebuie sa aiba activata libraria GD2 pentru a rula acest script, altfel veti întâmpina o eroare prin care va va fi adus la cunostinta ca functia pentru imagini nu poate fi gasita. Daca libraria GD2 nu este activa o puteti activa în felul urmator în mediul WINDOWS: adaugati liniile urmatoare în php.ini:

extension=php_gd2.dll

Vom deschide directorul pictures si thumbnails si vom citi numele fiecarui fisier care exista în aceste directoare si le vom memora în vectorul $pictures si $thumbnails


Cod:

$open_pictures = opendir("pictures");
while($file = readdir($open_pictures))
{
if(substr($file, 0, 1) != '.')
{
$pictures[] = $file;
}
}
closedir($open_pictures);

$open_thumbnails = opendir("thumbnails");
while($file = readdir($open_thumbnails))
{
if(substr($file, 0, 1) != '.')
{
$thumbnails[] = $file;
}
else
{
$thumbnails = array();
}
}
closedir($open_thumbnails);
?>


Vom retine apoi în doua variabile de tip vector numele pozelor care se afla în folderul pictures dar nu se afla în folderul thumbnails, cât si pozele care se afla în folderul thumbnails dar nu se afla în folderul pictures. Astfel pentru fiecare poza care exista în folderul pictures dar nu se afla si în folderul thumbnails îi vom crea o poza în miniatura cu dimensiunile stabilite prin variabila $max_width si $max_width bineânteles pastrând proportiile pozei originale calculate cu ajutorul variabilei $ratio, astfel încât daca lungimea pozei originale este mai mare decât înaltimea, atunci $ratio va lua valoarea lungimei maxime setate în variabila $max_width împartita la lungimea pozei originale, iar în caz contrar $ratio va lua valoarea înaltimii maxime setate pentru thumbnail împartite la înaltimea pozei originale.
Rezolutia pozei originale o aflam cu ajutorul functiei getimagesize() care returneaza un vector cu atributele pozei.
Vom afla în continuare noile dimensiuni ale pozei în miniatura calculate în variabilele $thumbnail_width si $thumbnail_height prin îmultirea dimensiunilor pozei originale cu $ratio.


Cod:

$diff_pic = array_diff($pictures, $thumbnails);
$diff_tumb = array_diff($thumbnails, $pictures);
foreach($diff_pic as $key => $value)
{
$image_name = 'pictures/'.$value;
$image_attribs = getimagesize($image_name);
$max_width = 100;
$max_height = 100;
$ratio = ($image_attribs[0] > $image_attribs[1]) ? $max_width / $image_attribs[0] : $max_height / $image_attribs[1];
$thumbnail_width = $image_attribs[0] * $ratio;
$thumbnail_height = $image_attribs[1] * $ratio;
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:45 am

În continuare vom crea acele thumbnail-uri ale pozelor prin aplicarea functiilor PHP pentru imagini. Pentru început vom returna o imagine din poza originala cu ajutorul functiei imagecreatefromjpeg() dupa care vom crea o imagine neagra cu dimensiunile calculate mai sus pentru thumbnail.
Numele pozei în miniatura va fi acelasi cu numele pozei originale numai ca o vom salva în alt director. Calea catre thumbnail o vom tine într-o variabila $thumbnail_name, apoi vom copia imaginea originala peste imaginea thumbnail pastrând proportiile. Vom crea imaginea jpg în calea specificata în variabila $thumbnail_name cu ajutorul functiei imagejpeg().


Cod:

$image = imagecreatefromjpeg($image_name);
$image_new = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imageantialias($image_new, true);
$thumbnail_name = 'thumbnails/'.$value;
imagecopyresampled($image_new, $image, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $image_attribs[0], $image_attribs[1]);
imagejpeg($image_new, $thumbnail_name);
imagedestroy($image);
}
?>


Este posibil ca în directorul thumbnails sa se afle imagini ale pozelor care nu se mai afla în directorul pictures, acestea nu sunt necesare si le vom sterge cu ajutorul functiei unlink().
Va amintiti ca mai sus am aflat care sunt pozele care se afla în directorul thumbnails dar nu se afla în directorul pictures cu ajutorul functiei array_diff() care face diferenta dintre valorile primului vector analizat si cel de-al doilea vector.


Cod:

foreach($diff_tumb as $key => $value)
{
unlink("thumbnails/".$value);
}
?>


În acest moment avem create thumbnail-urile imaginilor originale si le vom afisa în pagina încadrate într-un tabel cu $modulo celule, cu link catre pozele originale. Mai jos aveti întreg codul sursa pentru crearea imaginilor thumbnail si afisarea acestora în pagina.


Cod:





Thumbnails



$open_pictures = opendir("pictures");
while($file = readdir($open_pictures))
{
if(substr($file, 0, 1) != '.')
{
$pictures[] = $file;
}
}
closedir($open_pictures);

$open_thumbnails = opendir("thumbnails");
while($file = readdir($open_thumbnails))
{
if(substr($file, 0, 1) != '.')
{
$thumbnails[] = $file;
}
else
{
$thumbnails = array();
}
}
closedir($open_thumbnails);

$diff_pic = array_diff($pictures, $thumbnails);
$diff_tumb = array_diff($thumbnails, $pictures);
foreach($diff_pic as $key => $value)
{
$image_name = 'pictures/'.$value;
$image_attribs = getimagesize($image_name);
$max_width = 100;
$max_height = 100;
$ratio = ($image_attribs[0] > $image_attribs[1]) ? $max_width / $image_attribs[0] : $max_height / $image_attribs[1];
$thumbnail_width = $image_attribs[0] * $ratio;
$thumbnail_height = $image_attribs[1] * $ratio;
$image = imagecreatefromjpeg($image_name);
$image_new = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imageantialias($image_new, true);
$thumbnail_name = 'thumbnails/'.$value;
imagecopyresampled($image_new, $image, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $image_attribs[0], $image_attribs[1]);
imagejpeg($image_new, $thumbnail_name);
imagedestroy($image);
}
foreach($diff_tumb as $key => $value)
{
unlink("thumbnails/".$value);
}
$open_thumbnails = opendir("thumbnails");
$l = 0;
$modulo = 4;

echo '';
while($file = readdir($open_thumbnails))
{
if(substr($file, 0, 1) != '.')
{
if($l % $modulo == 0)
{
echo '';
echo '';
}
if($l % $modulo == $modulo - 1)
{
echo '';
}
$l++;
$unfinished = $l % $modulo;
}
}
closedir($open_thumbnails);

if($unfinished != 0)
{
for($k = $unfinished; $k < $modulo; $k++)
{
echo '';
}
echo '';
}
echo '
';
echo 'thumbnail';
echo '
 
';
?>



PHP 11

Autentificarea în paginile restrictionate si câteva informatii despre cookie, uploadul fisierelor si includerea lor în pagini, precum si informatii despre starea conexiunii.

Dupa cum probabil stiti, anumite site-uri au accesul restrictionat si continutul lor poate fi accesat numai de catre anumite persoane autorizate. Una dintre variantele prin care poate fi verificat faptul daca un anumit utilizator are dreptul de a accesa un anumit site este cererea introducerii unui nume de utilizator si a unei parole în momentul în care persoana respectiva încearca sa acceseze aceste informatii. În momentul acceasarii paginii web este trimis un mesaj care indica faptul ca autentificarea este necesara. Programul de navigare va afisa o caseta de dialog care permite introducerea unui nume de utilizator si a unei parole. Dupa introducerea informatiilor necesare va fi accesata din nou pagina web dar, de aceasta data, variabilele predefinite PHP_AUTH_USER, PHP_AUTH_PW si PHP_AUTH_TYPE vor contine numele de utilizator, parola, respectiv tipul autentificarii. Pentru a trimite mesajul care cere autentificarea este utilizata functia header() . Nu este posibila decât autentificarea de tip "Basic". Un exemplu în care este prezentata o autentificare înaintea accesarii informatiilor este prezentat în continuare:


Cod:

if (!isset($_SERVER['PHP_AUTH_USER']))
{
header ('WWW-Authenticate: Basic realm="php4"');
header ('HTTP/1.0 401 Unauthorized');
echo 'Pentru accesarea continutului este necesara o autentificare!';
exit;
}
else
{
echo "";
echo "Autentificare";
echo "";
echo "

Salut {$_SERVER['PHP_AUTH_USER']}!

";
echo "

Parola introdusa este {$_SERVER['PHP_AUTH_PW']}.

";
echo "";
}
?>


Rezultatul codului de mai sus îl puteti vedea dând clik aici.

Pentru o compatibilitate cât mai mare, cuvântul Basic trebuie scris cu majuscula, valoarea pentru realm trebuie sa fie cuprinsa între ghilimele (nu între apostrofuri), iar între HTTP/1.0 si 401 trebuie sa existe exact un spatiu. În acest exemplu, numele de utilizator si parola sunt afisate. În practica, se va verifica validitatea lor, de obicei printr-o interogare a unei baze de date. În situatia în care este apasat butonul Cancel, pagina web generata va contine un mesaj de avertizare.
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de R32 Vin Mar 27, 2009 10:45 am

Functia setcookie.

În PHP exista o functie speciala care poate fi folosita pentru crearea cookie-urilor si anume setcookie(). Functia defineste un cookie care va fi trimis împreuna cu celelalte headere HTTP. Ca si alte headere, cookies trebuie trimis înaintea oricarui caracter din script (aceasta deoarece exista o restrictie de protocol, nu se poate trimite continutul paginii si apoi headerul, headerele trebuiesc trimise primele, înaintea oricarui mesaj). Daca a fost trimis ceva la browser (chiar si un simplu spatiu blank) înainte de apelarea acestei functii, setcookie() va genera un mesaj de eroare de tipul FALSE. Daca setcookie() a putut genera cu succes cookie-ul, va returna TRUE. Aceasta nu indica daca userul a acceptat sau nu cookie, ci doar ca a fost generat si trimis cu succes.
Începând de la php4, puteti folosi functiile ob_start() la începutul scriptului si ob_end_flush() la sfârsitul scriptului pentru a se genera un buffer cu tot ce trebuie trimis la browser, si astfel la sfârsit se vor trimite toate odata, începând cu headerele si continuând cu restul paginii, indiferent daca în script ati trimis întâi text si apoi headere (folosind prima functie, buffer-ul se va genera pe masura ce primeste date, iar la sfârsit, când se cere închiderea buffer-ului prin apelarea celei de-a doua functii - ob_end_flush() - , headerele se vor trimite primele apoi restul buffer-ului).
O alta varianta este de a seta directiva output_buffering din php.ini (în fisierul de configurare al serverului).
Functia setcookie() are sase parametri, doar prezenta primului parametru fiind obligatorie. Sintaxa este:

setcookie(nume, valoare, expirare, cale, domeniu, securitate);

Parametru Descriere Exemplu
nume sir de caractere care reprezinta numele cookie-ului 'nume_cookie' va fi apelat ca $_COOKIE['nume_cookie']
valoare sir de caractere care reprezinta valoarea cookie-ului (informatia corespunzatoare), care va fi salvat pe calculatorul clientului (nu trimiteti date sensibile, gen parola) Presupunând ca numele este 'cookiename', valoarea va fi preluata prin $_COOKIE['cookiename']
expirare un numar întreg care indica momentul de timp în care cookie-ul nu va mai putea fi utilizat. Valoarea este în format "Unix timestamp", adica se poate seta folosind functia time() plus numarul de secunde pâna când doriti sa expire, sau puteti folosi mktime(). time()+60*60*24*30 va seta cookie sa expire în 30 de zile. Daca nu e setat, cookie va expira la terminarea sesiunii curente (când se închide browserul)
cale sir de caractere care reprezinta o cale generica a fisierelor care pot accesa cooke-ul Daca este setata ca '/', cookie va fi accesibil pentru întreg domeniu. Daca este setat ca '/foo/', atunci cookie va fi accesibil doar pentru fisierele si scripturile din directorul /foo/ (de pe server) înclusiv toate sub-directoarele acelui director, cum ar fi /foo/bar/. Valoarea standard este setata ca directorul curent (directorul curent adica directorul în care exista scriptul care a setat acel cookie).
domeniu sir de caractere care reprezinta domeniul pe care trebuie stocate fisierele care pot accesa cookie-ul Pentru a face cookie disponibil pentru toate subdomeniile, de exemplu domeniu.com puteti seta astfel '.domeniu.com'. Punctul dinainte nu este neaparat necesar, dar îl face compatibil cu mai multe browsere. Setând ca www.example.com veti face cookie-ul disponibil doar pentru sub-domeniul www. Pentru alte detalii vedeti specificatiile de aici.
securitate numar întreg care, daca are valoarea 1 (TRUE), arata ca informatia poate fi transmisa doar folosindu-se o conexiune HTTPS securizata. Setarea de baza este 0 (FALSE) 0 sau 1

Daca unul dintre parametri este prezent, atunci toti parametrii anteriori trebuie sa fie prezenti. Daca unul dintre acestia nu este utilizat, se va folosi în pozitia respectiva fie sirul vid, fie valoarea 0. În continuare sunt prezentate câteva exemple de apeluri prin care sunt create cooke-uri:

- setcookie ("TestCookie", "PHP4");
- setcookie ("TestCookie", "Site", time()+3600);
// expira dupa o ora de la creare
- setcookie ("TestCookie", "Test", time()+3600, "/articole/", ".php4.as.ro",1);

Cu ajutorul functiei setcookie() este posibila si stergerea cookie-urilor. Urmatoarele exemple ilustreaza modul în care poate fi realizata aceasta operatie:

setcookie ("TestCookie", "", time()-3600);

sau

setcookie ("TestCookie", "", time()-3600, "/comenzi/", ".php4.as.ro", 1);

Se observa ca momentul expirarii este setat ca fiind anterior momentului executarii operatiei de stergere. Exista posibilitatea de a crea siruri de cookie-uri prin simpla introducere a parantezelor drepte în denumiri. Un exemplu de creare si utilizare a unor astfel de siruri este prezentat în continuare:


Cod:

setcookie ("cookie[three]", "cookiethree");
setcookie ("cookie[two]", "cookietwo");
setcookie ("cookie[one]", "cookieone");
if (isset ($cookie))
{
while (list($name,$value)=each($cookie))
{
echo "$name == $value
";
}
}
?>


Pentru a accesa cookie-urile stocate pe calculatorul unui vizitator al paginii Web, este disponibil vectorul $_COOKIE. Voi prezenta în continuare un exemplu cu ajutorul caruia se genereaza o pagina care contine denumirile si valorile tuturor cookie-urilor.


Cod:

foreach ($_COOKIE as $cheie=>$valoare)
{
echo "$cheie = $valoare
";
}
?>


Fisierele pot fi încarcate pe un server daca utilizatorul foloseste un program de navigare compatibil RFC-1867; pot fi utilizate ultimile versiuni ale celor mai cunoscute browsere. Este posibila încarcarea atât a fisierelor text, cât si a celor binare. Folosind autentificarea PHP si functiile de manipulare a fisierelor, avem controlul total asupra utilizatorilor care pot încarca fisiere si asupra operatiilor efectuate cu fisierul încarcat.


Formularul de încarcare (upload)

Pentru ca utilizatorul sa poata încarca un fisier, el trebuie sa aiba la dispozitie un formular care sa permita alegerea fisierului. Un astfel de formular poate fi creat, de exemplu, folosind limbajul HTML standard. În continuare este prezentat un document HTML care genereaza o pagina web care permite alegerea unui fisier si încarcarea sa pe un server.


Cod:



Incarcarea unui fisier pe server



Alegeti fisierul:










Butonul Browse... poate fi utilizat pentru alegerea unui fisier care urmeaza a fi încarcat. Este posibila specificarea fisierului precizând exact calea în caseta de text afisata. URL-ul care este folosit ca valoare pentru atributul action al marcajului trebuie sa reprezinte documentul php care va realiza încarcarea.


Operatia de încarcare (upload)

Asadar, formularul prin intermediul caruia este ales fisierul va fi prelucrat de catre un script PHP. Pentru a manipula fisierele poate fi utilizat tabloul $_FILES. Pentru script-ul care prelucreaza formularul prezentat anterior, informatiile referitoare la fisierul încarcat vor fi acceasate folosind variabila $_FILES['fisier'] care este tot un vector. Elementele acestui vector sunt prezentate în cele ce urmeaza:

- $_FILES['fisier'] ['name']
numele pe care îl are fisierul pe calculatorul utilizatorului;
- $_FILES['fisier'] ['tmp_name']
numele temporar pe care îl are fisierul pe server dupa încheierea procesului de încarcare;
- $_FILES['fisier'] ['type']
tipul fisierului în cazul în care programul de navigare furnizeaza aceasta informatie; un exemplu ar putea fi image/gif;
- $_FILES['fisier'] ['size']
dimensiunea fisierului, exprimata în bytes;
- $_FILES['fisier'] ['fisier'] ['error']
un cod de eroare generat în urma efectuarii încarcarii.

Fisierul va fi stocat pe server în directorul care contine fisierele temporare. O secventa de instructiuni PHP care poate fi folosita pentru a prelucra fisierul încarcat si a-l muta în directorul dorit este urmatoarea:


Cod:

if (is_uploaded_file($_FILES['fisier']['tmp_name'))
{
copy($_FILES['fisier']['tmp_name'],"/directorul/dorit");
}
else
{
echo "Eroare de transfer ".$_FILES['fisier']['name'];
}
?>


O varianta alternativa ar fi:


Cod:

move_uploaded_file($_FILES['fisier']['tmp_name'],"/directorul/dorit");
?>



Coduri de eroare

Începând cu versiunea PHP 4.2.0, în urma efectuarii unui transfer, sunt generate anumite coduri de eroare. Versiunea 4.3.0 introduce constante predefinite pentru fiecare dintre aceste coduri. În functie de codul de eroare generat în urma operatiei, trebuie realizate diferite actiuni. Codul de eroare poate fi accesat prin intermediul elementului ['error'] al vectorului care pastreaza informatiile despre fisier. Codurile de eroare care pot fi generate sunt urmatoarele:

- UPLOAD_ERR_OK (0)
nu a fost semnalata nici o eroare în timpul transferului; operatia de încarcare s-a încheiat cu succes;
- UPLOAD_ERR_INI (1)
dimensiunea fisierului este mai mare decât valoarea maxima permisa (aceasta valoare este specificata în momentul configurarii server-ului si poate fi schimbata modificând fisierul PHP.INI);
- UPLOAD_ERR_FORM_SIZE (2)
dimensiunea fisierului este mai mare decât valoarea maxima indicata de directiva MAX_FILE_SIZE care este specificata în formular; aceasta valoare este specificata prin intermediul unui câmp ascuns al carui text este MAX_FILE_SIZE;
- UPLOAD_ERR_PARTIAL (3)
fisierul a fost încarcat doar partial;
- UPLOAD_ERR_NO_FILE (4)
nu a fost încarcat nici un fisier.


Încarcarea mai multor fisiere

Exista posibilitatea de a încarca mai multe fisiere daca sunt folosite nume diferite pentru marcajul utilizat pentru afisarea casetei de text si a butonului folosite pentru alegerea fisierului. De asemenea, este posibil ca fisierele încarcate sa fie organizate automat într-un vector. Pentru aceasta, la numele folosite trebuie adaugate caracterele ' [ ] '. Un exemplu este prezentat în continuare:


Cod:


Alegeti fisierele:









?>


Sa presupunem ca am ales sa încarcam fisierele POZA1.GIF si DOC1.PDF. În acest caz, $_FILES['fisiere']['name'][0] va avea valoarea POZA1.GIF, în timp ce $_FILES['fisiere']['name'][1] va avea valoarea DOC1.PDF. Dimensiunile celor doua fisiere pot fi determinate folosind valorile $_FILES['fisiere']['size'][0], respectiv $_FILES['fisiere']['size'][1].
R32
R32

Posts : 88
Join date : 24/03/2009
Age : 38
Location : Suceava

http://www.ingeri.biz

Sus In jos

Despre PHP Empty Re: Despre PHP

Mesaj Scris de Continut sponsorizat


Continut sponsorizat


Sus In jos

Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum