Ob_start - Միացնել ելքային բուֆերացումը: Օգտագործելով ob_start php նախագծերին աջակցելիս Վատ որոնումը php-ի սկիզբ

Սկսեք որոնումըբրաուզերի առևանգիչ է, որը խթանվում է այլ անվճար ներբեռնումների միջոցով և տեղադրվելուց հետո այն կփոխի ձեր բրաուզերի գլխավոր էջը start-search.com search.yahoo.com.

start-search.com-ի գլխավոր էջը կցուցադրի գովազդներ և հովանավորվող հղումներ ձեր որոնման արդյունքներում և կարող է հավաքել որոնման տերմիններ ձեր որոնման հարցումներից: Start-search.com-ի առևանգումը օգտագործվում է գովազդային եկամուտը բարձրացնելու համար, ինչպես blackhat SEO-ի օգտագործման դեպքում՝ որոնման արդյունքներում կայքի էջի վարկանիշը բարձրացնելու համար:

Սկսեք որոնումը, այն տեխնիկապես վիրուս չէ, բայց այն ցուցադրում է բազմաթիվ վնասակար հատկություններ, ինչպիսիք են օպերացիոն համակարգի մեջ խորը կցվելու rootkit-ի հնարավորությունները, բրաուզերի առևանգումը և, ընդհանուր առմամբ, պարզապես միջամտելը օգտվողի փորձին: Արդյունաբերությունը սովորաբար այն անվանում է «PUP» կամ պոտենցիալ անցանկալի ծրագիր:
«Սկսել որոնումը» գովազդի միջոցով աջակցվող (օգտատերերը կարող են տեսնել հավելյալ դրոշակակիր, որոնում, թռուցիկ, թռուցիկ, միջքաղաքային և ներտեքստային հղումներով գովազդներ) վեբ բրաուզերի խաչմերուկ հավելված Internet Explorer-ի (BHO) և Firefox/Chrome-ի համար (պլագին) և տեղադրման ընթացքում բաշխված դրամայնացման տարբեր հարթակներում: Բրաուզերի ընդլայնումը ներառում է տարբեր գործառույթներ, որոնք կփոփոխեն բրաուզերի լռելյայն կամ հատուկ կարգավորումները, ներառյալ գլխավոր էջը, որոնման կարգավորումները և որոշ դեպքերում կփոփոխեն Internet Explorer-ի բեռնման ժամանակի շեմը, կտեղադրեն կողպեքի ֆայլ Firefox-ում, որպեսզի մրցակցող ծրագրակազմը չփոխի իր կարգավորումները: ինչպես նաև անջատել զննարկչի բովանդակության անվտանգության քաղաքականությունը, որպեսզի թույլատրվի հավելյալ կայքերի սկրիպտավորումը:

«Սկսել որոնումը» գլխավոր էջը հայտնվել է ձեր համակարգչում այն ​​բանից հետո, երբ դուք տեղադրել եք անվճար ծրագրակազմ (վիդեո ձայնագրություն/հոսում, ներբեռնման կառավարիչներ կամ PDF ստեղծողներ), որոնք իրենց տեղադրման մեջ ներառել են այս բրաուզերի առևանգիչը:
Օրինակ, երբ տեղադրեք VPlay-ը, դուք նույնպես կհամաձայնեք փոխել ձեր բրաուզերի գլխավոր էջը start-search.comև լռելյայն որոնման համակարգը դեպի search.yahoo.com


Այնուամենայնիվ, երբ դուք հեռացնում եք VPlay-ը ձեր համակարգչից, ձեր վեբ բրաուզերի կանխադրված կարգավորումները չեն վերականգնվի: Սա նշանակում է, որ դուք պետք է ձեռքով հեռացնեք start-search.com-ի գլխավոր էջը ձեր սիրելի վեբ բրաուզերից:

Դու պետք է միշտ ուշադրություն դարձրեք ծրագրակազմ տեղադրելիսքանի որ հաճախ ծրագրաշարի տեղադրիչը ներառում է կամընտիր տեղադրումներ, ինչպիսին է start-search.com բրաուզերի առևանգիչը: Շատ զգույշ եղեք, թե ինչ եք համաձայնում տեղադրել:
Միշտ ընտրեք մաքսային տեղադրումըև ապաընտրեք այն ամենը, ինչը ծանոթ չէ, հատկապես ընտրովի ծրագրակազմը, որը դուք երբեք չեք ցանկացել ներբեռնել և տեղադրել առաջին հերթին: Անշուշտ պետք է ասել, որ չպետք է տեղադրեք այնպիսի ծրագրեր, որոնց չեք վստահում:

Ինչպես հեռացնել start-search.com-ը (Վիրուսների հեռացման ուղեցույց)

