Va rugam dezactivati programul ad block pentru a vizualiza pagina!

Rezultate pentru tag: mm




Proiecții ortogonale pe un plan

Proiecția unui punct pe un plan. Proiecția unui segment pe un plan. Lungimea proiecției unui segment pe un plan. Proiecția unei drepte pe un plan.

Teorema celor trei perpendiculare

Distanța de la un punct la o dreaptă în spațiu. Teorema celor trei perpendiculare. Enunțul și demonstrația teoremei celor trei perpendiculare. 

Propagarea luminii. Reflexia si refracţia.

Propagarea luminii în medii omogene: constanţa vitezei şi conceptul de rază de lumină. Legile reflexiei şi refracţiei. Reflexia totală: definiţie, aplicaţii.

Microscopul. Ochiul uman.

Exemple de instrumente optice cu sisteme centrate de lentile: microscopul (parametri, exemple) şi ochiul uman (componente, acomodarea).

Noţiuni de cinematică.

Introducem noţiunile şi mărimile de bază ale cinematicii. Discutăm ecuaţia de mişcare. Prezentăm definiţia şi proprietăţile vectorilor.

Modelul undei plane.

Unde mecanice: definiţie, mărimi caracteristice. Unde longitudinale şi transversale. Modelul undei plane.

Ecuaţia undei plane.

Deducerea ecuaţiei undei plane. Proprietăţile undei plane: periodicitatea, intensitatea.

Interferenţa undelor.

Interferenţa undelor mecanice. Unde staţionare. Formarea ventrelor si nodurilor.

Calorimetrie I.

Lucrul mecanic: definiţie, ecuaţii pentru varii procese. Căldura. Coeficienţi calorici: definţii, tipuri.

Motoare termice.

Randamentul maşinii termice. Motoarele termice Otto şi Diesel.

Entropia. Principiul II.

Entropia: definiţie, interpretare. Procese reversibile şi ireversibile. Principiul II al termodinamicii.

Legea Coulomb. Câmpul electric.

Sarcina electrică. Legea Coulomb a interacţiunii electrostatice. Câmpul electric, linii de câmp.

Tensiunea şi intensitatea.

Mecanismul de generare a curentului electric. Tensiunea electromotoare. Intensitatea curentului electric.

Rezistenţa. Legea Ohm.

Rezistenţa şi rezistivitatea electrica. Supraconductibilitatea. Legea Ohm pentru o porţiune şi pentru întregul circuit.

Legea Joule. Electroliza.

Energia electrică – legea Joule. Puterea electrică. Randamentul electric. Efectul chimic - electroliza.

Mărimile curentului alternativ.

Valorile momentane şi valorile efective ale mărimilor curentului alternativ: fluxul, tensiunea, intensitatea.

Proprietăţile funcţiilor sinusoidale.

Proprietăţile funcţiilor sinusoidale: suma şi viteza de variaţie momentană.

Rezonanţa circuitelor RLC.

Frecvenţa de rezonanţă. Factorul de calitate. Comportarea circuitelor serie şi paralel. Interpretarea energetică.

Puterea în curent alternativ.

Puterea momentană şi puterea medie. Interpretarea geometrică. Triunghiul puterilor: puterile activă, reactivă şi aparentă.

Oscilaţii electromagnetice.

Circuitul oscilant RLC. Oscilaţii electromagnetice libere, amortizate, forţate. Interpretarea energetică.

Circuitul oscilant deschis. Antene.

Circuitul oscilant deschis. Antene dipol de emisie şi recepţie. Clasificarea undelor electromagnetice.

Principiile Einstein. Transformările Lorentz.

Principiile Einstein ale relativităţii restrânse. Spaţiu-timpul în fizica relativistă. Transformările Lorentz. Relativitatea simultaneităţii.

Cinematica relativistă.

Sistemul de referinţă propriu. Contracţia lungimilor. Dilatarea duratelor.

Ipotezele Planck şi Einstein.

Ipoteza Planck: cuantele de energie. Ipoteza Einstein: fotonul. Explicarea efectului fotoelectric cu formula Einstein şi modelul corpuscular.

Efectul Compton.

Dispozitivul experimental. Calculul variaţiei lungimii de undă. Eşecul modelului ondulatoriu şi succesul modelului corpuscular.

Spectre atomice.

Spectre atomice de emisie şi absorbţie: definiţii, proprietăţi. Legea seriilor spectrale ale hidrogenului. Analiza spectrală.

Modelul atomic Bohr I.

Modelul atomic Bohr: condiţia de cuantificare, condiţia de echilibru. Cuantificarea razelor orbitelor.

Modelul atomic Bohr II.

Cuantificarea energiei. Numărul cuantic principal. Cuantificarea vitezei. Cuantificarea vitezei de rotaţie.

Interpretarea spectrelor hidrogenului.

Interpretarea legii seriilor spectrale ale atomului de hidrogen prin modelul Bohr. Calculul constantei Rydberg.

Aplicaţii: radiaţiile X.

Radiaţiile X de frânare şi caracteristice: producere şi proprietăţi. Interacţiunea cu substanţa. Aplicaţii.

Modele nucleare de structură.

Modele nucleare de structură: modelul picătură de lichid şi modelul în pături.

Energia de legătură. Stabilitatea nucleară.

Energia de legătură. Energia de legătură pe nucleon. Platoul de stabilitate. Procese de creştere a stabilităţii.

Fuziunea nucleară. TOKAMAK-ul.

Fuziunea nucleară. Reactorul TOKAMAK. Efectul de stricţiune al plasmei.

Acceleratoare liniare de particule.

Acceleratoare de particule. Acceleratorul liniar rezonant. Sincronismul.

Acceleratoare circulare de particule.

Acceleratoare circulare: ciclotronul şi sincrotronul. Radiaţia sincrotronică. Aplicaţii.

Legea generală a gazelor

Legea gazelor ideale. Legea lui Avogadro. Parametrii de stare ai gazelor. Ecuaţia lui van der Waals. Aplicaţie.

 

Concentraţia procentuală - aplicaţii

Soluții, dizolvare. Concentrație procentuală. Masă dizolvată, masa soluției. Aplicații.

Concentraţia molară - aplicaţii

Calculul concentraţiei molare a unei soluţii. Regula de trei simplă. Molaritate. Aplicaţii.

Echilibre chimice – aplicaţie

Viteza reacţiei directe, viteza reacţiei inverse. Starea de echilibru chimic. Constanta de echilibru. Aplicaţii. 

Transformări de fracții ordinare în fracții zecimale 1

Transformarea fracțiilor ordinare în fracții zecimale. Transformarea fracțiilor ordinare ai căror numitori au in descompunerea lor doar puteri cu baza 2 sau 5.

Mulţimi - noţiuni introductive

Noțiuni introductive privind mulțimile. Relația dintre un element și o mulțime (relația de apartenență). Reprezentarea mulțimilor: cu ajutorul diagramelor, prin enumerarea elementelor și prin enunțarea proprietăților caracteristice elementelor. Mulțimi finite. Mulțimi infinite. Mulțimea vidă. Relații între mulțimi. Submulțimi.

Proprietăţile divizibilităţii

Proprietățile divizibilității. Proprietăţi ale relaţiei de divizibilitate în mulțimea numerelor naturale N.

Numere prime. Numere compuse

Un număr prim este un număr natural care are exact doi divizori: numărul 1 și numărul în sine. Un număr compus este orice număr natural care are cel puțin 3 divizori. Algoritmul de verificare a numerelor prime.

Numere prime între ele

Se numesc numere prime între ele acele numere naturale, diferite de zero, care au c.m.m.d.c. = 1.

Modulul unui număr întreg

Noțiunea de modul. Valoarea absolută a unui număr întreg. Numere întregi opuse.

Fracţii

Noțiunea de fracție. Identificarea în limbajul cotidian sau în probleme a fracţiilor ordinare.

Aducerea fracţiilor la acelaşi numitor

Aflarea numitorului comun a două sau mai multe fracții. Aducerea fracțiilor la același numitor.

Intervale de numere reale

Noțiunea de interval. Intervale mărginite de numere reale, intervale nemărginite.  Interval deschis, interval închis. Legătura dintre intervale și modul.  Determinarea soluțiilor unor inecuații (în mulțimea numerelor reale) care au necunoscuta în modul.

Media aritmetică, media ponderată, media geometrică

Formulele pentru medie aritmetică, medie ponderată și medie geometrică a numerelor reale. Inegalitatea mediilor.

Rădăcina pătrată a unui număr rațional pozitiv

Noțiunea de radical. Rădăcina pătrată. Extragerea rădăcinii pătrate.

Rapoarte de numere reale reprezentate prin litere

Definirea unui raport algebric. Găsirea domeniului de definiție al unui raport. Amplificarea unui raport. Simplificarea unui raport. Operații cu rapoarte algebrice. Aducerea unei expresii algebrice la forma cea mai simplă.

Ecuații cu numere zecimale

Rezolvarea unor ecuații cu o necunoscută în care apar numere zecimale

Proporţii. Proporţii derivate

Proporţii. Aflarea unui termen necunoscut dintr-o proporţie. Proporţii derivate.

Mărimi direct proporţionale

Rezolvarea problemelor cu mărimi direct proporţioale. Regula de trei simplă pentru mărimi d.p.

Mărimi invers proporționale

Rezolvarea problemelor cu mărimi invers proporţionale. Regula de trei simplă pentru mărimi i.p.

Rapoarte și procente

Raportul a două numere, scara hărții, titlul unui aliaj. Procente, concentrația procentuală

Inecuaţii în mulțimea numerelor reale

Rezolvarea unor inecuații în mulțimea numerelor reale. Scrierea soluției sub formă de interval.

Sisteme de ecuaţii

Definirea unui sistem de ecuații cu două necunoscute. Soluția unui sistem de ecuații cu două necunoscute.

Ecuaţia de gradul al doilea

Forma unei ecuații de gradul doi. Deducerea formulelor care apar în rezolvarea unei ecuații de gradul al doilea.

Funcții: definiție, terminologie

Definirea noțiunii de funcție. Domeniul de definiție. Codomeniu. Lege de corespondență.

Mulțimea valorilor unei funcții

Imaginea unei funcției (sau mulțimea de valori a funcției). Legătura dintre imaginea unei funcții și codomeniul său.

Funcţii liniare

Funcție liniară. Trasarea graficului unei funcții liniare. Intersecția dintre graficul unei funcții și axele de coordonate.

Graficul unei funcții

Graficul funcției definite pe o mulțime finită. Reprezentarea geometrică a unui grafic funcție. Citirea unui grafic dat.

Unghiuri opuse la vârf

Două unghiuri se numesc unghiuri opuse la vârf dacă laturile lor sunt perechi de semidrepte opuse

Drepte perpendiculare. Distanţa de la un punct la o dreaptă

Drepte perpendiculare. Distanţa de la un punct la o dreaptă. Două drepte concurente care formează un unghi drept se numesc drepte perpendiculare.

Drepte paralele. Criterii de paralelism

