Bărbat întotdeauna membru membru php g. Folosind ob_start în timp ce susțineți proiecte php


Bună ziua, Habr!

Astăzi aș dori să introduc webmasteri începători într-o varietate de moduri elegante de a utiliza buffering-ul de ieșire în php. Amatori de web experimentați pentru ei înșiși aici găsesc ceva util. Deși - cine știe?

După cum știți, bufferingul de ieșire în php este controlat de un set de funcții începând cu "ob_". Cel mai important dintre ele este ob_start. Când începe, colectează ieșirea ulterioară, adică tot felul de tipărire (), ecou și așa mai departe, care apoi vor fi date vizitatorului sub forma unei pagini html. Și dacă înainte de a începe afișarea, am început tamponarea, apoi cu această pagină, care este aproape gata, în sfârșit putem crea ceva.


  De exemplu, dorim să filtrăm toate link-urile către site-uri terțe.

Pe forumul nostru, străvechi ca topor Australopithecus, un număr mare de spammeri plutesc, atrăgând vizitatorii în locuri pline de dezmățări, bandiți înarmați și agitație politică. Puteți utiliza js-ul cu urmărirea, dar dorim să schimbăm toate aceste legături în loc de acest fel:

   "http://blackjack-hookers.com" \u003d\u003e "http://myoldforum.ru/redirect.php?url\u003dblackjack-hookers.com"

Metoda poate să nu fie cea mai eficientă, dar eficientă. Am scris redirect.php cu un filtru și o foaie neagră, iar acum trebuie să convertim toate linkurile pe mii de pagini de forum. Cu ob_start și câteva expresii obișnuite, vom face acest lucru în doar câteva rânduri:

Funcție f_callback ($ buffer) ($ buffer \u003d preg_replace ("#http: // (www.)? Myoldforum \\ .ru / #", "/", $ buffer); $ buffer \u003d preg_replace ("# href \u003d" http : // ([^ "] *)" # "," # href \u003d "/redirect\\.php\\?url\u003d$1", $ tampon); returnare $ tampon;) ob_start (f_callback);

Acum, conectând acest cod la începutul index.php sau un alt fișier pe care serverul îl accesează atunci când navighează, obținem ceea ce avem nevoie.

Modificând conținutul în acest mod, nu ne limităm la cadrul metodelor motorului. Acest lucru poate fi foarte valoros. Puteți adăuga, de exemplu, un plugin:

Funcția generate_plugin () (/ * genera ceva * /) funcție f_callback ($ buffer) (/*...*/ $ buffer \u003d str_replace ("", generează_plugin (), $ tampon); /*...*/ return $ buffer;) ob_start (" f_callback ");

Acum, unde am adăugat la conținut va apărea ceea ce am dorit să obținem. O utilizare este să inserați un widget js într-o pagină de site. De exemplu, carduri Yandex. De obicei, acest lucru nu este dificil, dar, uneori, editorul de pagini scris strâmb de pe site scapă de ghilimele și paranteze, rupând widgetul. După cum vedeți, această problemă este ușor de rezolvat.

Setul de instrumente php pentru lucrul cu bufferul de ieșire este bogat și nu se limitează doar la ob_start. În unele cazuri, metodele de mai sus sunt inutile consumatoare de resurse și greoaie, deoarece funcționează pe întreaga pagină. Putem prelucra o parte din acesta doar prin crearea unui înveliș în șablon în jurul generației de ceva pe care nu dorim să urcăm în sălbăticie, dar trebuie să îl remediem:

  (GENERAȚI CELE MAI BUNE CRAZIE)

Trebuie să fi remarcat toate aceste viraje: „Nu vreau să urc”, „la fel de vechi ca un scaun de tiranosaur”, „redactor scris strâmb” ... Într-o lume ideală, nu sunt necesare coji din jurul tamponului de ieșire. Tot ce se poate face cu ob_start ar putea fi teoretic fără el. Această tehnică introduce uneori confuzia în codul proiectului, mulți își văd semnificația doar pentru a da ieșire lui ob_gzhandler pentru compresiune și consideră utilizarea ei în alte cazuri periculoase. Dar de multe ori, gestionarea producției nu este suficientă.

Mai ales dacă nu doriți să săpați adânc.

După cum îl înțeleg, site-ul va fi creat fără a utiliza cadrul? Și apoi dezvoltatorii familiari, toate urechile mele au bâlbâit că am nevoie să învăț cadrul Yii.

2) Am vrut doar să întreb .. Un exemplu de creare a unui magazin online, care este considerat în curs, este mai academic? Proiectele comerciale reale sunt probabil create cu ajutorul cadrelor acest lucru optimizează foarte mult procesul de dezvoltare prin utilizarea șabloanelor de cod standard. Răspunsul la această întrebare ar ajuta la clarificarea ce se întâmplă ... PHP Start | Merită să parcurgeți practica pentru a înțelege logica generală?

Răspunsul este:

1) Lucrul familiar este corect, cred și eu. Dar orice cadru necesită instruire, de exemplu, cunoștințe. Când am construit sistemul MVC în practică, am încercat să urmez abordările care sunt utilizate în cadre. Deoarece PHP Start (teorie și practică) vă va ajuta cu pregătirea, după aceasta puteți începe cu siguranță să învățați yii2 (sau ceva similar).