Այս էջը համապարփակ ուղեցույց է, որը կհեռացնի start-search.com-ը ձեր Internet Explorer-ից, Firefox-ից և Google Chrome-ից:
Խնդրում ենք կատարել բոլոր քայլերը ճիշտ հերթականությամբ: Եթե ​​որևէ պահի ունեք հարցեր կամ կասկածներ, STOPև խնդրեք մեր օգնությունը:




ՔԱՅԼ 1. Տեղահանեք start-search.com-ի վնասակար ծրագրերը ձեր համակարգչից

Այս առաջին քայլում մենք կփորձենք բացահայտել և հեռացնել ցանկացած վնասակար ծրագիր, որը կարող է տեղադրվել ձեր համակարգչում:

Եթե ​​դուք խնդիրներ ունեք start-search.com ծրագիրը հեռացնելիս, կարող եք օգտագործել այս անցանկալի ծրագիրը ձեր սարքից ամբողջությամբ հեռացնելու համար:

ՔԱՅԼ 2. Հեռացրեք start-search.com վիրուսը Internet Explorer-ից, Firefox-ից և Google Chrome-ից

Հեռացրեք start-search.com վիրուսը Internet Explorer-ից

Դուք կարող եք վերականգնել Internet Explorer-ի կարգավորումները՝ դրանք վերադարձնելու այն վիճակին, որում եղել են, երբ Internet Explorer-ն առաջին անգամ տեղադրվել է ձեր համակարգչում:

Հեռացրեք start-search.com վիրուսը Mozilla Firefox-ից

Եթե ​​դուք խնդիրներ ունեք Firefox-ի հետ, ապա այն կարող է վերականգնվել: Վերակայման շտկումը բազմաթիվ խնդիրներ ունի՝ վերականգնելով Firefox-ը իր գործարանային լռելյայն վիճակին՝ միաժամանակ պահպանելով ձեր հիմնական տեղեկությունները, ինչպիսիք են էջանիշները, գաղտնաբառերը, վեբ ձևերի ավտոմատ լրացման տեղեկությունները, զննարկման պատմությունը և բաց ներդիրները:

ՆշումՁեր հին Firefox պրոֆիլը կտեղադրվի ձեր աշխատասեղանին «» անունով պանակում: Firefox-ի հին տվյալները«. Եթե ​​վերակայումը չի շտկել ձեր խնդիրը, կարող եք վերականգնել չպահված որոշ տեղեկություններ՝ պատճենելով ֆայլերը ստեղծված նոր պրոֆիլում: Եթե ​​այս թղթապանակն այլևս ձեզ պետք չէ, դուք պետք է ջնջեք այն, քանի որ այն պարունակում է զգայուն տեղեկություններ:

Հեռացրեք start-search.com վիրուսը Google Chrome-ից

ՔԱՅԼ 3. Հեռացրեք start-search.com բրաուզերի առևանգիչը AdwCleaner-ով

AdwCleaner կոմունալ ծրագիրը կսկանավորի ձեր համակարգիչը և վեբ բրաուզերը «start-search.com» վնասակար ֆայլերի, բրաուզերի ընդլայնումների և ռեեստրի բանալիների համար, որոնք կարող են տեղադրվել ձեր համակարգչում առանց ձեր իմացության:

ՔԱՅԼ 4. Հեռացրեք start-search.com վիրուսը ձեր համակարգչից Malwarebytes Anti-Malware Free-ի միջոցով

