Curs Php-mysql

1. Ghilimelele magice

Apar situatii cand dorim sa introducem ghilimele in interiorul unui textintr-o baza de date, dar SQL nu permite înglobarea unor ghilimele simple în interiorul valorii unui sir. Probleme similare pot aparea la introducerea unui text ce contine caractere speciale precum: \ + * ? ^ ( $ ), si care sunt trimise la un script PHP.
PHP include functii si facilitati pentru rezolvarea acestor situatii.
Fisierul de initializare PHP ("php.ini") contine optiuni de configurare care determina modul în care PHP controleaza datele provenite de la o sursa externa, cum sunt un formular HTML, un fisier text sau o baza de date.
Optiunea magic_quotes_gpc specifica modul în care PHP manipuleaza operatiile HTTP: GET si POST, precum si operatiile dintre PHP si MySQL sau cele cu variabile cookie. Daca optiunea este activata (ON), PHP prefixeaza automat ghilimelele simple, ghilimelele duble, caracterele backslash si caracterele nule (caracterele a caror valoare ASCII este 0) care apar într-o variabila HTTP, cu un caracter backslash (\).
Optiunea magic_quotes_runtime specifica modul în care PHP manipuleaza datele de origine externa. Daca aceasta optiune este activata, PHP ignora automat ghilimelele simple si duble care apar în datele externe, inclusiv datele din formularele HTML, din fisiere si baze de date.
Daca este activata optiunea magic_quotes_sybase, aceasta modifica efectul optiunilor magic_quotes_gpc si magic_quotes_runtime, astfel încât un caracter de tip ghilimele simple sa fie prefixat cu un alt caracter de tip ghilimele simple, nu cu un backslas.
Dar, în general, accesul la aceste comenzi din fisierul "php.ini" il are administratorul de sistem iar utilizatorii obisnuiti nu trebuie sa aiba posibilitatea de a aduce modificari în fisier. Astfel, pot fi folosite functii PHP care sa seteze aceste optiuni pe durata scriptului respectiv.
Functiile get_magic_quotes_gpc() si get_magic_quotes_runtime() returneaza fiecare valoarea optiunii PHP corespunzatoare setate in fisierul "php.ini". Mai mult, puteti folosi functia set_magic_quotes_runtime() pentru a specifica valoarea optiunii magic_quotes_runtime pentru restul duratei scriptului PHP curent.
De exemplu, pentru a dezactiva optiunea magic_quotes_runtime, invocati functia

Alternativ, pentru a activa aceasta optiune intr-un script, folositi functia

2. Conversia caracterelor speciale si anularea acesteia

PHP poate converti ghilimelele simple si duble dintr-un sir, folosind functia addslashes().
Daca PHP nu este configurat astfel încât sa converteasca aceste caractere din sir în mod automat, atunci trebuie sa executati manual aceasta modificare. Pur si simplu utilizati functia addslashes(), transferându-i ca argument sirul text. Aceasta adauga caracterul backslash "\" pentru conversia caracterelor de tip ghilimele simple, ghilimele duble, backslash si caractere nule

Aceasta conversie nu trebuie confundata cu o alta, si anume conversia de tip, care foloseste caracterul backslash (\).
Conversia mentionata în acest capitol consta din modificarea semnificatiei anumitor caractere, pentru a preveni o interpretare eronata a acestora de catre programele specializate, precum MySQL. Din acest motiv, toate conversiile mentionate în acest capitol fac referire la modificarea semnificatiei unor caractere, nu la conversiile de tip.

De exemplu, pentru a converti continutul sirului "$text" si a plasa rezultatul în variabila "$modificat", invocati functia dupa cum urmeaza:


Functia stripslashes() executa operatia complementara de anulare a conversiei, elimina caracterele backslash inserate.
Pentru a anula conversia sirului "$modificat" si a plasa rezultatul în variabila "$nemodificat", utilizati functia dupa cum urmeaza: O alta functi utila pentru conversia caracterelor speciale este quotemeta(), aceasta va insera un backslash înainte de fiecare aparitie a urmatoarelor caractere: . \ + * ? [ ^ ] ( $ ). Ca si addslashes(), functia quotemeta() se foloseste in mod similar, prelund ca argument sirul text.

3. Conversia textelor HTML

Când lucrati cu texte HTML, conversia executata de functia addslashes() nu este suficienta, deoarece HTML este sensibil si la alte caractere speciale decât cele convertite de functia addslashes().
In schimb puteti folosi functia htmlspecialchars().
Aceasta converteste caracterele la care HTML este sensibil. Functie este utila cand se doreste ca un anumit sir sa nu contina marcaje HTML, ceea ce poate fi important in modul de operare a unei aplicatii, cum ar fi un tabel HTML.
Functia are urmatoarea forma:

Unde "text" specifica sirul care contine textul ce urmeaza a fi convertit, iar argumentul optional "stil_ghilimele" specifica modul de conversie a ghilimelelor simple, respectiv duble. Valorile permise ale optiunii "stil_ghilimele" sunt: De exemplu, pentru a converti toate caracterele HTML speciale, inclusiv ambele tipuri de ghilimele, din sirul "$texthtml", utilizati functia dupa cum urmeaza: Functia htmlspecialchars() executa urmatoarele conversii:
Caracter Rezultatul conversiei
  & (ampersand)   &
  "(ghilimele duble)   " (numait când este specificată opţiunea ENT_COMPAT sau ENT_QUOTES)
  '(ghilimele simple)   ' (numai când este specificată opţiunea ENT_QUOTES)
  < (mai mic decât)   &lt;
  > (mai mare decât)   &gt;