Drepte paralele tăiate de o secantă. Unghiuri alterne interne. Unghiuri alterne externe. Unghiuri corespondente. Unghiuri interne de aceeaşi parte a secantei. Unghiuri externe de aceeaşi parte a secantei. Axioma lui Euclid. Distanța dintre două drepte paralele.

Drepte paralele intersectate de o secantă

Drepte paralele intersectate de o secantă. Unghiuri alterne interne. Unghiuri alterne externe. Unghiuri corespondente. Unghiuri interne de aceeaşi parte a secantei. Unghiuri externe de aceeaşi parte a secantei. 

Paralelogramul

Patrulaterul convex care are laturile opuse paralele se numește paralelogram. Proprietățile paralelogramului. Modalități de a demonstra că un patrulater este paralelogram.

Linia mijlocie în triunghi

Linie mijlocie în triunghi este un segment care uneşte mijloacele a două laturi ale triunghiului. Proprietățile liniei mijlocii.

Linia mijlocie în trapez

Segmentul care uneşte mijloacele laturilor neparalele ale unui trapez se numeşte linie mijlocie a trapezului.

Teorema înălţimii

Într-un triunghi dreptunghic, lungimea înălțimii corespunzătoare unghiului drept este medie proporțională între lungimile proiecțiilor catetelor pe ipotenuză. Teorema înălțimii și reciproca.

Teorema catetei

Într-un triunghi dreptunghic, lungimea unei catete este medie proporțională între lungimea proiecției sale pe ipotenuză şi lungimea ipotenuzei.Teorema catetei și reciproca.

Teorema lui Pitagora

Într-un triunghi dreptunghic, suma pătratelor lungimilor catetelor este egală cu pătratul lungimii ipotenuzei.

Reciproca teoremei lui Pitagora

Dacă într-un triunghi pătratul lungimii unei laturi este egal cu suma pătratelor lungimilor celorlalte două laturi atunci triunghiul este dreptunghic.

Teoreme de paralelism

Enunțarea unor teoreme importante de paralelism în spațiu. Modalități de a demonstra că două plane sunt paralele.

Dreaptă perpendiculară pe plan

Modalități de a demonstra că o dreaptă este perpendiculară pe un plan. Definiția unei drepte perpendiculare pe un plan.

Teoreme de perpendicularitate

Enunțarea unor teoreme de perpendicularitate. Cum arătăm că o dreaptă este perpendiculară pe un plan

Distanţe în spațiu. Perpendiculare și oblice.

Distanța dintre două puncte. Distanța dintre un punct și o dreaptă. Distanța dintre un punct și un plan. Distanța dintre două plane. Oblică la plan.

Corpuri geometrice asemenea

Corpuri asemenea. Definiția a două piramide asemenea. Raport de asemănare. Raportul ariilor a două suprafețe omoloage. Raportul volumelor a două piramide asemenea. 

Unghiuri în spațiu (Unghiul a două drepte în spațiu)

Unghiul format de două drepte paralele, concurente sau necoplanare. Determinarea măsurii unghiului format de două drepte necoplanare.

Unghiul unei drepte cu un plan

Unghiul dintre o dreaptă și un plan. Măsura unghiului format de o dreaptă cu un plan.

Mulțimea numerelor întregi. Axa numerelor

Mulțimea numerelor întregi. Numere întregi pozitive și negative. Reprezentarea pe axă a numerelor întregi.

Inecuații în mulțimea numerelor întregi

Rezolvarea inecuațiilor în mulțimea numerelor întregi. Inecuații cu modul

Mulțimea numerelor reale

Număr real. Mulțimea numerelor reale. Definiția unui număr irațional. Numere iraționale. Relația de incluziune dintre mulțimile N, Z, Q, R.

 

Ecuații în mulțimea numerelor reale

Rezolvarea ecuațiilor în mulțimea numerelor reale. Ecuații de gradul I. Ecuații simple de gradul al II-lea.

Produsul cartezian a două mulțimi

Elemente de organizare a datelor. Produs cartezian a două mulțimi. Sistem de axe ortogonale.

Mulțimea numerelor raționale

Numere raționale. Mulțimea numerelor raționale. Forme de scriere a unui număr rațional. Transformarea fracțiilor ordinare în fracții zecimale.

Ordonarea numerelor raționale

Compararea fracțiilor ordinare având același numitor sau numitori diferiți. Compararea a două fracții cu același semn sau cu semne diferite. Ordonarea numerelor raționale. Partea întreagă și partea fracționară a unui număr rațional.

Adunarea numerelor raționale

Adunarea numerelor raționale având același semn sau semne diferite.

Unghiuri - definiție și clasificare

Clasificarea unghiurilor. Unghi nul, unghi alungit, unghi ascuțit, unghi obtuz, unghi drept.

Căldura de combustie

Combustie. Tipuri de combustibili. Entalpia de combustie standard. Ardere completă şi ardere incompletă. Căldura de combustie. Puterea calorică. Condiţii normale pentru măsurarea puterii calorice. Putere calorică inferioară şi putere calorică superioară. 

Aplicaţii

Căldura specifică, c. Căldura specifică molară. Exemple de calcul pentru capitolul termochimie. 

Viteza de reacţie

Cinetica chimică – definiţie. Viteza medie de reacţie. Variaţia concentraţiei reactanţilor şi a produşilor de reacţie în timp. Exemplu de calcul pentru viteza medie de reacţie. Clasificarea reacţiilor chimice în funcţie de viteza de reacţie. Reacţii rapide. Reacţii cu viteză moderată. Reacţii lente. Măsurarea vitezei de reacţie. 

Aplicaţii

Timp de înjumătăţire. Unităţi de măsură pentru constanta de viteză. Exemple de calcul. 

Ecuații în mulțimea numerelor naturale

Exprimarea ecuațiilor cu ajutorul balanțelor. Rezolvarea principalelor tipuri de ecuații date în mulțimea numerelor naturale

Puteri cu exponent întreg

Puterea cu exponent întreg a unui număr real. Proprietățile puterilor cu exponent întreg. Inversul unui număr. Calculul puterilor cu exponent negativ.

Puteri cu exponent rațional

Puteri cu exponent rațional. Proprietățile puterilor cu exponent rațional. Scrierea puterilor cu exponent rațional cu ajutorul radicalilor. Ordonarea puterilor, compararea puterilor cu exponent rațional. 

Proprietățile logaritmilor

Propritățile logaritmilor: logaritmul produsului, logaritmul raportului, logaritmul unei puteri. Formula pentru schimbarea bazei logaritmului și alte formule logaritmice. Operații cu logaritmi.

Radicali de ordin n

Radicalul de ordin n dintr-un număr real pozitiv. Radicalul de ordin impar dintr-un număr negativ. Proprietățile radicalilor de ordin superior: produsul radicalilor, câtul a doi radicali, puterea unui radical, amplificarea, simplificarea radicalilor, compunerea radicalilor, scoaterea factorilor de sub radical și introducerea factorilor sub radical.

Compararea radicalilor

Aducerea radicalilor la același ordin. Compararea radicalilor de ordin n. Exerciții de ordonare a radicalilor de ordin superior.

Ecuații de gradul I

Forma generală e ecuațiilor de gradul I. Modalitatea teoretică de rezolvare a unei ecuații de gradul întâi. Interpretarea geometrică pentru ecuația de gradul I. Ecuații cu parametru real- exerciții.

Inecuații de gradul I

Forma generală a inecuațiilor de gradul I cu o necunoscută. Modalitatea teoretică de rezolvare a unei inecuații de gradul întâi. Ecuații cu modul, explicitarea modulului.

Sisteme de ecuații simetrice

Ecuații simetrice. Sisteme de ecuații simetrice. Algoritmul de rezolvare a sistemelor simetrice. Sistem simetric fundamental.

Funcția de gradul II

Funcția de gradul al doilea: definiția funcției de gradul II. Noțiuni introductive. Probleme care conduc la funcția de gradul doi. Exemple de funcții de gradul doi. Graficul unei funcții de gradul II.

Monotonia funcției de gradul II

Funcția de gradul II, forma canonică a funcției de gradul al doilea. Punct de minim, punct de maxim. Vârf parabolă- coordonate. Tabel de variație, monotonia funcției de gradul al doilea.

Rezolvarea ecuațiilor de gradul II în mulțimea numerelor complexe

Ecuații de gradul al doilea cu soluții complexe. Formarea ecuației de gradul doi când se cunosc soluțiile complexe. Descompunerea trinomului de gradul doi în factori liniari.

Numere complexe scrise sub formă algebrică

Forma algebrică a numerelor complexe. Partea reală a unui număr complex. Partea imaginară a unui număr complex. Definirea operațiilor algebrice cu numere complexe. Puterile numărului complex i. Numere complexe conjugate. Determinarea raportului dintre două numere complexe. Modulul unui număr complex. Conjugatul unui număr complex.

Forma trigonometrică a numerelor complexe

Numere complexe exprimate trigonometric. Coordonate polare în plan. Raza polară. Argumentul unui număr complex. Pentru a determina argumentul redus al unui număr complex vom ține cont de cadranul în care se află imaginea geometrică a numărului complex.

Ridicarea la putere cu exponent natural a fracțiilor zecimale

Ridicarea la putere a fracțiilor zecimale. Calculul unor puteri care au exponentul număr natural și baza număr zecimal. Reguli de calcul cu puteri.

Raționalizarea numitorului (2)

 Raționalizarea numitorului de forma   a plus-or-minus square root of b Expresii conjugate.

Reprezentarea geometrică a numerelor complexe

Imaginea geometrică a unui număr complex. Interpretarea geometrică a modulului unui număr complex. Interpretarea geometrică a sumei și a diferenței a două numere complexe. Interpretarea geometrică a numerelor complexe opuse și a numerelor complexe conjugate.

Noțiuni introductive de logică matematică

Noțiuni generale de logică matematică: propoziții, predicate, cuantificatori. Cuantificatorul existențial, cuantificatorul universal.Propoziție existențială, propoziție universală. Valoarea de adevăr a unei propoziții, mulțimea de adevăr a unui predicat. Propoziții adevărate, propoziții false. Principiile logicii matematice. Exerciții de stabilire a valorii de adevăr a unor propoziții.

Operații logice: negația

Negația propozițiilor, negația predicatelor. Complementara unei mulțimi. Negația propozițiilor care conțin cuantificatori. Valoarea de adevăr a negației unei propoziții. Mulțimea de adevăr a negației unui predicat.

Formule de calcul propozițional. Legile lui De Morgan

Formulă de calcul propozițional. Formule echivalente. Legile lui De Morgan. Valoarea de adevăr a unei formule propoziționale. Noțiunea de tautologie.

Metoda inducției matematice

Inducție matematică. Etapele principiului inducției matematice (etapa de verificare, etapa de demonstrație). Demonstrația unei propoziții matematice folosind principiul inducției matematice.

Simbolul Sigma și calculul unor sume

Scrierea unor sume restrâns cu ajutorul simbolului Sigma. Proprietățile simbolului Sigma. Calculul unor sume, demonstație prin inducție matematică. Metoda coeficienților nedeterminați.