Malwarebytes Anti-Malware Free-ն օգտագործում է ոլորտի առաջատար տեխնոլոգիան՝ հայտնաբերելու և հեռացնելու չարամիտ ծրագրերի բոլոր հետքերը, ներառյալ ճիճուներ, տրոյաններ, rootkits, սրիկաներ, հավաքողներ, լրտեսող ծրագրեր և այլն:
Կարևոր է նշել, որ Malwarebytes Anti-Malware-ը լավ է աշխատում և պետք է աշխատի հակավիրուսային ծրագրերի կողքին՝ առանց հակասությունների:

  1. Դուք կարող եք բեռնել բեռնել Malwarebytes Anti-Malwareստորև նշված հղումից։
    (Այս հղումը կբացի նոր վեբ էջ, որտեղից կարող եք ներբեռնել Malwarebytes Anti-Malware Free)
  2. Ներբեռնվելուց հետո փակեք բոլոր ծրագրերը, այնուհետև կրկնակի սեղմեք ձեր աշխատասեղանի պատկերակի վրա « mbam-setup-consumer-2.00.xx»սկսել Malwarebytes Anti-Malware-ի տեղադրումը:

    Ձեզ կարող է ներկայացվել Օգտագործողի հաշվի վերահսկման երկխոսություն, որը կհարցնի ձեզ, արդյոք ցանկանում եք գործարկել այս ֆայլը: Եթե ​​դա տեղի ունենա, դուք պետք է սեղմեք « Այո՛«շարունակելու տեղադրումը:
  3. Երբ տեղադրումը սկսվի, դուք կտեսնեք որը ձեզ կուղեկցի տեղադրման գործընթացում:


    Malwarebytes Anti-Malware-ը ձեր մեքենայի վրա տեղադրելու համար, շարունակեք հետևել հրահանգներինսեղմելով « Հաջորդը» կոճակը:

  4. Տեղադրվելուց հետո Malwarebytes Anti-Malware-ը ավտոմատ կերպով կսկսվի, և դուք կտեսնեք հաղորդագրություն, որում նշվում է, որ դուք պետք է թարմացնեք ծրագիրը, և որ ձեր համակարգում երբեք սկան չի իրականացվել: Համակարգի սկան սկսելու համար կարող եք սեղմել « Ուղղել այժմ» կոճակը:


    Որպես այլընտրանք, կարող եք սեղմել « Սկանավորել«ներդիր և ընտրիր» Սպառնալիքների սկանավորում«, ապա սեղմեք «Սկան հիմա»կոճակը։

  5. Malwarebytes Anti-Malware-ն այժմ կստուգի թարմացումների առկայությունը, և եթե այդպիսիք կան, ապա ձեզ հարկավոր է սեղմել « Թարմացրեք հիմա» կոճակը:

  6. Malwarebytes Anti-Malware-ն այժմ կսկսի սկանավորել ձեր համակարգիչը start-search.com վիրուսի համար: Երբ Malwarebytes Anti-Malware-ը սկանավորում է, այն նման կլինի ստորև ներկայացված պատկերին:

  7. Երբ սկանավորումն ավարտվի, այժմ ձեզ կներկայացվի էկրան, որը ցույց է տալիս չարամիտ վարակները, որոնք հայտնաբերել է Malwarebytes’ Anti-Malware-ը: Վնասակար ծրագրերը հեռացնելու համար, որոնք գտել է Malwarebytes Anti-malware, սեղմեք « Կարանտին բոլորին» կոճակը, այնուհետև սեղմեք « Դիմեք հիմա» կոճակը:


    Խնդրում ենք նկատի ունենալ, որ հայտնաբերված վարակները կարող են տարբերվել նկարում ցուցադրվածից:
  8. Malwarebytes Anti-Malware-ն այժմ կարանտինի կմատուցի իր հայտնաբերած բոլոր վնասակար ֆայլերը և ռեեստրի բանալիները: Ֆայլերը հեռացնելիս Malwarebytes Anti-Malware-ը կարող է պահանջել վերաբեռնում՝ դրանցից մի քանիսը հեռացնելու համար: Եթե ​​այն ցուցադրում է հաղորդագրություն այն մասին, որ այն պետք է վերագործարկի ձեր համակարգիչը, թույլ տվեք դա անել:


    Ձեր համակարգիչը վերագործարկվելուց հետո դուք պետք է բացեք Malwarebytes Anti-Malware-ը և կատարեք ևս մեկ «Ստանավորում սպառնալիքների» համար՝ ստուգելու համար, որ սպառնալիքներ չկան:

ՔԱՅԼ 5. Կրկնակի ստուգեք start-search.com վարակի համար HitmanPro-ի միջոցով

HitmanPro-ն երկրորդ կարծիքի սկաներ է, որը նախագծված է ձեր համակարգիչը փրկելու չարամիտ ծրագրերից (վիրուսներ, տրոյաններ, rootkits և այլն), որոնք վարակել են ձեր համակարգիչը՝ չնայած ձեր ձեռնարկած անվտանգության բոլոր միջոցներին (օրինակ՝ հակավիրուսային ծրագրեր, firewalls և այլն): HitmanPro-ն նախագծված է աշխատելու գոյություն ունեցող անվտանգության ծրագրերի կողքին՝ առանց որևէ հակասության: Այն արագ սկանավորում է համակարգիչը (5 րոպեից պակաս) և չի դանդաղեցնում համակարգիչը։

Ներածություն

Balsa համակարգը, որը հիմնված է Linux-ի Xubuntu 10.04 (լուցիդ) տարբերակի վրա, հասանելի է որպես բետա ծրագրակազմ օգտագործելու համար: Այս էջը պատմում է ձեզ, թե ինչ է ձեզ անհրաժեշտ Balsa-ն ներբեռնելու և գործարկելու համար, այնուհետև ցույց է տալիս հրահանգները, թե ինչպես դա անել:

Համակարգչով աշխատելու համար Balsa-ն օգտագործում է SD քարտ: SD քարտը պետք է ունենա Balsa համակարգ, նախքան այն օգտագործելու համար Balsa-ն:

Դուք կարող եք արտադրել Balsa SD քարտ մեկ համակարգչի վրա և գործարկել այն մեկ այլ համակարգչի վրա: Համակարգիչը, որի վրա այն արտադրում եք, պարտադիր չէ, որ ինքը աշխատի Balsa-ն:

Այն, ինչ ձեզ հարկավոր է Բալսան վարելու համար

Balsa-ն գործարկելու համար ձեզ հարկավոր է հետևյալը.

Balsa SD քարտը արտադրելու համար համակարգչին, որի վրա այն արտադրում եք, կպահանջվի 5 կամ 9 գիգաբայթ տարածք, մինչ քարտը կառուցվում է:

Նշում SD քարտ ընթերցողների մասին

Որոշ հին նոթբուքերի վրա SD ընթերցիչը չի կարող աշխատել 4 կամ 8 գիգաբայթանոց SD քարտով: Որոշ Dell Համակարգիչների կողմից օգտագործվող SD քարտի այլ ընթերցիչներ չեն աշխատում Balsa համակարգի հետ: Այս դեպքերից որևէ մեկում Balsa-ն կարող է գործարկվել առանձին USB SD քարտի ընթերցիչով:

Balsa SD քարտերը գալիս են 4 կամ 8 գիգաբայթանոց տարբերակներով: Ցանկացած տարբերակ կարող է պատրաստվել ինչպես Windows, այնպես էլ Linux սարքի վրա: Ե՛վ Windows-ը, և՛ Linux-ը օգտագործում են նույն ներբեռնված ֆայլը քարտի համար, և կառուցված քարտը նույնական կլինի մյուս համակարգի վրա գտնվող մեկին: Ընտրեք դրանցից մեկը:

PHP-ն ապահովում է մի քանի գործառույթ, որոնք փնտրում են մեկ տող մյուսի մեջ: Ոմանք վերադարձնում են գտնված տողի գտնվելու վայրը (strpos, strrpos և հարակից), և վերադարձնում են սկզբնական տողի մի մասը (strstr և strrchr): Որոնման գործառույթները վերադարձնում են false, եթե ձեր որոնվող տողը չի գտնվել բնօրինակում:

Եթե ​​ձեր նպատակն է պարզապես որոշել, թե արդյոք մի տող գոյություն ունի մյուսի ներսում, ապա ամենաարդյունավետ տարբերակը strpos-ն է:

ստրպոս

strpos ֆունկցիան որոնում է իր առաջին տողային արգումենտը երկրորդի համար և վերադարձնում է տողի մեջ առաջին համընկնման զրոյական ինդեքսի տեղը, կամ false, եթե այն չի գտնվել: Հետևյալ օրինակը ցույց է տալիս.

$str = ; // որոնել «անհրաժեշտության» առաջին հայտնվելը $str-ում$pos = strpos($str, «կարիք»); // ցուցադրել $pos-ի տեսակը և արժեքը var_dump ($pos) ; // int (3)

Թեև մենք ցույց տվեցինք արդյունքը վերևում օգտագործելով var_dump, strpos-ի վերադարձի արժեքի տիպիկ հետազոտությունը կատարվում է հետևյալ կերպ.

// ինչպես ստուգել strpos-ի վերադարձի արժեքը ($pos) if ($pos !== false) ( // եթե որոնման տողը գտնվել է echo "found it at location $pos" ;) else (echo "չի գտնվել" ;)

Համոզվեք, որ օգտագործեք === կամ !== օպերատորները strpos ֆունկցիայի վերադարձի արժեքը false-ի համեմատելու համար: Եթե ենթատողը գտնվի տողի սկզբում, strpos-ը կվերադարձնի 0, որը == կամ != օպերատորները: կվերածվեր կեղծի:

Դուք կարող եք սահմանել օֆսեթ՝ տողի սկզբից որոշակի թվով նիշերի որոնումը սկսելու համար, ինչպես ցույց է տալիս այս օրինակը.

