PHP
De la Wikipedia, enciclopedia liberă
![]() |
Acest articol are nevoie de ajutorul dumneavoastră! Puteţi contribui la dezvoltarea şi îmbunătăţirea lui apăsând butonul "modifică pagina". |
PHP este un limbaj de programare destinat în primul rând Internetului, aducând dinamică unei pagini de web. Este unul din cele mai importante limbaje de programare web open-source şi server-side. Numele PHP provine din limba engleză şi este un acronim recursiv : Php: Hypertext Preprocessor. Exemple faimoase de utilizare a acestui limbaj sunt PhpBB (forum), PhpNuke(CMS), chiar şi MediaWiki, software-ul din spatele Wikipedia. Folosirea PHP poate fi văzută ca o alternativă gratuită la utilizarea unor limbaje comerciale cum sunt ASP de la Microsoft, ColdFusion de la Macromedia, sau chiar JSP de la Sun Microsystems.
PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca şi C-ul,Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinaţie a celor trei. Datorită modularităţii sale, poate fi folosit şi pentru a dezvolta aplicaţii de sine-stătătorare, spre exemplu îm combinaţie cu PHP-GTK, sau poate fi folosit ca Perl sau Python în linia de comandă. Probabil una din cele mai importante facilităţi ale limbajului este conlucrarea cu majoritatea bazelor de date relaţionale, de la MySQL şi până la Oracle, trecând prin MS Sql Server, PostgreSQL, sau DB2.
PHP poate rula pe majoritatea sistemelor de operare, de la UNIX, Linux, Windows, sau Mac OS X şi poate interacţiona cu majoritatea servereler web.
Cuprins |
[modifică] Istoric
A fost început ca o extensie a limbajului server-side Perl, şi apoi de o serie de CGI-uri compilate de către Rasmus Lerdorf, în 1994 pentru a genera un curiculumm vitae şi pentru a urmări numărul de vizitatori ai unui site. Apoi a evoluat în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev Suraski şi Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP în vara anului 1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat şi numele în acronimul recursiv de acum, până atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraski şi Gutmans au rescris baza limbajului, producând astfel şi Zend Engine în 1999. În mai 2000 a fost lansat PHP 4.0, având la bază Zend Engine 1.0. Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus şi o orientare obiect, mai pronunţată şi suportând mai multe caracteristici ale acestui tip de programare.
[modifică] Popularitate
PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraft în aprilie 2002, apărând pe 9 din cele 37 milioane de domenii cercetate în studiu. De asemenea, există un grafic al creşterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici :
- Familiaritatea : sintaxa limbajului este foarte uşoară combinând sintaxele unora din cele mai populare limbaje Perl sau C;
- Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;
- Eficienţa : PHP-ul se foloseşte de mecanisme de alocare a resurselor, foarte necesare unui mediu multiuser, aşa cum este Web-ul;
- Securitatea : PHP-ul pune la dispoziţia programatorului un set flexibil şi eficient de măsuri de siguranţă;
- Flexibilitatea : fiind apărut din necesitatea dezvoltării Web-ului, PHP a fost modularizat pentru a ţine pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, server, etc.;
- Gratuitatea : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licenţa open-source a determinat adaptarea rapidă PHP-ului la nevoile Web-ului, eficientizarea şi securizarea codului.
[modifică] Exemple de scripturi
Acesta este exemplul clasic Hello World! [1]:
<?php # comentariu pe o singura linie // comentariu pe o singura linie /* comentariu pe mai multe linii se pot comenta linii de cod php echo 'acesta este un echo comentat'; */ echo 'Hello World!'; ?>
Un alt exemplu, formular html, instructiuni de baza, conectare la o baza de date MySQL, prelucrare de date.
form.php
<html> <head> <title>Formular</title> </head> <body> <form method="post" action="procesare.php" name="formular1"> <input type=text name="rubrica_text"> <br> <input type="checkbox" name="bifat"> <br> <select name="selectie"> <?php //script introdus in sursa html for ($i=0;$i<=99;$i++){ //instructiunea repetitiva "for" = "pentru" if (($i % 2) == 0 ){ echo "<option value=" . $i . ">" . $i . "</option>\r\n"; } } //instructiunea conditionala "if"="daca" //concatenarea variabilei $i cu un text "intre ghilimele" ?> </select> <input type="submit" value="Trimite"> </form> </body> </html>
procesare.php
<?php //aici începe scriptul //afisarea datelor transmise: echo "< pre>"; print_r($HTTP_POST_VARS); //print_r()-functie PHP ce poate afisa tablouri echo "</ pre>"; //urmeaza conectarea la baza de date de tip Mysql $conexiune = mysql_connect('localhost','utilizator','parola') or die ("Nu ma pot conecta"); mysql_select_db ('baza_de_date') or die ("Nu pot deschide baza de date"); switch ($HTTP_POST_VARS["selectie"]) { case '0': mysql_query("INSERT INTO `tabel` (`text`) VALUES ('".$HTTP_POST_VARS['rubrica_text']."')"); //inserarea in baza de date a textului din rubrica de tip text din formularul html(form.php) break; case '2': if (isset($HTTP_POST_VARS['bifat'])){echo "Ai bifat casuta";}; //daca a fost transmisa variabila. break; case '4': echo "toate datele transmise sunt:<pre>"; var_dump($GLOBALS); //functie asemenanatoare cu print_r echo "</ pre>"; break; default: echo "ai ales un numar mai mare ca 4"; break; } mysql_close($conexiune); ?>
Note:
- PHP trateaza noile linii ca spatii libere, intr-o maniera de limbaj liber(excepţie facând intre ghilimele). O linie se termina cu punct şi virgula(;) cu mici excepţii. [2]
- Un punct (.) concatenează variabilele si datele de tip sir de caractere. [3]
- Variabilele fac diferenţă intre majuscule şi litere mici ele incep cu semnul dolar.
Exemplu:
$variabila = 'sir de caractere' . functie() . 'alt sir de caractere';
[4]
- Comentariile se fac cu // sau cu # dar e preferabil ca in C++ [5]
- Pentru scriere se poate folosi:
echo
, dar si:print
şiprintf
.
Iata un exemplu complet de Shout box Vom folosi un fisier de conectare la baza de date pe care il vom include in toate paginile:
conect.php
<? mysql_connect("localhost", "username", "password"); mysql_select_db("nume_baza_date"); ?>
pentru introducerea în pagina sitului a Shout box-ului vom folosi:
shout.php
<iframe marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 src="shoutbox/coment.php" width="100%" height="200">Shout box-ul nu este gasit... Ne pare rau!!!</iframe>
Observaţi că face trimitere către coment.php.
coment.php
<? include("conect.php"); $sqlc="select * from chat order by data desc limit 0,8"; $res=mysql_query($sqlc); ?> <head><Style type="text/css"> body,p,a {font-family:verdana,arial,sans-serif; font-size:10px; text-align:justify;} input {background:background-color; background-color:#ececec; font-family:verdana,arial,sans-serif; font-size:10px; } b {font-family:verdana,arial,sans-serif; font-size:11px;} a {font-family:Times new roman, times, sans-serif;font-size:12px; color:#336699;} body {margin:0 0 0 0} </style></head><body bgcolor="#88b6e7"> <center><hr><h2>Shout Box</h1><table cellpadding="0" cellspacing="0"><tr><td> <? while ($rowc=mysql_fetch_array($res)) { print '<b><img src="led.gif">'; if ($rowc['email']!='') { print '<a href="http://'.$rowc['email'].'">'; } print $rowc['nume'].'</a> : </b><p>'.$rowc['mesaj'].'</p>'; $ip=$_SERVER['REMOTE_ADDR']; $ipuser=$rowc['ip']; if ($ip==$ipuser) { print '<h6 align="right"><a href="erase.php?msg='.$rowc['data'].'">Sterge msg-</a></h6>'; } print '<hr width="80%">'; } ?> </td></tr><tr><td align="center" bgcolor="#cecece"> <form method="POST" name="chat" action="rw.php"> <input value="Nume:" onFocus="document.chat.nume.value=''" size=40 maxlength=40 name="nume"><br><input size=40 value="URL:" onFocus="document.chat.mail.value=''" maxlength=40 name="mail"><br><input value="Mesaj:" onFocus="document.chat.mesaj.value=''" size=40 maxlength=150 name="mesaj"><br><input type="submit" value=">>"><input type="reset" value="Reseteaza"><br><center><a href="archiv.php" target="_blank">::Arhiva</a> - <a href="smile.php">Smiles::</a></center> </form></td></tr></table></center> </body>
Observam trimiterea formularului de inserare mesaj catre:
rw.php
<? include("conect.php"); $nume=strip_tags($_POST['nume']); $mail=strip_tags($_POST['mail']); $mesaj=strip_tags($_POST['mesaj']); $mail=str_replace("E-mail:","",$mail); $mesaj=str_replace(":)",'<img src="smiles/happy.gif">',$mesaj); $mesaj=str_replace(":D",'<img src="smiles/haha.gif">',$mesaj); $mesaj=str_replace(":d",'<img src="smiles/haha.gif">',$mesaj); $mesaj=str_replace(":(",'<img src="smiles/sad.gif">',$mesaj); $mesaj=str_replace(";)",'<img src="smiles/eye.gif">',$mesaj); $mesaj=str_replace(":[",'<img src="smiles/mad.gif">',$mesaj); $mesaj=str_replace(":o",'<img src="smiles/o.gif">',$mesaj); $mesaj=str_replace(":O",'<img src="smiles/o.gif">',$mesaj); $mesaj=str_replace(":0",'<img src="smiles/o.gif">',$mesaj); $mesaj=str_replace(":]",'<img src="smiles/ok.gif">',$mesaj); $mesaj=str_replace(":p",'<img src="smiles/toung.gif">',$mesaj); $mesaj=str_replace(":P",'<img src="smiles/toung.gif">',$mesaj); $mesaj=str_replace(":thanx:",'<img src="smiles/thank.gif">',$mesaj); $mesaj=str_replace("thank",'<img src="smiles/thank.gif">',$mesaj); $mesaj=str_replace("putem_face_si_cenzura",'***********',$mesaj); if ($mail=="URL:") { $mail=""; } if ($mail=="url:") { $mail=""; } $ip=$_SERVER['REMOTE_ADDR']; $sql="insert into chat(email,nume,mesaj,ip) values('".$mail."','".$nume."','".$mesaj."','".$ip."')"; mysql_query($sql); header("location: coment.php"); ?>
Comanda header("location: coment.php"); ne face redirectionarea catre coment.php dupa ce au fost introduse datele in baza de date. Pentru comanda de stergere a unu mesaj avem nevoie de:
erase.php
<? include("conect.php"); $data=$_GET['msg']; $sqlcc="delete from chat where data='".$data."'"; mysql_query($sqlcc); header("location: coment.php"); ?>
Deoarece în fereastra principală sunt afişate doar ultimele 8 mesaje primite, avem nevoie şi de o arhivă:
archiv.php
<? include("conect.php"); $sqlc="select * from chat"; $res=mysql_query($sqlc); ?> <head><Style type="text/css"> body,p,input {font-family:verdana,arial,sans-serif; font-size:10px;} b {font-family:verdana,arial,sans-serif; font-size:11px;} a {font-family:Times new roman, times, sans-serif;font-size:12px; color:#336699;} </style><title>Shoutbox :: Arhiva</title></head><body> <center><h1><img src="led.gif">ShoutBox<img src="led.gif"></h1></center><hr width="95%"><hr width="97%"><hr> <? while ($rowc=mysql_fetch_array($res)) { print '<b><a href="mailto:'.$rowc['email'].'">'.$rowc['nume'].'</a> : </b><p>'.$rowc['mesaj'].'</p><h6 align="right">'.$rowc['data'].'</h6><hr>'; } ?>
În final putem face şi o pagină care să arate combinaţiile de caractere care afişeaza smile-urile:
smile.php
<head><Style type="text/css"> body,p,a,input {font-family:verdana,arial,sans-serif; font-size:10px;} b {font-family:verdana,arial,sans-serif; font-size:11px;} a {font-family:Times new roman, times, sans-serif;font-size:12px; color:#336699;} body {margin:0 0 0 0} </style></head><body><table width="100%" bgcolor="#c0c0c0" border="0" cellpadding="0" cellspacing="0"><tr><td><table width="100%" bgcolor="#cecece" border=1 frame="void" cellpadding="0" cellspacing="0"> <tr><td> :) </td><td align="center"> <img src="smiles/happy.gif"></td></tr><tr><td> ;) </td><td align="center"> <img src="smiles/eye.gif"></td></tr><tr><td> :D </td><td align="center"> <img src="smiles/haha.gif"></td></tr><tr><td> :( </td><td align="center"> <img src="smiles/sad.gif"></td></tr><tr><td> :p </td><td align="center"> <img src="smiles/toung.gif"></td></tr><tr><td> :[ </td><td align="center"> <img src="smiles/mad.gif"></td></tr><tr><td> :o </td><td align="center"> <img src="smiles/o.gif"></td></tr><tr><td> :] </td><td align="center"> <img src="smiles/ok.gif"></td></tr><tr><td> :thanx: </td><td align="center"> <img src="smiles/thank.gif"></td></tr></table> </td></tr><tr><td border=1><br> <center><a href="coment.php">::Back::</a></center><br> </td></tr></table></body>
De tot ce mai aveţi nevoie este o bază de date MySQL:
-- -- Table structure for table `chat` -- CREATE TABLE `chat` ( `email` text NOT NULL, `nume` text NOT NULL, `mesaj` text NOT NULL, `ip` varchar(15) NOT NULL default '', `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Acum nu aveţi decât să introduceţi scriptul include("shout.php"); în situl dumneavoastră şi să configuraţi conect.php după datele dumneavoastră.
[modifică] Legături externe
- Site-ul oficial al proiectului
- Un articol de prezentare a limbajului (în limba engleză)
- Portalul comunităţii de programatori PHP din România