O functie PHP conexa, htmlentities(), converteste toate caracterele cu echivalente în entitati HTML. Este acceptat setul de caractere ISO-8859-1
Si o alta functie utila pentru conversia textelor HTML este functia n12br(). Aceasta insereaza tag-ul <br /> anterior fiecarui caracter de tip linie noua care se gaseste in argumentul sau.

4. Conversia pentru adresele URL

Când doriti sa codificati in PHP date ca parte a unei adrese URL, puteti folosi functia urlencode().
Aceasta functie înlocuieste fiecare caracter non-alfanumeric (cu exceptia spatiilor) cu un simbol al procentului (%), urmat de doua cifre hexazecimale care contin valoarea ASCII a caracterului. Spatiile sunt codificate sub forma de simboluri ale adunarii (+).
O functie conexa, în speta rawurlencode(), executa o conversie similara; cu deosebirea ca înlocuieste spatiile cu %20, conform RFC 1738, standardul Internet pentru codificarea adreselor URL.
Functiile urldecode() si rawurldecode() executa operatii complementare. Aceste functii sunt utile la crearea adreselor URL care includ perechi 'nume-valoare'.
De exemplu, sa presupunem ca avem un script PHP care trebuie sa creeze o pagina HTML ce contine o hiperlegatura spre adresa URL a unui motor de cautare. Termenul de cautare trebuie transmis în forma codificata URL, pentru ca serverul Web si browserul sa nu se "impiedice" de caracterele speciale. Pentru a codifica datele pentru o adresa URL, puteti folosi o metoda ca in exemplul urmator:

Ca sa intelegeti mai bine aceste moduri de conversie, puteti studia amanuntit exemplul urmator:
<?php

// Variabila $a contine textul ca va fi convertit

$a = "abc 123 ' <br /> / < & > ( % ) * , $ . # ^ ! [ \ ] { @ } : ; = ?";

$b = addslashes($a);
$c = stripslashes($b);
$d = quotemeta($a);
$e = htmlentities($a);
$f = urlencode($a);

echo '<br /> Conversie addslashes() = '. $b;
echo '<br /> Anulare conversie addslashes() = '. $c;
echo '<br /> Conversie quotemeta($a) = '. $d;
echo '<br /> Conversie caractere HTML = '. $e;
echo '<br /> Conversie pt. adrese URL = '. $f;
?>
Datele de iesire ale exemplului sunt urmatoarele:
Conversie addslashes() = abc 123 \' / < & > ( % ) * , $ . # ^ ! [ \\ ] { @ } : ; = ?
Anulare conversie addslashes() = abc 123 ' / < & > ( % ) * , $ . # ^ ! [ \ ] { @ } : ; = ?
Conversie quotemeta($a) = abc 123 ' / < & > \( % \) \* , \$ \. # \^ ! \[ \\ \] { @ } : ; = \?
Conversie caractere HTML = abc 123 ' <br /> / < & > ( % ) * , $ . # ^ ! [ \ ] { @ } : ; = ?
Conversie pt. adrese URL = abc+123+%27+%3Cbr+%2F%3E+%2F+%3C+%26+%3E+%28+%25+%29+
%2A+%2C+%24+.+%23+%5E+%21+%5B+%5C+%5D+%7B+%40+%7D+%3A+%3B+%3D+%3F

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag defineste zona de click intr-o harta creata dintr-o imagine?
<map> <img> <area>
<img src="image.jpg" usemap="#map1">
<map name="map1">
  <area shape="rect" coords="9, 120, 56, 149" href="#">
  <area shape="rect" coords="100, 200, 156, 249" href="#">
</map>
Ce proprietate CSS indica ce sa se intample cand continutul unui element depaseste dimensiunile lui?
display overflow position
#id {
  overflow: auto;
}
Clic pe evenimentul care este declansat cand mouse-ul e deasupra unui obiect.
onclick onmouseover onmouseout
document.getElementById("id").onmouseover = function(){
  document.write("Sa ai Viata Buna");
}
Indicati variabila PHP ce contine datele adaugate in adresa URL, dupa caracterul "?".
$_SESSION $_GET $_POST
if(isset($_GET["id"])) {
  echo $_GET["id"];
}
Clic pe pronumele reflexiv care e potrivit in propozitia: "Marc is the boy ... won the prize".
who which whoever
Marc is the boy who won the prize.
- Marc e baiatul care a castigat premiul.
Clic pe pronumele reflexiv care e potrivit in propozitia: "Voy a ver al pintor de ... les hablé ayer".
que quien cuyo
Voy a ver al pintor de quien les hablé ayer.
- Ma duc sa vad pictorul despre care ti-am vorbit ieri.
Optiuni pentru utilizarea caracterelor speciale

Last accessed pages

  1. Creare si editare pagini HTML (81799)
  2. Gramatica limbii spaniole. Indrumator si prezentare generala (63755)
  3. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (259747)
  4. Lectia 205, Recapitulare 185 (24)
  5. Gerunziu (924)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (637)
  2. Conditional IF in Limba Engleza - Fraze Conditionale (552)
  3. Gramatica limbii engleze - Prezentare Generala (446)
  4. Exercitii engleza - English Tests and exercises - Grammar (383)
  5. Coduri pt culori (372)