/* strpos արգումենտներ.$pos = strpos ($str, «պետք է», 10); // 20

10-րդ նիշից որոնումը սկսելիս ստացվում է 20, ասեղ բառի սկզբի ցուցիչի գտնվելու վայրը։

ստրրպոս

Strrpos ֆունկցիան գտնում է ենթալարի վերջին հայտնվելու դիրքը տողի մեջ.

// տողի օրինակ՝ որոնման համար օգտագործելու համար$str = «Մենք պետք է ասեղը գտնենք խոտի դեզում»։; // գտնել «անհրաժեշտության» վերջին առաջացման վայրը $str$pos = strrpos ($str, «պետք է»); // 20

Strrpos ֆունկցիան նաև տրամադրում է կամընտիր օֆսեթ պարամետր, որը կարող է լինել կամ դրական կամ բացասական: Եթե ​​օֆսեթը դրական է, ապա տողի սկզբում նշված թվով նիշերը կբացառվեն որոնումից: Դիտարկենք հետևյալ օրինակը.

// որոնել աջից «Մենք»-ի համար՝ բացառելով առաջին 3 նիշերը$pos = strrpos ($str, «Մենք», 3); var_dump ($pos) ; //bool(կեղծ)

Արդյունքը կեղծ է, քանի որ «Մենք» չի գտնվել, երբ որոնումը բացառում է առաջին երեք նիշերը:

Եթե ​​օֆսեթը բացասական է, ապա տողի վերջում գտնվող շատ նիշերը բացառվում են որոնումից: Մենք ցույց ենք տալիս երկու որոնումներով, որոնք նշում են բացասական փոխհատուցում.

// որոնել աջից «hay»-ի համար՝ չհաշված վերջին 5 նիշերը$pos = strrpos ($str , "hay" , - 5 ); // int(34) // որոնել աջից՝ չհաշված վերջին 10 նիշերը$pos = strrpos ($str , "hay" , - 10 ); //bool(կեղծ)

Վերևի վերջին արդյունքը կեղծ է, քանի որ «հայ» չի գտնվել, երբ որոնումը բացառում է վերջին 10 նիշերը:

Ուշադրություն դարձրեք, որ strrpos ֆունկցիայի վերադարձի արժեքը ցույց է տալիս գտնվելու վայրը տողի սկզբից, չնայած որոնումը սկսվում է աջից:

stripos եւ stripos

strpos և strrpos ֆունկցիաները կատարում են մեծատառերի զգայուն որոնումներ: PHP-ն ապահովում է stripos և strripos ֆունկցիաներ՝ մեծատառերի անզգույշ որոնումներ կատարելու համար: Նրանք աշխատում են ճիշտ այնպես, ինչպես իրենց մեծատառերի համարժեքները.

// տողի օրինակ՝ որոնման համար օգտագործելու համար$str = «Մենք պետք է ասեղը գտնենք խոտի դեզում»։; // կատարեք «մենք»-ի որոնում$pos = stripos ($str, «մենք»); // int (0) // «Անհրաժեշտ է» որոնել աջից$pos = strripos ($str, «Անհրաժեշտ է»); // int (20)

«Մենք» բառի անզգայուն որոնումը հանգեցնում է 0-ի, ինչը ցույց է տալիս, որ այն գտնվել է մեր որոնվող տողի սկզբում: «Անհրաժեշտ է» որոնումը աջից (օգտագործելով strripos), գտնում է այն 20-րդ տեղում:

փող

strstr ֆունկցիան որոնում է առաջին տողային փաստարկը երկրորդի համար: Եթե ​​երկրորդը գտնվի առաջինի մեջ, strstr-ը վերադարձնում է սկզբնական տողի հատվածը՝ սկսած առաջին հայտնաբերված երևույթից մինչև տողի վերջը:

// օրինակ տող $str = «Մենք պետք է ասեղը գտնենք խոտի դեզում»։; // որոնել «the»-ը $str-ում $newstr = strstr ($str, «the»): var_dump ($newstr) ; // string(27) «the haystack in the needle».

strstr ֆունկցիան վերադարձնում է իր գտած առաջին «the»-ը՝ սկզբնական տողի մնացած մասի հետ միասին:

Եթե ​​strstr-ին որպես երրորդ արգումենտ փոխանցեք true, սկզբնական տողի հատվածը նախքանգտնված տողը վերադարձվում է՝

// pass true՝ $str-ի մասը «the»-ից առաջ վերադարձնելու համար$newstr = strstr ($str, «the», ճշմարիտ); var_dump ($newstr) ; // string(16) «Մենք պետք է գտնենք»

Այս անգամ strstr ֆունկցիան վերադարձնում է ամեն ինչ տողի առաջին «the»-ից առաջ:

PHP-ն տրամադրում է նաև stristr ֆունկցիան, որն աշխատում է ճիշտ այնպես, ինչպես strstr-ը, բացառությամբ, որ այն կատարում է մեծատառերի անզգայուն որոնում:

strhrchr

strrchr ֆունկցիան աջից որոնում է առաջին տողային արգումենտը այն նիշի համար, որը մենք նշում ենք երկրորդ արգումենտում: Ֆունկցիան վերադարձնում է տողի հատվածը այդ գրանշանի հայտնաբերված օրինակի տեղից մինչև տողի վերջ.

// օրինակ տող $str = «Մենք պետք է ասեղը գտնենք խոտի դեզում»։; // աջից որոնել «s»-ը $str-ում$newstr = strstr ($str, "s"); var_dump ($newstr) ; // string(6) "stack."

Ուշադրություն դարձրեք, որ ի տարբերություն strstr-ի, եթե երկրորդ արգումենտը բաղկացած է մի քանի նիշերից, ապա օգտագործվում է միայն առաջինը.

// փորձարկում բազմանիշ երկրորդ արգումենտով$newstr = strrchr ($str, «the»); var_dump ($newstr) ; // string(5) "tack."

«The haystack» վերադարձնելու փոխարեն strrchr ֆունկցիան վերադարձնում է «tack»՝ որոնման մեջ կիրառելով երկրորդ արգումենտի միայն առաջին տառը:

Բարև, Հաբր:

Այսօր ես կցանկանայի ծանոթացնել նորեկ վեբ-վարպետներին PHP-ում ելքային բուֆերավորումն օգտագործելու մի շարք կոկիկ եղանակներով: Փորձառու վեբ վարպետները դժվար թե այստեղ որևէ օգտակար բան գտնեն: Չնայած - ով գիտի:

Ինչպես բոլորդ գիտեք, php-ում ելքային բուֆերավորումը վերահսկվում է «ob_»-ով սկսվող մի շարք գործառույթներով: Դրանցից ամենակարեւորը ob_start-ն է։ Երբ գործարկվում է, այն հավաքում է հետագա արդյունքը, այսինքն՝ բոլոր տեսակի print(), echo և այլն, որոնք այնուհետև տրվում են այցելուին html էջի տեսքով։ Եվ եթե մենք սկսեցինք բուֆերացնել նախքան ելքը, ապա մենք վերջապես կարող ենք ինչ-որ բան անել այս գրեթե պատրաստ էջի հետ:


Օրինակ, մենք ցանկանում ենք զտել արտաքին կայքերի բոլոր հղումները:

Մեր ֆորումը, որը հին է, որքան Ավստրալոպիթեկի կացինը, լի է բազմաթիվ սպամերներով, որոնք այցելուներին հրապուրում են անառակությամբ, միակողմանի ավազակներով և քաղաքական աժիոտաժով լի վայրեր: Մենք կարող ենք օգտագործել js-ը հետևելու միջոցով, բայց փոխարենը ցանկանում ենք փոխել այս բոլոր հղումները այսպես.

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

Մեթոդը գուցե ամենաարդյունավետը չէ, բայց արդյունավետ է։ Մենք գրել ենք redirect.php ֆիլտրով և սև ցուցակով, և այժմ մենք պետք է փոխարկենք ֆորումի հազարավոր էջերի բոլոր հղումները։ Օգտագործելով ob_start և մի քանի կանոնավոր արտահայտություններ, մենք կարող ենք դա անել ընդամենը մի քանի տողում.

f_callback ($բուֆեր) ($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);

Այժմ, ներառելով այս կոդը index.php-ի սկզբում կամ մեկ այլ ֆայլ, որին սերվերը մուտք է գործում էջերը դիտելիս, մենք կստանանք այն, ինչ մեզ անհրաժեշտ է:

Այս կերպ փոխելով բովանդակությունը՝ մենք չենք սահմանափակվում շարժիչի մեթոդներով։ Սա կարող է շատ արժեքավոր լինել: Օրինակ, դուք կարող եք ավելացնել plugin.

Generator_plugin() ( /*generate something*/ ) ֆունկցիան f_callback($buffer)( /*...*/ $buffer = str_replace ("",generate_plugin(),$buffer);/*...*/ return $buffer;) ob_start("f_callback");