Șiruri mărginite

Șir mărginit superior, șir mărginit inferior. Mărginirea șirurilor. Definiția șirurilor mărginite, exemple de șiruri mărginite.

Șiruri monotone

Șir crescător, șir descrescător, șir monoton. Definiția șirurilor monotone. Metode prin care se poate studia monotonia șirurilor. Exemple de șiruri monotone.

Progresii geometrice- noțiuni introductive

Noțiunea de progresie geometrică. Proprietățile progresiei geometrice. Exemple de progresii geometrice. 

Proprietățile progresiei geometrice

Termenul general al unei progresii geometrice în funcție de primul termen și de rația progresiei. Condiția ca n numere să fie în progresie geometrică. Suma primilor n termeni ai unei progresii geometrice.

Funcții mărginite

Imaginea unei funcții, noțiunea de funcție mărginită. Graficul unei funcții mărginite. Mărginirea unei funcții numerice.

Funcții pare, funcții impare

Funcție pară, funcție impară. Exemple de funcții pare, funcții impare. Graficul unei funcții pare. Graficul unei funcții impare. Proprietăți ale graficelor. Paritatea funcțiilor - exerciții.

Funcții periodice

Noțiunea de funcție periodică, noțiunea de perioadă, perioadă principală. Exemple de funcții periodice. Proprietăți ale funcțiilor periodice. Graficul unei funcții periodice - proprietate. Periodicitatea funcțiilor - exerciții. 

Monotonia funcțiilor numerice

Funcție crescătoare, funcție descrescătoare, funcție monotonă. Exemple de funcții monotone. Modalități de a studia monotonia funcțiilor. Intervale de monotonie. Exerciții de stabilire a monotoniei funcțiilor.

Compunerea funcțiilor

Compunerea funcțiilor. Proprietăți ale compunerii funcțiilor. Exerciții- funcții compuse.

Funcții numerice- noțiuni introductive

Noțiunea de funcție numerică, modalități de definire a unei funcții numerice și exemple de funcții. Graficul unei funcții. Reprezentarea grafică a unei funcții numerice.

Operații cu funcții numerice

Operații cu funcții: suma funcțiilor, produsul funcțiilor, câtul funcțiilor.

Semnul funcției de gradul I

Semnul funcției de gradul I. Exerciții de stabilire a semnului funcției de gradul I. Semnul unor expresii algebrice. Rezolvarea unor ecuații cu modul și inecuații cu modul, folosind semnul funcției de gradul I.

Relațiile lui Viete. Natura și semnele rădăcinilor ecuației de gradul II

Legătura dintre rădăcinile reale ale ecuației de gradul al doilea și coeficienții acesteia. Formarea ecuației de gradul al doilea când se cunosc rădăcinile. Natura rădăcinilor și semnele rădăcinilor ecuației de gradul al doilea.

Descompunerea trinomului de gradul II

Descompunerea unui trinom de gradul al doilea în factori liniari. Simplificarea unor expresii algebrice.

Adunarea vectorilor

Adunarea vectorilor: regula paralelogramului, regula triunghiului, regula poligonului. Proprietățile operației de adunare a vectorilor.

Înmulțirea vectorilor cu scalari

Înmulțirea unui vector cu un scalar. Proprietăți ale înmulțirii vectorilor cu scalari.

Descompunerea unui vector într-un reper cartezian

Noțiunea de versor. Descompunerea unui vector după doi vectori dați. Coordonatele unui vector. Înmulțirea unui vector cu un scalar. Suma vectorilor. Coliniaritatea vectorilor. Vectori egali. Formula de calcul pentru lungimea unui vector exprimat cu ajutorul versorilor. Modulul unui vector. Expresia analitică a unui vector.

Vectori în reper cartezian

Vectori exprimați cu ajutorul versorilor: coordonatele unui vector, modulul unui vector.

Vectori coliniari

Vectori coliniari, condiția de coliniaritate a doi vectori.

pH-ul soluțiilor apoase de acizi

Definiție pH. Produsul ionic al apei. pH și pOH. Calculul concentrației ionilor hidroniu pentru soluțiile de acizi tari și pentru soluțiile de acizi slabi. Calculul pH-ului pentru soluțiile de acizi tari și pentru soluțiile de acizi slabi. Exemplu de calcul pH pentru o soluție de acid tare. Exemplu de calcul pH pentru o soluție de acid slab. 

pH-ul soluțiilor apoase de baze

Calculul concentrației ionilor hidroxil din soluțiile de baze tari și din soluțiile de baze slabe. Calculul concentrației ionilor hidroniu din soluțiile de baze tari și din soluțiile de baze slabe. Calculul pH-ului soluțiilor de baze tari și al soluțiilor de baze slabe. Exemplu de calcul pH pentru o soluție de bază tare. Exemplu de calcul pH pentru o soluție de bază slabă (o soluție de amoniac). 

Hidroliza sărurilor

Sărurile - compuși ionici. Comportamentul anionilor în apă. Comportamentul cationilor în apă. Reacția de hidroliză. Săruri care formează soluții neutre (săruri provenite de la acizi tari și baze tari). Săruri care formează soluții acide (săruri provenite de la acizi tari și baze slabe). Săruri care formează soluții bazice (săruri provenite de la acizi slabi și baze tari). Săruri provenite de la acizi slabi și baze slabe. Hidroliza azotatului de sodiu (NaNO3), hidroliza clorurii de amoniu (NH4Cl), hidroliza sulfurii acide de sodiu (NaHS), hidroliza cianurii de amoniu (NH4CN). Aplicații; calculul pH-ului unei soluții de sare. 

Șiruri

Șiruri, notații, moduri de a defini un șir. Șir definit descriptiv, șir definit printr-o regulă de calcul, șir definit printr-o relație de recurență. Termenii unui șir. Rangul unui termen. Exemple de șiruri.

Progresii aritmetice- noțiuni introductive

Noțiunea de progresie aritmetică, rația progresiei, proprietățile progresiei aritmetice. Exemple de progresii aritmetice. 

Proprietățile progresiei aritmetice

Termenul general al unei progresii aritmetice în funcție de primul termen și de rație. Proprietățile progresiei aritmetice. Condiția ca n numere sa fie în progresie aritmetică. Suma primilor n termeni ai unei progresii aritmetice. 

Funcția de gradul I

Funcția de gradul întâi. Graficul funcției de gradul I, intersecția cu axele. Monotonia unei funcții de gradul I. Reprezentarea grafică a funcției de gradul I, funcții definite pe ramuri.

Cercul trigonometric

Cerc trigonometric (cerc unitate). Exprimarea unghiurilor uzuale în grade și radiani și scrierea coordonatelor punctelor de pe cerc corespunzătoare.

Operații cu numere complexe scrise sub formă algebrică

Adunarea numerelor complexe. Scăderea numerelor complexe. Modulul unui număr complex. Conjugatul unui număr complex. Înmulțirea numerelor complexe. Raportul a două numere complexe. Egalitatea a două numere complexe.

Funcția cosinus

Funcția cosinus. Proprietăți: semnul funcției cosinus, periodicitate, paritate, monotonie. Graficul funcției cosinus.

Funcția tangentă

Funcția tangentă. Proprietăți: semnul funcției tangentă, periodicitate, paritate, monotonie. Graficul funcției tangentă.

Funcția cotangentă

Funcția cotangentă. Proprietăți: semnul funcției cotangentă, periodicitate, paritate, monotonie. Graficul funcției cotangentă.

Reducerea la primul cadran

Calculul funcțiilor trigonometrice folosind formule de reducere la primul cadran. Trecerea din cadranul II în cadranul I. Trecerea din cadranul III în cadranul I. Trecerea din cadranul IV în cadranul I.

Teorema medianei

Aplicații ale produsului scalar: teorema medianei.

Funcția sinus

Funcția sinus. Proprietăți: semnul funcției sinus, periodicitate, paritate, monotonie. Graficul funcției sinus.

Operații cu permutări

Compunerea permutărilor de grad n.Proprietăți ale compunerii permutărilor de grad n. puterea unei permutări de grad n.Proprietăți ale transpozițiilor.

Noțiunea de permutare

Noțiunea de permutare, noțiunea de permutare de grad n, exemple, permutări de grad n particulare

Înmulțirea numerelor complexe scrise sub formă trigonometrică

Operații cu numere complexe exprimate trigonometric: înmulțirea numerelor complexe. Modulul produsului. Argumentul produsului.

Ridicarea la putere a numerelor complexe sub formă trigonometrică

Operații cu numere complexe exprimate trigonometric: ridicarea la putere a unui număr complex. Formula lui Moivre. Modulul puterii. Argumentul puterii.

Împărțirea numerelor complexe sub formă trigonometrică

Operații cu numere complexe exprimate trigonometric: împărțirea numerelor complexe. Modulul câtului. Argumentul câtului.

Proprietăți ale funcțiilor: injectivitate

Funcții injective, noțiunea de funcție injectivă. Modalități de a studia injectivitatea unei funcții. 

Proprietăți ale funcțiilor: surjectivitate

Funcții surjective, noțiunea de funcție surjectivă. Modalități de a studia surjectivitatea unei funcții.

Funcții inversabile

Funcții inverse. Inversa unei funcții. Condiția necesară și suficientă ca o funcție să fie inversabilă.

Funcția putere cu exponent natural

Funcția putere cu exponent natural și proprietățile acesteia: paritate, monotonie, semnul funcției. Graficul funcției putere cu exponent natural.

Funcția radical de ordin n

Funcția radical de ordin n și proprietățile acesteia. Graficul funcției radical de ordin n.

Funcția exponențială

Noțiunea de creștere exponențială, descreștere exponențială. Funcția exponențială și proprietățile acesteia. Grafice de funcții exponențiale.

Funcția logaritmică

Funcția logaritmică și proprietățile acesteia. Graficul funcției logaritmice.

Proprietăţi ale funcţiilor continue pe un interval: proprietatea lui Darboux

Funcţii cu proprietatea lui Darboux. Proprietăţi ale funcţiilor continue pe un interval. Teorema Cauchy-Weierstrass-Bolzano.

Aria unei suprafeţe plane

Aria unui subgrafic. Aria suprafeţelor plane cuprinse între două curbe.

Elemente HTML Layout

Site-urile web deseori afișează conținut în mai multe coloane (cum ar fi o revistă sau un ziar).
<header> - definește un antet pentru un document sau o secțiune
<nav> - definește un container pentru link-uri de navigație
<section> - definește o secțiune dintr-un document
<article> - definește un articol independent de sine stătător
<aside> - definește conținutul în afară de conținut (precum o bară laterală)
<footer> - definește un subsol pentru un document sau o secțiune
<detalii> - definește detalii suplimentare
<summary> - definește un titlu pentru elementul <details>
Tehnici Layout HTML. Există cinci moduri diferite de a crea multicolumn layouts: HTML tables (not recommended), CSS float property, CSS flexbox, CSS framework, CSS grid.
Elementul <table> nu a fost proiectat pentru a fi un instrument de aspect! Scopul elementului <tabel> este afișarea datelor tabulare. 
Dacă doriți să vă creați rapid un layout, puteți utiliza un framework cum ar fi Bootstrap.
Este ceva comun să faceți machete web (web layouts) întregi folosind proprietatea CSS float. 
Flexbox reprezintă un nou mod de dispunere în CSS3.
Modulul CSS Grid Layout oferă un sistem de dispunere bazat pe grilă, cu rânduri și coloane, ceea ce facilitează proiectarea paginilor web fără a fi nevoie să folosiți floats și poziționare.