Adresa depozitului de proiect:

  Întrebarea nr. 1:

Nu pot scăpa de eroare:

Notificare: Utilizarea constantei nedefinite _FILE_ - asumată "_FILE_" în /Users/Elios/Sites/Test/index.php pe linia 10

Spune-mi, ce ar putea fi?

Răspunsul este:

Înainte și după FILE   trebuie sa scrii 2 caractere _

__FILE__ aparține constantelor „magice” ale PHP. Mai multe detalii aici.

Vizualizați toți membrii

Cu condiția să dețineți permisiunile corespunzătoare, veți putea vedea Membrii   intrare pe sau în. Dacă faceți clic pe unul dintre aceste linkuri vă va duce la Vizualizați toți membrii   pagina, pagina implicită pentru Lista membrilor   secțiune. Există, de asemenea, un   pagina din această secțiune, unde puteți căuta membri înregistrați pe forum.

Pe Vizualizați toți membrii   pagina, veți vedea lista tuturor membrilor înregistrați pe forum. Pagini sunt utilizate astfel încât să nu existe prea mulți membri enumerați pe o singură pagină. Când există mai mult de o pagină, paginile suplimentare pot fi selectate de aici. În partea dreaptă a barei de titlu „Lista membrilor”, este afișată fiecare literă a alfabetului englez. Aceste scrisori sunt folosite pentru a trece la numele de utilizator al membrilor înregistrați care încep cu acea scrisoare, astfel încât nu trebuie să derulați mai multe pagini pentru a le găsi. Aceasta nu filtrează toate numele de utilizator începând cu litere diferite, ci servește mai degrabă ca ancoră, așa că veți fi direcționat către nume de utilizator care încep cu litera selectată.

Toate numele de utilizator din lista de membri pot fi comandate de: Status (online / offline), nume de utilizator, e-mail, site web, ICQ, AIM, YIM, MSN, poziție, data înregistrării și postări. Aceste titluri de coloană sunt legături care pot fi utilizate pentru a sorta lista în ordine crescătoare sau descendentă sau pentru a inversa ordinea de sortare a coloanei sub titlul care este folosit în prezent pentru a sorta lista.

Căutați membri

Această secțiune vă permite să faceți fie o simplă căutare a membrilor, fie să alegeți să vă filtrați rezultatele utilizând parametrii suplimentari. Puteți căuta membri în funcție de numele de utilizator, adresa de e-mail, porecla de mesager, site-ul sau poziția.

Rezultatele căutării vor afișa potriviri pentru termenii pe care îi introduceți în câmpul de căutare. Dacă se selectează oricare dintre parametrii de căutare suplimentari, rezultatele vor fi, de asemenea, filtrate în consecință. Căutarea nu urmărește doar potrivirea exactă a cuvintelor complete, ci și părțile de text care se potrivesc cu termenii de căutare. Din acest motiv, dacă termenul de căutare reprezintă doar o parte din cuvântul pe care îl căutați, atunci rezultatele pot afișa mult mai multe potriviri decât se aștepta.

Unii dintre parametrii suplimentari de căutare se referă la informații pe care utilizatorii pot alege să nu le includă în profilul lor (porecla de mesager, site-ul web) sau pot alege să nu le dezvăluie publicului (e-mail), astfel încât utilizarea acestor parametri ar putea să nu fie întotdeauna prezentată rezultatele pe care le căutați. Rezultatele căutării vor fi mai precise cu atât mai multe litere / cuvinte sunt utilizate în căutare.