Հիմա, որտեղ ավելացրել ենք բովանդակությունը, կհայտնվի այն, ինչ ուզում էինք։ Հավելվածներից մեկը js վիդջեթի տեղադրումն է կայքի էջում: Օրինակ, Yandex քարտեզները: Սովորաբար դա դժվար չէ, բայց երբեմն վատ գրված վեբկայքի էջի խմբագրիչը խուսափում է մեջբերումներից և գանգուր փակագծերից՝ կոտրելով վիդջեթը: Ինչպես տեսնում եք, այս խնդիրը հեշտությամբ լուծվում է։

Ելքային բուֆերի հետ աշխատելու PHP գործիքների հավաքածուն հարուստ է և չի սահմանափակվում միայն ob_start-ով: Վերը նկարագրված մեթոդները որոշ դեպքերում չափազանց ռեսուրսներ են պահանջում և ծանրաբեռնված, քանի որ դրանք գործում են ամբողջ էջի վրա: Մենք կարող ենք մշակել դրա միայն մի մասը՝ ձևանմուշում փաթաթան ստեղծելով մի բանի սերնդի շուրջ, որը մենք չենք ուզում մտնել, բայց դա անպայման պետք է ուղղել.

(ՍՏԵՂԾԵՔ ՄԵԾ ԽԵՆԹ ԲԱՆ)