Entități HTML

Caracterele rezervate în HTML trebuie înlocuite cu entități de caractere.
Caracterele care nu sunt prezente pe tastatură pot fi, de asemenea, înlocuite de entități.

Simboluri HTML

Multe simboluri matematice, tehnice și simboluri valutare nu sunt prezente pe o tastatură normală.
Pentru a adăuga astfel de simboluri la o pagină HTML, puteți utiliza un nume de entitate HTML.
Simboluri matematice acceptate de HTML: forall, part, exist, empty, nabla, isin, notin, ni, prod, sum.
Câteva litere grecești acceptate de HTML:Alpha, Beta, Gamma, Delta, Epsilon, Zeta.
Câteva entități acceptate de HTML:copy, euro, trade, larr, uarr, rarr, darr, clubs, diams.

Codare HTML (seturi de caractere)

Pentru a afișa corect o pagină HTML, un browser web trebuie să știe ce set de caractere să folosească.
ASCII a fost primul standard de codare a caracterelor (numit și set de caractere). 
ISO-8859-1 a fost setul de caractere implicit pentru HTML 4
ANSI (Windows-1252) a fost setul de caractere Windows original. 
UTF-8 (Unicode) acoperă aproape toate caracterele și simbolurile din lume.
Setul de caractere implicit pentru HTML5 este UTF-8.
Atributul HTML charset.
Pentru a afișa corect o pagină HTML, un browser web trebuie să cunoască setul de caractere utilizat în pagină.
Acest lucru este specificat în eticheta <meta>.

HTML Atribute Input

Atributul value specifică valoarea inițială pentru un câmp de intrare.
Atributul readonly specifică faptul că un câmp de intrare este doar citit (nu poate fi modificat).
Atributul disabled specifică faptul că un câmp de intrare este dezactivat.
Atributul size specifică dimensiunea (în caractere) pentru câmpul de intrare.
Atributul maxlength specifică lungimea maximă permisă pentru câmpul de intrare.
Restricțiile de intrare nu sunt ignorate, iar JavaScript oferă multe modalități de a adăuga input-uri ilegale.
HTML5 a adăugat următoarele atribute pentru <input>: autocomplete, autofocus, form, formaction, formenctype, formmethod,
formnovalidate, formtarget, height and width, list, min and max, multiple, pattern (regexp), placeholder, required, step
și următoarele atribute pentru <form>: autocomplete, novalidate.
Atributul formaction este utilizat cu type="submit" și type="image".
Atributul formenctype este utilizat cu type = "submit" și type = "image".
Atributul formmethod poate fi utilizat cu type = "submit" și type = "image".
Atributul step funcționează cu următoarele tipuri de intrare (input types): number, range, date, datetime-local, month, time și week.
Atributul pattern funcționează cu următoarele tipuri de intrare (input types): text, search, url, tel, email, și password.
Utilizați atributul global title pentru a descrie pattern-ul care să ajute utilizatorul.
Atributul placeholder funcționează cu următoarele tipuri de intrare (input types): text, search, url, tel, email, și password.
Atributul required funcționează cu următoarele tipuri de intrare (input types): text, search, url, tel, email, password, date pickers, number, checkbox, radio, și file.
Atributul multiple funcționează cu următoarele tipuri de intrare (input types): e-mail și file.
Atributele min și max funcționează cu următoarele tipuri de intrare (input types): number, range, date, datetime-local, month, time și week.
Atributul list se referă la un element <datalist> care conține opțiuni predefinite pentru un element <input>.
Atributele înălțime și lățime (height și width) specifică înălțimea și lățimea unui element <input type = "image">.
Atributul formnovalidate poate fi utilizat cu type="submit".
Atributul formtarget înlocuiește atributul țintă (target) al elementului <form>.
Atributul formtarget poate fi utilizat cu type = "submit" și type = "image".
Atributul novalidate este un atribut <form>.
Atributul autocomplete funcționează cu <form> și următoarele tipuri <input>:text, search, url, tel, email, password, datepickers, range, și color.

Introducere în HTML5

WHATWG a dorit să dezvolte HTML ca un „standard de viață”. Un nivel de viață este mereu actualizat și îmbunătățit. Se pot adăuga noi funcții, dar funcționalitățile vechi nu pot fi eliminate.
Declarația DOCTYPE pentru HTML5.
Declarația de codare a caracterelor (charset).
Codificarea implicită a caracterelor în HTML5 este UTF-8.
Elementesemantice noi precum: <header>, <footer>, <article> și <section>.
Atribute ale elementelor de formular noi, cum ar fi: number, date, time, calendar, și range.
Elemente grafice noi: <svg> și <canvas>.
Elemente multimedia noi: <audio> și <video>.
Cele mai interesante API-uri noi în HTML5 sunt: HTML Geolocation, HTML Drag and Drop, HTML Local Storage, HTML Application Cache, HTML Web Workers, HTML SSE.
Următoarele elemente HTML4 au fost eliminate în HTML5: <acronym>, <applet>, <basefont>, <big>, <center>, <dir>, <font>, <frame>, <frameset>, 
<noframes>, <strike>, <tt>.
Folosiți în schimb: <abbr>, <object>, CSS, <ul>, <s>, <del>.

Elemente noi în HTML5

HTML5 oferă elemente noi pentru o structură mai bună a documentelor:
<article> - Definește un articol dintr-un document
<aside> - Definește conținutul în afară de conținutul paginii
<bdi> - Izolează o parte a textului care ar putea fi formatată într-o direcție diferită de celălalt text din afara acestuia
<detalii> - Definește detalii suplimentare pe care utilizatorul le poate vizualiza sau ascunde
<dialog> - Definește o casetă de dialog sau o fereastră
<figcaption> - Definește o legendă pentru un element <figure>
<figure> - Definește conținut autonom
<footer> - Definește un subsol pentru un document sau secțiune
<header> - Definește un antet pentru un document sau secțiune
<principal> - Definește conținutul principal al unui document
<mark> - Definește text marcat / evidențiat
<meter> - Definește o masurare scalara intr-un interval cunoscut (un ecartament)
<nav> - Definește legăturile de navigare
<progress> - Reprezintă progresul unei sarcini
<rp> - Definește ce trebuie afișat în browserele care nu acceptă adnotările ruby
<rt> -  Definește o explicație / pronunție a caracterelor (pentru tipografia din Asia de Est)
<ruby> - Definește o adnotare rubin (pentru tipografia din Asia de Est)
<section> - Definește o secțiune dintr-un document
<summary> - Definește un titlu vizibil pentru un element <details>
<time> - Definește o data / ora
<wbr> - Definește o posibila pauza de linie
Elemente noi de formular (New Form Elements): 
<datalist> - Specifică o listă de opțiuni predefinite pentru controale de intrare
<output> - Definește rezultatul unui calcul
Tipuri noi de intrare (New Input Types): color,date,datetime,datetime,local,email,month,number,range,search,tel,time,url,week,autocomplete,autofocus,form,formaction,formenctype,formmethod,formnovalidate,formtarget,height and width,list,min and max,multiple,pattern (regexp),placeholder,required,step.
Grafică HTML5: 
<canvas> Desenați grafică din mers, prin scripturi (de obicei JavaScript)
<svg> Desenați grafică vectorială scalabilă
Elemente media noi:
<audio> - Definește conținutul sunetului
<embed> - Definește un container pentru o aplicație externă (non-HTML)
<source> - Definește mai multe resurse media pentru elemente media (<video> și <audio>)
<track> - Definește piesele text pentru elementele media (<video> și <audio>)
<video> - Defineste video sau film

Elemente semantice în HTML5

Semantica se referă la studiul sensurilor cuvintelor și frazelor dintr-o limbă.
Elemente semantice = elemente cu semnificație:
<article>, <aside>, <details>, <figcaption>, <figure>, <footer>, <header>, <main>, <mark>, <nav>, <section>, <summary>, <time>.
Exemple de elemente non-semantice<div> și <span> - Nu spune nimic despre conținutul său.
Exemple de elemente semantice<form><tabel> și <article> - definește clar conținutul său.
<article> Definește un articol
<aside> Definește conținutul în afară de conținutul paginii
<detalii> Definește detalii suplimentare pe care utilizatorul le poate vizualiza sau ascunde
<figcaption> Definește o legendă pentru un element <figure>
<figure> Specifică conținut independent, cum ar fi ilustrații, diagrame, fotografii, listări de coduri etc.
<footer> Definește un subsol pentru un document sau secțiune
<header> Specifică un antet pentru un document sau secțiune
<main> Specifică conținutul principal al unui document
<mark> Definește text marcat / evidențiat
<nav> Definește legăturile de navigare
<section> Definește o secțiune dintr-un document
<summary> Definește un titlu vizibil pentru un element <details>
<time> Definește o data / ora

CSS Sintaxă

Un set de reguli CSS constă dintr-un selector și un bloc de declarații.
Selectorul indică elementul HTML pe care doriți să-l creeze în stil.
Blocul de declarație conține una sau mai multe declarații separate prin punct și virgulă.
Fiecare declarație include un nume de proprietate CSS și o valoare, separate de două puncte.
O declarație CSS se încheie întotdeauna cu punct și virgulă, iar blocurile de declarație sunt înconjurate de acolade.
Comentariile sunt utilizate pentru a explica codul și pot fi utile atunci când editați codul sursă la o dată ulterioară.
Comentariile sunt ignorate de browsere.
Un comentariu CSS începe cu / * și se termină cu * /. De asemenea, comentariile pot cuprinde mai multe linii.

CSS Selectori

