Predtým mužský zoznam členov php start. Použitie ob_start s podporou projektu php

Čau Habr!

Dnes by som rád predstavil začínajúcim webmasterom rôzne úhľadné spôsoby použitia výstupnej vyrovnávacej pamäte v php. Skúsení webmasteri tu pravdepodobne nenájdu niečo užitočné. Aj keď – ktovie?

Ako všetci viete, ukladanie do vyrovnávacej pamäte v php je riadené sadou funkcií začínajúcich na "ob_". Najdôležitejší je ob_start. Po spustení zhromažďuje následný výstup, teda všetky druhy tlače (), ozveny a podobne, ktoré potom dostane návštevník vo forme html stránky. A ak sme pred zobrazením začali ukladať do vyrovnávacej pamäte, tak s touto takmer hotovou stránkou bude možné konečne niečo urobiť.


Chceme napríklad odfiltrovať všetky odkazy na externé stránky.

Na našom fóre, starom ako sekera Australopithecus, sa hemží veľké množstvo spamerov, ktorí lákajú návštevníka na miesta plné zhýralosti, jednorukých banditov a politickej agitácie. Mohli by sme použiť js so sledovaním, ale namiesto toho chceme zmeniť všetky tieto odkazy na:

"http://blackjack-hookers.com" => "http://myoldforum.ru/redirect.php?url=blackjack-hookers.com"

Metóda nemusí byť najefektívnejšia, ale účinná. Napísali sme redirect.php s filtrom a blacklistom a teraz potrebujeme previesť všetky odkazy na tisíckach stránok fóra. S pomocou ob_start a pár regulárnych výrazov to dokážeme v niekoľkých riadkoch:

Funkcia f_callback($buffer)( $buffer = preg_replace("#http://(www.)?myoldforum\.ru/#","/",$buffer); $buffer = preg_replace("#href="http ://([^"]*)"#","#href="/redirect\.php\?url=$1",$buffer); return $buffer; ) ob_start(f_callback);

Teraz, zahrnutím tohto kódu na začiatok index.php alebo iného súboru, ku ktorému server pristupuje pri prezeraní stránok, dostaneme to, čo potrebujeme.

Takouto zmenou obsahu nie sme limitovaní metódami enginu. To je veľmi cenné. Môžete napríklad pridať plugin:

Function generation_plugin()( /*vygenerovať niečo*/ ) function f_callback($buffer)( /*...*/ $buffer = str_replace ("",generate_plugin(),$buffer); /*...*/ return $buffer; ) ob_start("f_callback");

Teraz tam, kde sme pridali obsah, sa zobrazí to, čo sme chceli dostávať. Jedným z použití je vloženie miniaplikácie js na webovú stránku. Napríklad mapy Yandex. Zvyčajne to nie je ťažké, ale niekedy zle napísaný editor webovej stránky unikne úvodzovkám a zloženým zátvorkám, čím sa miniaplikácia rozbije. Ako vidíte, tento problém je ľahko vyriešený.

Sada nástrojov php pre prácu s výstupným bufferom je bohatá a nie je obmedzená len na ob_start. Vyššie uvedené techniky sú v niektorých prípadoch zbytočne náročné na zdroje a ťažkopádne, keďže fungujú na celej stránke. Môžeme spracovať iba časť tak, že v šablóne vytvoríme obal okolo generovania niečoho, čo sa nechceme dostať do divočiny, ale čo určite musíme opraviť:

(GENEROVAŤ VEĽKÚ BLÁZNINU)

Určite ste si už všimli všetky tieto odbočky: „Nechcem liezť“, „starý ako stolička tyranosaura“, „krivý editor“ ... V ideálnom svete nie sú potrebné škrupiny okolo výstupného buffera. Čokoľvek, čo sa dá urobiť s ob_start, by sa teoreticky dalo urobiť aj bez neho. Táto technika niekedy mätie kód projektu, veľa ľudí vidí jej zmysel len v tom, že výstup dáva ob_gzhandler na kompresiu a jej použitie v iných prípadoch považuje za nebezpečné. Ale často je výstupná kontrola jednoducho nevyhnutná.

Najmä ak nechcete kopať hlboko.

Zobraziť všetkých členov

Za predpokladu, že máte príslušné povolenia, budete môcť vidieť členov vstup na alebo v. Kliknutím na jeden z týchto odkazov sa dostanete na Zobraziť všetkých členov stránka, predvolená stránka pre Zoznam členov oddiele. K dispozícii je tiež a stránku v tejto sekcii, kde môžete vyhľadávať členov zaregistrovaných na fóre.

Na Zobraziť všetkých členov na stránke uvidíte zoznam všetkých členov zaregistrovaných na fóre. Stránky sa používajú preto, aby na jednej stránke nebolo uvedených príliš veľa členov. Ak existuje viac ako jedna strana, ďalšie strany si môžete vybrať tu. Na pravej strane záhlavia „Zoznam členov“ sa zobrazuje každé písmeno anglickej abecedy. Tieto písmená sa používajú na preskočenie na používateľské mená registrovaných členov, ktoré začínajú týmto písmenom, takže pri ich hľadaní nemusíte listovať niekoľkými stránkami. Toto neodfiltruje všetky používateľské mená začínajúce rôznymi písmenami, ale slúži skôr ako kotva, takže budete presmerovaní na používateľské mená, ktoré začínajú vybraným písmenom.

Všetky používateľské mená v zozname členov je možné zoradiť podľa: stavu (online/offline), používateľského mena, e-mailu, webovej lokality, ICQ, AIM, YIM, MSN, pozície, dátumu registrácie a príspevkov. Tieto nadpisy stĺpcov sú prepojenia, ktoré možno použiť na zoradenie zoznamu vo vzostupnom alebo zostupnom poradí alebo na obrátenie poradia zoradenia stĺpca pod hlavičkou, ktorá sa momentálne používa na zoradenie zoznamu.

Vyhľadajte členov

Táto sekcia vám umožňuje vykonať jednoduché vyhľadávanie členov alebo zvoliť filtrovanie výsledkov pomocou dodatočných parametrov. Môžete vyhľadávať členov na základe ich používateľského mena, e-mailovej adresy, prezývky pre messenger, webovej stránky alebo pozície.

Vo výsledkoch vyhľadávania sa zobrazia zhody pre výrazy, ktoré zadáte do vyhľadávacieho poľa. Ak vyberiete ktorýkoľvek z dodatočných parametrov vyhľadávania, výsledky budú tiež podľa toho filtrované. Vyhľadávanie nehľadá len presné zhody celého slova, ale aj akékoľvek časti textu, ktoré zodpovedajú hľadaným výrazom. Z tohto dôvodu, ak hľadaný výraz predstavuje iba časť slova, ktoré hľadáte, výsledky môžu zobraziť oveľa viac zhôd, ako sa očakávalo.

Niektoré z dodatočných parametrov vyhľadávania sa týkajú informácií, ktoré sa používatelia môžu rozhodnúť nezahrnúť do svojho profilu (prezývka messenger, webová stránka), alebo sa môžu rozhodnúť, že ich nezverejnia (e-mail), takže použitie týchto parametrov sa nemusí vždy zobraziť. výsledky, ktoré hľadáte. Výsledky vyhľadávania budú presnejšie, čím viac písmen/slov sa použije pri vyhľadávaní.

Ak tomu dobre rozumiem, stránka bude vytvorená bez použitia rámca? A potom mi moji známi vývojári bzučali vo všetkých ušiach, že potrebujem študovať framework Yii.

2) To som sa chcel spýtať.. Príklad vytvorenia internetového obchodu, o ktorom sa uvažuje v kurze, je skôr akademický? Skutočné komerčné projekty sa pravdepodobne vytvárajú pomocou rámcov, pretože to značne zjednodušuje vývojový proces pomocou použitia všeobecných šablón kódu. Odpoveď na túto otázku by pomohla objasniť, čo sa deje... PHP Start | Stále stojí za to prejsť praxou, aby ste pochopili všeobecnú logiku?

odpoveď:

1) Známy obchod je správny, tiež si to myslím. Akýkoľvek rámec však vyžaduje prípravu, napríklad znalosť . Pri budovaní systému MVC v praxi som sa snažil dodržiavať prístupy, ktoré sa používajú vo frameworkoch. Pretože PHP Start (teória a prax) pomôže s prípravou, po nej sa môžete pokojne začať učiť yii2 (alebo niečo podobné).

Adresa úložiska projektu:

Otázka 1:

Neviem sa zbaviť chyby:

Upozornenie: Použitie nedefinovanej konštanty _FILE_ - predpokladá sa "_FILE_" v /Users/Elios/Sites/Test/index.php na riadku 10

Povedz mi, čo to môže byť?

odpoveď:

Pred a po FILE musíte napísať 2 znaky _

__FILE__ patrí medzi „magické“ konštanty PHP. Viac podrobností tu.



Náhodné články

Hore