Դուք երևի արդեն նկատել եք այս բոլոր արտահայտությունները. «Ես չեմ ուզում մտնել դրա մեջ», «Տիրանոզավրի աթոռի պես հնագույն», «ծուռ գրված խմբագիր»... Իդեալական աշխարհում ելքային բուֆերի շուրջ կեղևներն են. անհրաժեշտ չէ. Այն ամենը, ինչ կարելի է անել ob_start-ով, տեսականորեն կարելի է անել առանց դրա: Այս տեխնիկան երբեմն շփոթություն է առաջացնում նախագծի կոդի մեջ, շատերը դրա իմաստը տեսնում են միայն ելքը սեղմման համար ob_gzhandler ուղարկելու մեջ և համարում են դրա օգտագործումը այլ դեպքերում վտանգավոր: Բայց հաճախ դուք պարզապես չեք կարող անել առանց ելքային հսկողության:

Հատկապես, եթե չես ուզում խորանալ:

(PHP 4, PHP 5, PHP 7)

ob_start — Միացնել ելքային բուֆերացումը

Նկարագրություն

Բուլ ob_start ([ կանչելի$output_callback = ԴԱՏԱՐԿ [, int $chunk_size = 0 [, int $ դրոշներ = PHP_OUTPUT_HANDLER_STDFLAGS ]]])

Այս ֆունկցիան հնարավորություն է տալիս ելքային բուֆերավորումը: Եթե ​​ելքային բուֆերավորումն ակտիվ է, սկրիպտի ելքը չի ուղարկվում (բացի վերնագրերից), այլ պահվում է ներքին բուֆերում:

Այս ներքին բուֆերի բովանդակությունը կարելի է պատճենել տողային փոփոխականում՝ օգտագործելով ob_get_contents(). Ներքին բուֆերի բովանդակությունը դուրս բերելու համար դուք պետք է օգտագործեք ob_end_flush(). Որպես այլընտրանք կարող եք օգտագործել ob_end_clean ()ոչնչացնել բուֆերի պարունակությունը:

Ուշադրություն

Որոշ վեբ սերվերներ (օրինակ՝ Apache) փոխում են սկրիպտի աշխատանքային գրացուցակը, երբ կանչվում է հետադարձ կապ ֆունկցիան։ Դուք կարող եք վերադարձնել այն օգտագործելով chdir(dirname($_SERVER["SCRIPT_FILENAME"]))հետ կանչի գործառույթում:

Ելքային բուֆերները դրվում են կույտի վրա, ինչը նշանակում է, որ զանգերը թույլատրվում են ob_start ()մեկ այլ ակտիվի զանգահարելուց հետո ob_start (). Այս դեպքում անհրաժեշտ է զանգահարել ob_end_flush()համապատասխան քանակությամբ անգամ: Եթե ​​հետադարձ զանգի մի քանի ֆունկցիաներ ակտիվ են, ելքը հաջորդաբար զտվում է դրանցից յուրաքանչյուրի համար՝ բույնի հերթականությամբ:

Պարամետրերի ցանկ

Կարող է նշվել կամընտիր output_callback պարամետր: Այս ֆունկցիան ընդունում է տողը որպես արգումենտ և պետք է նաև վերադարձնի տող: Այն կոչվում է վերականգնում (ուղարկել) կամ մաքրում (օգտագործելով ob_flush (), ob_clean ()կամ նմանատիպ գործառույթներ) կամ եթե ելքային բուֆերը լցվում է զննարկիչին հարցման վերջում: Երբ output_callback ֆունկցիան կանչվում է, այն ստանում է բուֆերի բովանդակությունը և պետք է վերադարձնի թարմացված բովանդակությունը, որպեսզի ելքային բուֆերը ուղարկվի դիտարկիչ: Եթե ​​output_callback-ը վավեր ֆունկցիա չէ, ապա փաստաթղթավորված ֆունկցիան կվերադառնա ՍՈՒՏ. Այս պարամետրի ֆունկցիայի նկարագրությունը.

Լարային կարգավորող (տող $բուֆեր [, int $ փուլ ])

Բուֆեր Ելքային բուֆերի պարունակությունը:փուլ հաստատունների բիտ դիմակ PHP_OUTPUT_HANDLER_*.

Եթե ​​վերադառնում է output_callback ՍՈՒՏ, ապա սկզբնական տեղեկատվությունը առանց փոփոխությունների կուղարկվի դիտարկիչ։

Արժեքը փոխանցելով կարելի է անտեսել output_callback պարամետրը ԴԱՏԱՐԿ.