Selectoarele CSS sunt utilizate pentru a „găsi” (sau a selecta) elementele HTML pe care doriți să le modelați.
Putem împărți selectorii CSS în cinci categorii:
Selectoare simple (selectează elemente bazate pe nume, id, clasă)
Selectoare combinate (elemente selectate bazate pe o relație specifică între ele)
Selectori de clasă pseudo (elemente selectate bazate pe o anumită stare)
Selectoare pseudo-elemente (selectează și stilează o parte dintr-un element)
Selectori de atribute (elemente selectate bazate pe un atribut sau o valoare de atribut)
Această pagină va explica cei mai de bază selectori CSS.
Selectorul de elemente selectează elemente HTML pe baza numelui elementului.
Selectorul id utilizează atributul id al unui element HTML pentru a selecta un anumit element.
ID-ul unui element este unic într-o pagină, astfel încât selectorul de id este utilizat pentru a selecta un element unic!
Pentru a selecta un element cu un anumit id, scrieți un caracter hash (#), urmat de id-ul elementului.
Selectorul CSS class
Selectorul de clase (class) selectează elemente HTML cu un atribut de clasă specific.
Pentru a selecta elemente cu o anumită clasă, scrieți un caracter (.), urmat de numele clasei.
Puteți specifica, de asemenea, că numai anumite elemente HTML ar trebui să fie afectate de o clasă.
Elementele HTML se pot referi, de asemenea, la mai multe clase.
Elementul <p> va fi stilat în funcție de class = "center" și de class = "large".
Numai elementele <p> cu class = "center" vor fi aliniate la centru (center-aligned).
Un nume de clasă nu poate începe cu un număr!
Selectorul universal CSS
Selectorul universal (*) selectează toate elementele HTML din pagină.
Selectorul de grupare CSS
Selectorul de grupare selectează toate elementele HTML cu aceleași definiții de stil.
.class .intro - Selectează toate elementele cu class = "intro".
#id #firstname - Selectează elementul cu id = "firstname".
*  -  Selectează toate elementele.
element p -  Selectează toate elementele <p>.
element, element, .. div, p - Selectează toate elementele <div> și toate elementele <p>.

CSS Selectori de atribute

Selectori de atribute CSS.
Elemente de stil HTML cu atribute specifice.
Este posibil să stilăm elemente HTML care au atribute specifice sau valori de atribut.
Selector CSS [atribute].
Selectorul [atribute] este utilizat pentru a selecta elemente cu un atribut specificat.
Selectarea tuturor elementelor <a> cu atributul target.
Selector CSS [attribute="value"]
Selectorul [attribute="value"] este utilizat pentru a selecta elemente cu un atribut și o valoare specificate.
Selectarea tuturor elementelor  <a> cu atributul target = "_ blank".
Selector CSS [attribute~="value"]
Selectorul [attribute~="value"] este utilizat pentru a selecta elemente cu o valoare de atribut care conține un cuvânt specificat.
Selectarea tuturor elementelor cu un atribut title care conține o listă de cuvinte separată de spațiu, dintre care unul „flower”.
Selector CSS [attribute|="value"]
Selectorul [attribute|="value"] este utilizat pentru a selecta elementele cu atributul specificat începând cu valoarea specificată.
Selectarea tuturor elementelor cu o valoare de atribut class care începe cu "top".
Valoarea trebuie să fie un cuvânt întreg, fie singur, cum ar fi class = "top", sau urmat de o cratimă (-), cum ar fi class = "top-text"!
Selector CSS [attribute^="value"]
Selectorul [attribute^="value"] este utilizat pentru a selecta elemente a căror valoare de atribut începe cu o valoare specificată.
Selectarea tuturor elementelor cu o valoare de atribut class care începe cu "top".
Valoarea nu trebuie să fie un cuvânt întreg!
Selector CSS [attribute$="value"]
Selectorul [attribute$="value"] este utilizat pentru a selecta elementele a căror valoare de atribut se termină cu o valoare specificată.
Selectarea tuturor elementelor cu valoarea de atribut class care se încheie cu "test".
Valoarea nu trebuie să fie un cuvânt întreg!
Selector CSS [attribute*="value"]
Selectorul [attribute*="value"] este utilizat pentru a selecta elementele a căror valoare de atribut conține o valoare specificată.
Selectarea tuturor elementelor cu valoarea de atribut class care conține "te".
Valoarea nu trebuie să fie un cuvânt întreg!
Styling Forms
Selectoarele de atribute pot fi utile pentru stilul formularelor fără clasă sau ID.
Toți selectorii de atribute CSS
[attribute]    [target]  -  Selectează toate elementele cu un atribut țintă (target)
[attribute=value]    [target=_blank]  -  Selectează toate elementele cu target = "_ blank"
[attribute~=value]    [title~=flower]   - Selectează toate elementele cu un atribut titlu care conține cuvântul "flower"
[attribute|=value]    [lang|=en]  -  Selectează toate elementele cu o valoare a atributului lang care începe cu "en"
[attribute^=value]    a[href^="https"]  -  Selectează fiecare element <a> a cărui valoare a atributului href începe cu "https"
[attribute$=value]    a[href$=".pdf"]   -  Selectează fiecare element <a> a cărui valoare a atributului href se încheie cu ".pdf"
[attribute*=value]    a[href*="w3schools"]  -  Selectează fiecare element <a> a cărui valoare a atributului href conține substratul "w3schools"

CSS Unități

Unități CSS
CSS are mai multe unități diferite pentru exprimarea unei lungimi.
Multe proprietăți CSS iau valori „de lungime” (lenght), cum ar fi lățimea, marja, căptușirea, dimensiunea fontului etc (width, margin, padding, font-size).
Lungimea este un număr urmat de o unitate de lungime, cum ar fi 10px, 2em etc.
Un whitespace nu poate apărea între număr și unitate. Cu toate acestea, dacă valoarea este 0, unitatea poate fi omisă.
Pentru unele proprietăți CSS, lungimile negative sunt permise.
Există două tipuri de unități de lungime: absolută și relativă.
Lungimi absolute (Absolute Lengths)
Unitățile de lungime absolută sunt fixe și o lungime exprimată în oricare dintre acestea va apărea exact ca acea dimensiune.
Unitățile de lungime absolută nu sunt recomandate pentru utilizare pe ecran, deoarece dimensiunile ecranului diferă atât de mult. Cu toate acestea, pot fi utilizate dacă este cunoscut suportul de ieșire, cum ar fi pentru aspectul tipăririi.
cm  -   centimetri
mm -   millimetri
in  -  inci (1in = 96px = 2.54cm)
px *  -  pixeli (1px = 1/96th of 1in)
pt  -  puncte (1pt = 1/72 of 1in)
pc  -  picas (1pc = 12 pt)
* Pixelii (px) sunt în raport cu dispozitivul de vizualizare. Pentru dispozitivele cu valoare redusă, 1px este un pixel de dispozitiv (punct) al afișajului. Pentru imprimante și ecrane de înaltă rezoluție, 1px implică mai mulți pixeli de dispozitiv.
Lungimi relative (Relative Lengths)
Unitățile de lungime relativă specifică o lungime relativă la o altă proprietate lungime. Unitățile de lungime relativă scalează mai bine între diferite medii de redare.
em - În raport cu dimensiunea fontului elementului (2em înseamnă de 2 ori dimensiunea fontului curent)
ex - În raport cu înălțimea x a fontului curent (rar folosit)
ch - În raport cu lățimea "0" (zero)
rem - Relativ la dimensiunea fontului elementului rădăcină
vw - În raport cu 1% din lățimea afișajului *
vh - În raport cu 1% din înălțimea viewport *
vmin - În raport cu 1% din dimensiunea mai mică a portofoliului *
vmax - În raport cu 1% din dimensiunea mai mare a portofoliului
% - În raport cu elementul părinte
Unitățile em și rem sunt practice în crearea unui aspect scalabil perfect!
* Viewport = dimensiunea ferestrei browserului. Dacă viewport are 50cm lățime, 1vw = 0,5cm.
Asistență browser (Browser Support)
Numerele din tabel specifică prima versiune a browserului care acceptă integral unitatea de lungime.

SQL Date

SQL Lucrând cu datele
Datele SQL
Partea cea mai dificilă atunci când lucrați cu datele este să vă asigurați că formatul datei pe care încercați să îl inserați se potrivește cu formatul coloanei de date din baza de date.
Atâta timp cât datele dvs. conțin doar porțiunea de date (date portion), întrebările dvs. vor funcționa așa cum vă așteptați. Cu toate acestea, dacă este implicată o porție de timp (time portion), devine mai complicat.
SQL Date Data Types
MySQL vine cu următoarele tipuri de date pentru stocarea date/time în baza de date:
DATE - format YYYY-MM-DD
DATETIME - format: YYYY-MM-DD HH:MI:SS
TIMESTAMP - format: YYYY-MM-DD HH:MI:SS
YEAR - format YYYY or YY
SQL Server vine cu următoarele tipuri de date pentru stocarea date/time în baza de date:
DATE - format YYYY-MM-DD
DATETIME - format: YYYY-MM-DD HH:MI:SS
SMALLDATETIME - format: YYYY-MM-DD HH:MI:SS
TIMESTAMP - format: a unique number (un număr unic)
Tipurile de date (date types) sunt alese pentru o coloană atunci când creați un nou tabel în baza de date!
SQL Lucrul cu date
Puteți compara ușor două date dacă nu este implicată o componentă de timp!
Presupunem că avem tabelul „Comenzi” (Orders):
Acum dorim să selectăm înregistrările cu OrderDate "2008-11-11" din tabel.
Folosim următoarea declarație SELECT:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Dacă folosim aceeași declarație SELECT ca mai sus:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
nu vom obține niciun rezultat! Acest lucru se datorează faptului că interogarea caută doar date fără o porție de timp (time portion).
Pentru a vă menține întrebările simple și ușor de întreținut, nu permiteți componentele timpului în datele dvs.!

SQL Injection

Injecția SQL (SQL Injection)
Injecția SQL (SQL Injection) este o tehnică de injecție de cod (code injection) care ar putea distruge baza de date.
Injecția SQL (SQL Injection) este una dintre cele mai frecvente tehnici de hacking web.
Injecția SQL (SQL Injection) este plasarea codului rău intenționat în declarațiile SQL, prin introducerea paginii web.
SQL în paginile web
Injecția SQL (SQL Injection) are loc de obicei atunci când ceri utilizatorului o introducere, cum ar fi numele său de utilizator / userid (username/userid), iar în loc de nume / id (name/id), utilizatorul vă oferă o declarație SQL pe care o veți rula în mod neștiut pe baza de date.
Uitați-vă la următorul exemplu care creează o instrucțiune SELECT adăugând o variabilă (txtUserId) la un șir selectat. Variabila este preluată din intrarea utilizatorului (getRequestString):
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
Restul acestui capitol descrie pericolele potențiale ale utilizării intrării utilizatorului în declarațiile SQL.
Injecția SQL pe baza 1 = 1 este întotdeauna adevărată
Privește din nou exemplul de mai sus. Scopul inițial al codului a fost crearea unei instrucțiuni SQL pentru a selecta un utilizator, cu un id de utilizator (user id) dat.
Dacă nu există nimic care să împiedice un utilizator să introducă o intrare „greșită” (wrong), utilizatorul poate introduce unele intrări „inteligente” (smart) ca aceasta:
UserId: 105 SAU 1 = 1
Apoi, instrucțiunea SQL va arăta astfel:
SELECT * FROM Users WHERE UserId = 105 OR 1=1;
SQL-ul de mai sus este valid și va întoarce TOATE (ALL) rândurile din tabelul „Utilizatori” (Users), deoarece OR 1 = 1 este întotdeauna TRUE.
Exemplul de mai sus pare periculos? Ce se întâmplă dacă tabelul „Utilizatori” (Users) conține nume și parole?
Instrucțiunea SQL de mai sus este la fel ca aceasta:
SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;
Un hacker ar putea avea acces la toate numele de utilizator și parolele (user names și passwords) dintr-o bază de date, introducând pur și simplu 105 OR 1 = 1 în câmpul de introducere.
Injecția SQL Bazată pe "" = "" este întotdeauna adevărată
Iată un exemplu de autentificare a utilizatorului pe un site web:
Nume utilizator: John Doe
Parola: myPass
Exemplu:
uName = getRequestString("username");
uPass = getRequestString("userpassword");
sql = 'SELECT * FROM Users WHERE Name ="' + uName + '" AND Pass ="' + uPass + '"'
Rezultat:
SELECT * FROM Users WHERE Name ="John Doe" AND Pass ="myPass"
Un hacker ar putea avea acces la numele de utilizator și parolele (user names și passwords) dintr-o bază de date, introducând pur și simplu "OR" "=" în caseta de text a numelui de utilizator sau a parolei (user name sau password):
Nume utilizator: "sau" "="
Parola: "sau" "="
Codul de la server va crea o declarație SQL validă astfel:
Rezultat:
SELECT * FROM Users WHERE Name ="" or ""="" AND Pass ="" or ""=""
SQL de mai sus este valid și va returna toate rândurile din tabelul „Utilizatori” (Users), deoarece OR „„ = „„ este întotdeauna TRUE.
Injecție SQL bazată pe declarații SQL Batched (SQL Injection Based on Batched SQL Statements)
Majoritatea bazelor de date acceptă declarația SQL batched.
Un batch (lot) de instrucțiuni SQL este un grup de două sau mai multe instrucțiuni SQL, separate prin punct și virgulă.
Instrucțiunea SQL de mai jos va returna toate rândurile din tabelul „Utilizatori” (Users), apoi va șterge tabelul „Furnizori” (Suppliers).
SELECT * FROM Users; DROP TABLE Suppliers
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
User id: 105; DROP TABLE Suppliers
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;
Utilizați parametrii SQL pentru protecție
Pentru a proteja un site web de injecția SQL, puteți utiliza parametrii SQL.
Parametrii SQL sunt valori care sunt adăugate la o interogare SQL la momentul executării, într-o manieră controlată.
Exemplu Razor ASP.NET:
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = @0";
db.Execute(txtSQL,txtUserId);
Rețineți că parametrii sunt reprezentați în instrucțiunea SQL de către un marker@.
Motorul SQL verifică fiecare parametru pentru a se asigura că este corect pentru coloana sa și sunt tratate literal, și nu ca parte a SQL-ului care trebuie executat.
txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City) Values(@0,@1,@2)";
db.Execute(txtSQL,txtNam,txtAdd,txtCit);
Următoarele exemple arată cum să construiți interogări parametrizate în unele limbaje web comune.
SELECTAȚI DECLARAȚIA ÎN ASP.NET:
txtUserId = getRequestString("UserId");
sql = "SELECT * FROM Customers WHERE CustomerId = @0";
command = new SqlCommand(sql);
command.Parameters.AddWithValue("@0",txtUserID);
command.ExecuteReader();
INSERAȚI ÎN DECLARAȚIE ÎN ASP.NET:
txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City) Values(@0,@1,@2)";
command = new SqlCommand(txtSQL);
command.Parameters.AddWithValue("@0",txtNam);
command.Parameters.AddWithValue("@1",txtAdd);
command.Parameters.AddWithValue("@2",txtCit);
command.ExecuteNonQuery();
INSERAȚI ÎN DECLARAȚIE ÎN PHP:
$stmt = $dbh->prepare("INSERT INTO Customers (CustomerName,Address,City)
VALUES (:nam, :add, :cit)");
$stmt->bindParam(':nam', $txtNam);
$stmt->bindParam(':add', $txtAdd);
$stmt->bindParam(':cit', $txtCit);
$stmt->execute();

PHP Comentarii

Comentarii în PHP
Un comentariu în cod PHP este o linie care nu este executată ca parte a programului. Singurul său scop este să fie citit de cineva care se uită la cod.
Comentariile pot fi folosite pentru:
Lasă-i pe alții să înțeleagă codul tău
Reamintește-ți ce ai făcut - Majoritatea programatorilor s-au confruntat cu revenirea la propria muncă un an sau doi mai târziu și trebuie să-și dea seama ce au făcut. Comentariile îți pot aminti la ce te gândeai când ai scris codul
PHP acceptă mai multe moduri de a comenta:
Sintaxă pentru comentarii cu o singură linie (single-line comment):
<!DOCTYPE html>
<html>
<body>
<?php
//  Acesta este un comentariu cu o singură linie (single-line comment)
# Acesta este, de asemenea, un comentariu cu o singură linie (single-line comment)
?>
</body>
</html>
Sintaxa pentru comentarii cu mai multe linii (multiple-line comments):
<!DOCTYPE html>
<html>
<body>
<?php
/*
Acesta este un block de comentarii cu mai multe linii (multiple-lines comment block)
care se întinde pe multiple linii
*/
?>
</body>
</html>
Folosire comentarii pentru a lăsa părți din cod:
<!DOCTYPE html>
<html>
<body>
<?php
// De asemenea, puteți utiliza comentarii pentru a lăsa părți dintr-o linie de cod
$x = 5 /* + 15 */ + 5;
echo $x;
?>
</body>
</html>

PHP Variabile Globale - Superglobale

PHP Variabile Globale - Superglobalele
Superglobalele au fost introduse în PHP 4.1.0 și sunt variabile încorporate (built-in variables) care sunt întotdeauna disponibile în toate domeniile.
PHP Variabile Globale - Superglobalele
Unele variabile predefinite din PHP sunt „superglobale”, ceea ce înseamnă că sunt întotdeauna accesibile, indiferent de sfera de acțiune - și le puteți accesa din orice funcție, clasă sau fișier fără a fi nevoie să faceți nimic special.
Variabilele superglobale PHP sunt: $GLOBALS, $_SERVER, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION.
Capitolele următoare vor explica unele dintre superglobale, iar restul va fi explicat în capitolele ulterioare.
PHP Superglobal - $GLOBALS
Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.
PHP $GLOBALS
$GLOBALS este o variabilă super globală PHP, care este utilizată pentru a accesa variabile globale de oriunde în scriptul PHP (de asemenea, din funcții sau metode).
PHP stochează toate variabilele globale într-un tablou numit $GLOBALS [index]. Indicele conține numele variabilei.
Exemplul de mai jos arată cum se utilizează variabila super globală $GLOBALS:
<?php
$x = 75;
$y = 25;
 function addition() {
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
 addition();
echo $z;
?>
În exemplul de mai sus, deoarece z este o variabilă prezentă în matricea (array) $GLOBALS, este accesibilă și din afara funcției!
PHP Superglobal - $_SERVER
Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.
PHP $ _SERVER
$ _SERVER este o variabilă super globală PHP care conține informații despre antetele, căile și locațiile scriptului (headers, paths, and script locations).
Exemplul de mai jos arată cum să folosiți unele dintre elementele din $ _SERVER:
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
Următorul tabel prezintă cele mai importante elemente care pot intra în interiorul $ _SERVER:
$ _SERVER ['PHP_SELF'] Returnează numele de fișier al scriptului care se execută în prezent
$ _SERVER ['GATEWAY_INTERFACE'] Returnează versiunea Interfaței de Gateway comun (CGI) pe care serverul o folosește
$ _SERVER ['SERVER_ADDR'] Returnează adresa IP a serverului gazdă
$ _SERVER ['SERVER_NAME'] returnează numele serverului gazdă (cum ar fi www.w3schools.com)
$ _SERVER ['SERVER_SOFTWARE'] returnează șirul de identificare a serverului (cum ar fi Apache / 2.2.24)
$ _SERVER ['SERVER_PROTOCOL'] returnează numele și revizuirea protocolului informațional (cum ar fi HTTP / 1.1)
$ _SERVER ['REQUEST_METHOD'] returnează metoda de solicitare folosită pentru a accesa pagina (cum ar fi POST)
$ _SERVER ['REQUEST_TIME'] returnează intervalul de timp al începerii cererii (cum ar fi 1377687496)
$ _SERVER ['QUERY_STRING'] Returnează șirul de interogare dacă pagina este accesată printr-un șir de interogare
$ _SERVER ['HTTP_ACCEPT'] Returnează antetul Accept din cererea curentă
$ _SERVER ['HTTP_ACCEPT_CHARSET'] returnează antetul Accept_Charset din cererea curentă (cum ar fi utf-8, ISO-8859-1)
$ _SERVER ['HTTP_HOST'] Returnează antetul gazdei din cererea curentă
$ _SERVER ['HTTP_REFERER'] returnează adresa URL completă a paginii curente (nu este de încredere, deoarece nu toți agenții utilizator o acceptă)
$ _SERVER ['HTTPS'] Este scriptul cerut printr-un protocol HTTP sigur
$ _SERVER ['REMOTE_ADDR'] Returnează adresa IP de unde utilizatorul vizualizează pagina curentă
$ _SERVER ['REMOTE_HOST'] returnează numele gazdei de unde utilizatorul vizualizează pagina curentă
$ _SERVER ['REMOTE_PORT'] Returnează portul utilizat pe mașina utilizatorului pentru a comunica cu serverul web
$ _SERVER ['SCRIPT_FILENAME'] Returnează numele de cale absolut al scriptului care se execută în prezent
$ _SERVER ['SERVER_ADMIN'] Returnează valoarea acordată directivei SERVER_ADMIN din fișierul de configurare a serverului web (dacă scriptul rulează pe o gazdă virtuală, va fi valoarea definită pentru acea gazdă virtuală) (cum ar fi [email protected] )
$ _SERVER ['SERVER_PORT'] Returnează portul pe mașina serverului care este utilizat de serverul web pentru comunicare (cum ar fi 80)
$ _SERVER ['SERVER_SIGNATURE'] Returnează versiunea serverului și numele gazdei virtuale care sunt adăugate la paginile generate de server
$ _SERVER ['PATH_TRANSLATED'] returnează calea bazată pe sistemul de fișiere la scriptul curent
$ _SERVER ['SCRIPT_NAME'] returnează calea scriptului curent
$ _SERVER ['SCRIPT_URI'] Returnează URI-ul paginii curente
PHP Superglobal - $_REQUEST
Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.
PHP $ _REQUEST
PHP $ _REQUEST este o variabilă super globală PHP care este folosită pentru a colecta date după trimiterea unui formular HTML.
Exemplul de mai jos arată un formular cu un câmp de intrare și un buton de trimitere (input field și submit button). Când un utilizator trimite datele făcând click pe „Trimite” (Submit), datele formularului sunt trimise fișierului specificat în atributul de acțiune (action attribute) al etichetei (tag) <form>. În acest exemplu, indicăm acest fișier în sine pentru prelucrarea datelor din formular. Dacă doriți să utilizați un alt fișier PHP pentru procesarea datelor din formular, înlocuiți-l cu numele de fișier ales. Apoi, putem folosi super variabila globală $ _REQUEST pentru a colecta valoarea câmpului de intrare (input field):
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Nume: <input type="text" name="fname">
  <input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // colectați valoarea câmpului de intrare (input field)
    $name = $_REQUEST['fname'];
    if (empty($name)) {
        echo "Numele este gol";
    } else {
        echo $name;
    }
}
?>
</body>
</html>
PHP Superglobal - $_POST
Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.
PHP $ _POST
PHP $ _POST este o variabilă super globală PHP, care este folosită pentru a colecta date de formular după trimiterea unui formular HTML cu method="post".
$ _POST este de asemenea utilizat pe scară largă pentru a trece variabilele.
Exemplul de mai jos arată un formular cu un câmp de intrare și un buton de trimitere (input field și submit button). Când un utilizator trimite datele făcând click pe „Trimite” (Submit), datele formularului sunt trimise fișierului specificat în atributul de acțiune (action attribute) al etichetei (tag) <form>. În acest exemplu, indicăm fișierul în sine pentru prelucrarea datelor din formular. Dacă doriți să utilizați un alt fișier PHP pentru procesarea datelor din formular, înlocuiți-l cu numele de fișier ales. Apoi, putem utiliza super variabila globală $ _POST pentru a colecta valoarea câmpului de intrare (input field):
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Nume: <input type="text" name="fname">
  <input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // colectați valoarea câmpului de intrare (input field)
    $name = $_POST['fname'];
    if (empty($name)) {
        echo "Numele este gol";
    } else {
        echo $name;
    }
}
?>
</body>
</html>
PHP Superglobal - $_GET
Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.
PHP $ _GET
PHP $ _GET este o variabilă super globală PHP, care este utilizată pentru a colecta date de formular după trimiterea unui formular HTML cu method="get".
$ _GET poate colecta și datele trimise pe adresa URL.
Presupunem că avem o pagină HTML care conține un hyperlink cu parametri:
 <html>