ob_end_clean (), ob_end_flush(), ob_clean (), ob_flush ()Եվ ob_start ()չի կարող կանչվել հետադարձ կապ գործառույթներից, քանի որ դրանց վարքն անկանխատեսելի է: Եթե ​​ցանկանում եք ջնջել բուֆերի բովանդակությունը, ապա վերադարձրեք «» (դատարկ տող) հետ կանչելու ֆունկցիայից։ Դուք նույնպես չեք կարող զանգահարել գործառույթներ print_r ($արտահայտություն, ճշմարիտ)կամ highlight_file ($filename, true)ելքային բուֆերային հետ կանչի գործառույթներից:

Մեկնաբանություն:

PHP 4.0.4-ում ֆունկցիան ob_gzhandler ()ներկայացվել է սեղմված վեբ էջերին աջակցող վեբ բրաուզերներին gz կոդավորված տվյալներ ուղարկելը հեշտացնելու համար: ob_gzhandler ()որոշում է բրաուզերի կողմից ընդունված բովանդակության կոդավորման տեսակը և համապատասխանաբար վերադարձնում է արդյունքը:

chunk_size

Եթե ​​կամընտիր chunk_size պարամետրը փոխանցվի, ապա բուֆերը կմաքրվի chunk_size-ից մեծ կամ հավասար ցանկացած ելքից հետո: Կանխադրված արժեք 0 նշանակում է, որ ելքային ֆունկցիան կկանչվի, երբ բուֆերը փակվի:

Մինչև PHP 5.4.0, արժեքը 1 հատուկ արժեք էր, որը սահմանում էր պարամետրը chunk_size 4096-ին։

Դրոշների պարամետրը բիտդիմակ է, որը վերահսկում է ելքային բուֆերի վրա կատարվող գործողությունները: Լռելյայնորեն այն թույլ է տալիս ելքային բուֆերը լվանալ, լվանալ և ջնջել, ինչը նույնն է, ինչ | | , կամ PHP_OUTPUT_HANDLER_STDFLAGSորպես այս համադրության հապավումը:

Յուրաքանչյուր դրոշակ վերահսկում է մի շարք գործառույթների հասանելիությունը, ինչպես նկարագրված է ստորև.

Մշտական Գործառույթներ
PHP_OUTPUT_HANDLER_CLEANABLE ob_clean (), ob_end_clean (), Եվ ob_get_clean().
PHP_OUTPUT_HANDLER_FLUSHABLE ob_end_flush(), ob_flush (), Եվ ob_get_flush().
PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean (), ob_end_flush(), Եվ ob_get_flush().

Վերադարձի արժեքներ

Վերադարձնում է ՃԻՇՏհաջող ավարտից հետո կամ ՍՈՒՏսխալի դեպքում.

Փոփոխությունների ցանկ

Տարբերակ Նկարագրություն
7.0.0 Եթե ob_start ()օգտագործված ելքային բուֆերային հետ կանչելու ֆունկցիայի ներսում, այս ֆունկցիան այլևս սխալ չի առաջացնի E_ՍԽԱԼ, բայց փոխարենը կզանգահարի E_RECOVERABLE_EROR, թույլ տալով երրորդ կողմի սխալ մշակողներին բռնել այն:
5.4.0 Երրորդ պարամետր ob_start ()փոխվել է բուլյանից ( բուլյանջնջել պարամետրի (որը, երբ սահմանված է ՍՈՒՏկանխեց բուֆերի ջնջումը մինչև սկրիպտի ավարտը) մինչև ամբողջ թիվ ( ամբողջ թիվ) դրոշների պարամետր: Ցավոք, սա նշանակում է API-ի անհամատեղելիություն կոդի համար, որն օգտագործում էր երրորդ պարամետրը մինչև PHP 5.4.0: Տեսեք դրոշների օրինակը՝ հասկանալու համար, թե ինչպես աշխատել կոդի հետ, որպեսզի այն համատեղելի լինի երկու տարբերակների հետ:
5.4.0 Պարամետր chunk_size, տեղադրված է 1 , այժմ արդյունքում ստացվում է 1 բայթ ելքային բուֆեր:
4.3.2 Ֆունկցիան կվերադառնա ՍՈՒՏայն դեպքում, երբ output_callback-ը հնարավոր չէ կատարել:

Օրինակներ

Օրինակ #1 Օգտատիրոջ կողմից սահմանված հետադարձ զանգի ֆունկցիայի օրինակ

Գործառույթի հետ կանչում ($buffer)
{
// փոխարինել բոլոր խնձորները նարինջով
վերադարձ (str_replace ("խնձոր", "նարնջագույն", $բուֆեր));
}

Ob_start («վերադարձ զանգ»);

?>


Դա նման է խնձորի և նարինջի համեմատությանը:






ob_end_flush();