<body>
<a href="test_get.php?subject=PHP&web=lectii-virtuale.ro">Test $GET</a>
</body>
</html>
Când un utilizator face click pe linkul „Test $GET”, parametrii „subject” și „web” sunt trimiși la „test_get.php”, iar apoi puteți accesa valorile sale în „test_get.php” cu $_GET.
Exemplul de mai jos arată codul din „test_get.php”:
<html>
<body>
<?php
echo "Studiu " . $_GET['subject'] . " la " . $_GET['web'];
?>
</body>
</html>

PHP Validare formular

Validare formular PHP
Acesta și capitolele următoare arată cum să folosești PHP pentru a valida datele formularului.
Validare formular PHP
Gândiți-vă la SECURITATE când prelucrați formularele PHP!
Aceste pagini vor arăta cum să procesați formularele PHP din punct de vedere al securitatii. Validarea corectă a datelor din formular este importantă pentru a vă proteja formularul de hackeri și spameri!
Formularul HTML la care vom lucra în aceste capitole, conține diferite câmpuri de introducere: câmpuri de text obligatorii și opționale, butoane radio și un buton de trimitere (required and optional text fields, radio buttons, and a submit button):
Name - Obligatoriu. + Trebuie să conțină doar litere și spațiu alb
E-mail - Obligatoriu. + Trebuie să conțină o adresă de e-mail validă (cu @ și.)
Website - Obligatoriu. Dacă este prezent, trebuie să conțină o adresă URL validă
Comment - Opțional. Câmp de introducere pe mai multe linii (textarea)
Sex - Obligatoriu. Trebuie să selectați una
Mai întâi vom analiza codul HTML simplu pentru formular:
Câmpuri text (Text Fields)
Câmpurile nume, e-mail și website sunt elemente de introducere ale textului (input elements), iar câmpul de comentarii este textarea. Codul HTML arată astfel:
Nume: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
Butoane radio (Radio Buttons)
Câmpurile gen (gender fields) sunt butoane radio, iar codul HTML arată astfel:
Gen:
<input type="radio" name="gender" value="female">Femeie
<input type="radio" name="gender" value="male">Bărbat
<input type="radio" name="gender" value="other">Altele
Elementul form (The Form Element)
Codul HTML al formularului arată astfel:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Când formularul este trimis, datele formularului sunt trimise cu method = "post".
Ce este variabila $_SERVER["PHP_SELF"] ?
$_SERVER["PHP_SELF"] este o variabilă super globală care returnează numele de fișier al scriptului care se execută în prezent.
Așadar, $_SERVER["PHP_SELF"] trimite datele formularului (submitted form data) trimis către pagina în sine, în loc să sară pe o altă pagină. În acest fel, utilizatorul va primi mesaje de eroare pe aceeași pagină ca și formularul.
Ce este funcția htmlspecialchars()?
Funcția htmlspecialchars() convertește caracterele speciale în entități HTML. Aceasta înseamnă că va înlocui caractere HTML precum <and> cu &lt; și &gt;. Acest lucru împiedică atacatorii să exploateze codul prin injectarea codului HTML sau a javascriptului (Cross-site Scripting attacks) în formulare.
Notă imporantă privind securitatea formularului PHP
Variabila $_SERVER["PHP_SELF"] poate fi utilizată de hackeri!
Dacă PHP_SELF este utilizat în pagina dvs., un utilizator poate introduce un slash (/) și apoi unele comenzi de Cross Site Scripting (XSS) pentru a executa.
Scripturi încrucișate (Cross-site scripting) (XSS) este un tip de vulnerabilitate a securității computerului care se găsește de obicei în aplicațiile Web. XSS le permite atacatorilor să injecteze scripturi din partea clientului în paginile Web vizualizate de alți utilizatori.
Presupunem că avem următorul formular într-o pagină numită "test_form.php":
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Acum, dacă un utilizator introduce URL-ul normal în bara de adrese precum "http://www.example.com/test_form.php", codul de mai sus va fi tradus în:
<form method="post" action="test_form.php">
Până acum, bine.
Cu toate acestea, considerați că un utilizator introduce următoarea adresă URL în bara de adrese:
http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
În acest caz, codul de mai sus va fi tradus în:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Acest cod adaugă o etichetă script (script tag) și o comandă de alertă (alert command). Și atunci când pagina se încarcă, codul JavaScript va fi executat (utilizatorul va vedea o casetă de alertă (alert box)). Acesta este doar un exemplu simplu și inofensiv cum poate fi exploatată variabila PHP_SELF.
Fiți conștienți de faptul că orice cod JavaScript poate fi adăugat în eticheta <script>! Un hacker poate redirecționa utilizatorul către un fișier de pe alt server, iar respectivul fișier poate conține cod rău intenționat care poate modifica variabilele globale sau poate trimite formularul la o altă adresă pentru a salva datele utilizatorului, de exemplu.
Cum să evitați exploatările $_SERVER["PHP_SELF"]?
Exploatările $_SERVER["PHP_SELF"] pot fi evitate folosind funcția htmlspecialchars().
Codul formularului ar trebui să arate astfel:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Funcția htmlspecialchars() convertește caracterele speciale în entități HTML. Acum, dacă utilizatorul încearcă să exploateze variabila PHP_SELF, va rezulta următoarea ieșire (output):
<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">
Validați datele formularului cu PHP
Primul lucru pe care îl vom face este să trecem toate variabilele prin funcția PHP htmlspecialchars().
Când folosim funcția htmlspecialchars(); atunci dacă un utilizator încearcă să trimită următoarele într-un câmp text:
<script>location.href('http://www.hacked.com')</script>
- acest lucru nu ar fi executat, deoarece va fi salvat ca și cod HTML scăpat, astfel:
&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;
Codul este acum sigur pentru a fi afișat pe o pagină sau în interiorul unui e-mail.
De asemenea, vom face alte două lucruri atunci când utilizatorul va trimite formularul:
Scoateți caracterele inutile (spațiu suplimentar, filă, linie nouă (extra space, tab, newline)) din datele de intrare ale utilizatorului (cu funcția PHP trim() )
Eliminați backslashes (\) din datele de intrare ale utilizatorului (cu funcția PHP stripslashes())Următorul pas este să creem o funcție care să facă toate verificările pentru noi (ceea ce este mult mai convenabil decât scrierea aceluiași cod încă o dată).
Vom numi funcția test_input().
Acum, putem verifica fiecare variabilă $_POST cu funcția test_input(), iar scriptul va arata astfel:
<?php
// definiți variabilele și setați valorile goale
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>
Observați că la începutul scriptului, verificăm dacă formularul a fost trimis folosind $_SERVER ["REQUEST_METHOD"]. Dacă REQUEST_METHOD este POST, atunci formularul a fost trimis - și ar trebui validat. Dacă nu a fost trimis, săriți validarea și afișați un formular necompletat.
Cu toate acestea, în exemplul de mai sus, toate câmpurile de introducere sunt opționale. Scriptul funcționează bine chiar dacă utilizatorul nu introduce date.
Următorul pas este de a face necesare câmpurile de intrare și de a crea mesaje de eroare, dacă este nevoie.

PHP Formular Obligatoriu

Formulare PHP - Câmpuri obligatorii (PHP Forms - Required Fields)
Acest capitol arată cum se pot face câmpurile de intrare necesare (input fields required) și se pot crea mesaje de eroare (error messages), dacă este nevoie.
PHP - Câmpuri obligatorii (PHP - Required Fields)
Din tabelul cu regulile de validare din pagina anterioară, vedem că sunt obligatorii câmpurile „Nume”, „E-mail” și „Gen”. Aceste câmpuri nu pot fi goale și trebuie completate în formularul HTML.
Nume- Obligatoriu. Trebuie să conțină doar litere și spațiu alb.
E-mail - Obligatoriu. Trebuie să conțină o adresă de e-mail validă (cu @ și.).
Website - Opțional. Dacă este prezent, trebuie să conțină o adresă URL validă.
Comentariu - Opțional. Câmp de introducere pe mai multe linii (textarea).
Gen - Obligatoriu. Trebuie să selectați unul.
În capitolul precedent, toate câmpurile de intrare (input fields) au fost opționale.
În codul următor, am adăugat câteva variabile noi: $nameErr, $emailErr, $genderErr și $websiteErr $. Aceste variabile de eroare (error variables) vor conține mesaje de eroare (error messages) pentru câmpurile necesare (required fields). Am adăugat, de asemenea, o instrucțiune if else pentru fiecare variabilă $_POST. Se verifică dacă variabila $_POST este goală (cu funcția PHP empty()). Dacă este gol, un mesaj de eroare (error message) este stocat în diferite variabile de eroare (error variables)  și, dacă nu este gol, trimite datele de intrare (input data) ale utilizatorului prin funcția test_input():
<?php
// definiți variabilele și setați valorile goale
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
  }
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>
PHP - Afișează mesajele de eroare (PHP - Display The Error Messages)
Apoi, în formularul HTML, adăugăm putin de script după fiecare câmp necesar (required field), care generează mesajul de eroare (error message) corect dacă este necesar (adică dacă utilizatorul încearcă să trimită formularul fără a completa câmpurile necesare (required fields)):
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Nume: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Coment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gen:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
Următorul pas este validarea datelor de intrare (input data), adică „Conține câmpul Nume doar litere și spațiu alb?”, iar „Conține câmpul E-mail o sintaxă a adresei de e-mail validă?”, iar dacă este completat, ”Conține câmpul Website o adresă URL validă? ".

PHP Formular - E-mail/URL

Formulare PHP - Validați e-mailul și adresa URL
Acest capitol arată cum se pot valida numele, e-mailurile și adresele URL.
PHP - Validare nume
Codul de mai jos arată o modalitate simplă de a verifica dacă câmpul de nume conține doar litere și spațiu alb. Dacă valoarea câmpului nume nu este validă, atunci stocați un mesaj de eroare:
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  $nameErr = "Sunt permise doar litere și spațiu alb";
}
Funcția preg_match() caută un șir de șablon (string for pattern), returnând adevărat (true) dacă modelul (pattern) există și fals (false) altfel.
PHP - Validare e-mail
Cel mai simplu și mai sigur mod de a verifica dacă o adresă de e-mail este bine formulată este să folosești funcția PHP filter_var().
În codul de mai jos, dacă adresa de e-mail nu este bine formulată, atunci stocați un mesaj de eroare (error message):
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $emailErr = "Format de e-mail invalid";
}
PHP - Validare URL
Codul de mai jos arată o modalitate de a verifica dacă o sintaxă a adresei URL este validă (această expresie obișnuită permite și liniuțe în adresa URL). Dacă sintaxa adresei URL nu este validă, atunci stocați un mesaj de eroare (error message):
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  $websiteErr = "URL invalid";
}
PHP - Validați numele, e-mailul și adresa URL
Scriptul acum arată așa:
<?php
// definiți variabilele și setați valorile goale
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Numele este necesar";
  } else {
    $name = test_input($_POST["name"]);
    // verificați dacă numele conține doar litere și spațiu alb
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $nameErr = "Sunt permise doar litere și spațiu alb";
    }
  }
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // verificați dacă adresa de e-mail este bine formulată
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Format de e-mail nevalid";
    }
  }
 if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
    // verificați dacă sintaxa adresei URL este validă (această expresie obișnuită permite și liniuțe în URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
      $websiteErr = "URL nevalid";
    }
  }
 if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "Genul este necesar";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>
Următorul pas este să arătați cum să împiedicați formularul să golească toate câmpurile de intrare (input fields) atunci când utilizatorul trimite formularul.

PHP Formular complet

Exemplu de formular complet PHP (PHP Complete Form Example)
Acest capitol arată cum să păstrați valorile în câmpurile de introducere (input fields) atunci când utilizatorul apasă butonul de trimitere (submit button).
PHP - Păstrați valorile în formular
Pentru a afișa valorile din câmpurile de intrare (input fields) după ce utilizatorul apasă pe butonul de trimitere (submit button), adăugăm puțin script PHP în interiorul valorii atributului (value attribute) al următoarelor câmpuri de intrare (input fields): nume, e-mail și site-ul web (name, email, and website). În câmpul textarea (textarea field) comment, am pus scriptul între etichetele (tags)<textarea> și </textarea>. Micul script produce (outputs) valoarea variabilelor $name, $email, $website și $comment.
Apoi, trebuie să arătăm și ce buton radio (radio button) a fost bifat. Pentru aceasta, trebuie să manipulăm atributul bifat (checked attribute) (nu atributul valoare pentru butoanele radio) (radio buttons):
Nume: <input type="text" name="name" value="<?php echo $name;?>">
E-mail: <input type="text" name="email" value="<?php echo $email;?>">
Website: <input type="text" name="website" value="<?php echo $website;?>">
Comentariu: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
Gen:
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="female") echo "checked";?>
value="female">Femeie
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="male") echo "checked";?>
value="male">Bărbat
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="other") echo "checked";?>
value="other">Altele

PHP - OOP

PHP - OOP
PHP - Ce este OOP?
De la PHP5, puteți scrie și cod PHP într-un stil orientat pe obiecte (object-oriented style).
Programarea orientată pe obiecte (Object-Oriented programming) este mai rapidă și mai ușor de executat.
PHP Ce este OOP?
OOP înseamnă programare orientată pe obiecte (Object-Oriented Programming).
Programarea procedurală (Procedural programming) se referă la scrierea procedurilor sau a funcțiilor care efectuează operațiuni asupra datelor, în timp ce programarea orientată pe obiect (object-oriented programming) este despre crearea de obiecte care conțin atât date cât și funcții.
Programarea orientată pe obiecte (object-oriented programming) are mai multe avantaje față de programarea procedurală (procedural programming):
OOP este mai rapid și mai ușor de executat
OOP oferă o structură clară pentru programe
OOP ajută la păstrarea codului PHP DRY „Nu vă repetați” (Don't Repeat Yourself) și face codul mai ușor de întreținut, modificat și depanat
OOP face posibilă crearea de aplicații reutilizabile complete, cu mai puțin cod și timp de dezvoltare mai scurt
Principiul „Nu vă repetați” (Don't Repeat Yourself) (DRY) se referă la reducerea repetării codului. Ar trebui să extrageți codurile care sunt comune pentru aplicație și să le așezați într-un singur loc și să le reutilizați în loc să le repetați.
PHP - Ce sunt clasele și obiectele?
Clasele și obiectele sunt cele două aspecte principale ale programării orientate pe obiecte (object-oriented programming).
Diferența dintre clasă și obiecte.
O clasă este un șablon pentru obiecte (template for objects), iar un obiect este o instanță a unei clase.
Când obiectele individuale sunt create, moștenesc toate proprietățiile și comportamentele din clasă, dar fiecare obiect va avea valori diferite pentru proprietăți.
Uitați-vă la capitolele următoare pentru a afla mai multe despre OOP.

PHP MySQL Introduceți mai multe înregistrări

PHP MySQL Introduceți mai multe înregistrări
Inserați mai multe înregistrări în MySQL folosind MySQLi și PDO
Mai multe instrucțiuni SQL trebuie executate cu funcția mysqli_multi_query().
Următoarele exemple adaugă trei înregistrări noi în tabelul „MyGuests”:
Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Maria', 'Gheorghe', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Iulia', 'Filipescu', '[email protected]')";
if ($conn->multi_query($sql) === TRUE) {
    echo "Înregistrări noi create cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Exemplu (MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Maria', 'Gheorghe', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Iulia', 'Filipescu', '[email protected]')";
if (mysqli_multi_query($conn, $sql)) {
    echo "Înregistrări noi create cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
Exemplu (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   // începeți tranzacția
    $conn->beginTransaction();
    // declarațiile noastre SQL
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Ion', 'Popescu', '[email protected]')");
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Maria', 'Gheorghe', '[email protected]')");
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Iulia', 'Filipescu', '[email protected]')");
   // commit the transaction
    $conn->commit();
    echo "Înregistrări noi create cu succes";
    }
catch(PDOException $e)
    {
    // dați înapoi tranzacția dacă ceva a eșuat
    $conn->rollback();
    echo "Eroare: " . $e->getMessage();
    }
$conn = null;
?>

Săruri

Structura și formula generală a sărurilor; săruri neutre, săruri acide și săruri bazice; nomenclatura sărurilor; proprietățile și reacțiile chimice ale sărurilor; metode generale de obținere a sărurilor; neutralizare și hidroliză. 

Hidrogenul

Caracteristici generale ale hidrogenului; formarea ionului de hidrură, H-, și formarea ionului de hidrogen (proton), H+. Răspândirea hidrogenului în natură. Metode de preparare a hidrogenului. Proprietățile fizice și chimice ale hidrogenului. Hidruri. Ortohidrogen și parahidrogen. Hidrogenul atomic. Întrebuințările hidrogenului. Izotopii hidrogenului (protiu, deuteriu, tritiu). 

Apa

Răspândirea apei în natură. Purificarea apei - sedimentare, filtrare, sterilizare. Apele industriale. Distiliarea apei. Apa higroscopică. Proprietățile fizice ale apei. Structura moleculei de apă. Proprietățile chimice ale apei. Hidrați.  

Grupa 15 sau grupa a V-a principală

Grupa a V-a principală a sistemului periodic, numerotată V A sau 15, cuprinde următoarele elemente: azot, N, fosfor, P, arsen, As, stibiu (antimoniu), Sb, și bismut, Bi. 
 

Grupa 14 sau grupa a IV-a principală

Grupa a IV-a principală a sistemului periodic, numerotată IV A sau 14, cuprinde elementele carbon, C, siliciu, Si, germaniu, Ge, staniu, Sn, și plumb, Pb. 

Grupa 13 sau grupa a III-a principală

Grupa a III-a principală a sistemului periodic, numerotată III A sau 13, cuprinde elementele bor, B, aluminiu, Al, galiu, Ga, indiu, In, și taliu, Tl. 

Grupa 2 sau grupa a II-a principală

Grupa a II-a principală a sistemului periodic, numerotată II A sau 2, cuprinde elementele: beriliu, Be, magneziu, Mg, calciu, Ca, stronțiu, Sr, bariu, și radiu, Ra. Această grupă se mai numește grupa metalelor alcalino-pământoase. 

Grupa 3 sau grupa a III-a secundară

Grupa a III-a secundară a sistemului periodic, numerotată III B sau 3, cuprinde elementele rare scandiu, Sc, ytriu, Y, și lantan, La, precum și elementul radioactiv actiniu, Ac. 

 

Grupa 9 sau grupa a VIII-a secundară

Grupa 9 a sistemului periodic, în trecut considerată parte a grupei a VIII-a secundare alături de grupele 8 și 10, cuprinde elementele cobalt, Co, rodiu, Rh, și iridiu, Ir. 

Despre Lecții-Virtuale.ro

Lecții-Virtuale este o platformă educațională care oferă suport în vederea pregătirii pentru Evaluare Națională și Bacalaureat la Matematică, Fizică și Chimie. Lecțiile noastre sunt alcătuite din filme și exerciții și probleme cu tot cu rezolvări. Platforma noastră este o soluție ideală pentru școala online. Pentru facilitarea activității profesorilor în cadrul ecosistemului GSuite de la Google am implementat butonul Google Classroom. Scopul nostru este să ne concentrăm pe prezentarea noțiunilor și fenomenelor într-o manieră care să stimuleze înțelegerea și nu memorarea mecanică. Ne propunem să facilităm accesul la conținut educațional de calitate mai ales elevilor cu venituri mai modeste care nu își pemit meditații particulare. Sperăm să vă simțiti bine alături de noi și să invățați lucruri folositoare. Hai România!

Newsletter

Abonează-te la Newsletter pentru a fi la curent cu toate ofertele noastre.

Parteneri

EduApps partener Lectii Virtuale UiPath partener Lectii Virtuale Scoala365 partener Lectii Virtuale CCD Galați partener Lectii Virtuale

2024 © Lecții-virtuale.ro Toate drepturile rezervate
Termeni   Despre   Contact   Confidenţialitate   Cariere Parteneri