Ob_start - Chiqish buferlashni yoqish. Php loyihalarini qo'llab-quvvatlashda ob_start dan foydalanish Yomon qidiruv php start

Qidiruvni boshlang boshqa bepul yuklab olishlar orqali targ'ib qilinadigan brauzer o'g'irlovchisi bo'lib, o'rnatilgandan so'ng u brauzeringizning bosh sahifasini o'zgartiradi. start-search.com search.yahoo.com.

start-search.com bosh sahifasi qidiruv natijalarida reklama va homiylik havolalarini ko'rsatadi va qidiruv so'rovlaringizdan qidiruv so'zlarini to'plashi mumkin. Start-search.com o'g'irlanishi, qora xat SEO-dan foydalanishda bo'lgani kabi, qidiruv natijalarida saytning sahifalar reytingini oshirish uchun reklama daromadini oshirish uchun ishlatiladi.

Qidiruvni boshlang, bu texnik jihatdan virus emas, lekin u operatsion tizimga chuqur kirish uchun rootkit imkoniyatlari, brauzerni o'g'irlash va umuman foydalanuvchi tajribasiga xalaqit berish kabi ko'plab zararli xususiyatlarni namoyish etadi. Sanoat odatda uni "PUP" yoki potentsial kiruvchi dastur deb ataydi.
Qidiruvni boshlash - bu Internet Explorer (BHO) va Firefox/Chrome (plagin) uchun reklama bilan qoʻllab-quvvatlanadigan (foydalanuvchilar qoʻshimcha banner, qidiruv, qalqib chiquvchi oyna, qalqib chiquvchi oyna, interstitsial va matn ichidagi havolalar reklamalarini koʻrishlari mumkin) va Internet Explorer (BHO) va Firefox/Chrome uchun oʻzaro veb-brauzer plaginidir. o'rnatish vaqtida turli xil monetizatsiya platformalari orqali tarqatiladi. Brauzer kengaytmasi brauzerning standart yoki moslashtirilgan sozlamalarini o'zgartiradigan turli funktsiyalarni o'z ichiga oladi, shu jumladan bosh sahifa, qidiruv sozlamalari va ba'zi hollarda Internet Explorer-ning yuklash vaqti chegarasini o'zgartiradi, raqobatchi dasturiy ta'minot sozlamalarini o'zgartirishiga yo'l qo'ymaslik uchun Firefox-ga blokirovka faylini joylashtiradi. shuningdek, plaginning saytlararo skriptlarini yaratishga ruxsat berish uchun brauzerning Kontent xavfsizligi siyosatini o'chirib qo'ying.

Kompyuteringizga ushbu brauzer o'g'irlovchisini o'rnatishda birlashtirilgan bepul dasturiy ta'minotni (videoyozuv/striming, yuklab olish menejerlari yoki PDF yaratuvchilari) o'rnatganingizdan so'ng, Qidiruv bosh sahifasini ishga tushiring.
Masalan, VPlay-ni o'rnatganingizda, brauzeringizning bosh sahifasini o'zgartirishga ham rozilik bildirasiz start-search.com va standart qidiruv tizimi search.yahoo.com


Biroq, VPlay-ni kompyuteringizdan olib tashlaganingizda, veb-brauzeringizning standart sozlamalari tiklanmaydi. Bu sizning sevimli veb-brauzeringizdan start-search.com bosh sahifasini qo'lda olib tashlashingiz kerakligini anglatadi.

Sen ... kerak dasturiy ta'minotni o'rnatishda doimo e'tibor bering chunki ko'pincha dasturiy ta'minot o'rnatuvchisi ixtiyoriy o'rnatishlarni o'z ichiga oladi, masalan, start-search.com brauzerini o'g'irlash. O'rnatishga rozi bo'lgan narsaga juda ehtiyot bo'ling.
Har doim maxsus o'rnatishni tanlang va tanish bo'lmagan har qanday narsani, ayniqsa siz hech qachon yuklab olish va o'rnatishni xohlamagan ixtiyoriy dasturlarni tanlang. O'zingiz ishonmaydigan dasturlarni o'rnatmasligingiz kerakligi o'z-o'zidan ma'lum.

start-search.com ni qanday o'chirish mumkin (Virusni o'chirish bo'yicha qo'llanma)

Ushbu sahifa toʻliq qoʻllanma boʻlib, start-search.com saytini Internet Explorer, Firefox va Google Chrome brauzeridan olib tashlaydi.
Iltimos, barcha amallarni to'g'ri tartibda bajaring. Agar sizda biron bir savol yoki shubha bo'lsa, STOP va bizdan yordam so'rang.




1-QADAM: start-search.com zararli dasturlarini kompyuteringizdan olib tashlang

Ushbu birinchi qadamda biz kompyuteringizga o'rnatilishi mumkin bo'lgan har qanday zararli dasturni aniqlash va o'chirishga harakat qilamiz.

Agar start-search.com dasturini o'chirishda muammolarga duch kelsangiz, ushbu kiruvchi dasturni kompyuteringizdan butunlay olib tashlash uchun foydalanishingiz mumkin.

2-QADAM: start-search.com virusini Internet Explorer, Firefox va Google Chrome brauzeridan olib tashlang

Start-search.com virusini Internet Explorer-dan olib tashlang

Internet Explorer sozlamalarini kompyuteringizga birinchi marta Internet Explorer o'rnatilganda bo'lgan holatga qaytarish uchun qayta o'rnatishingiz mumkin.

Mozilla Firefox-dan start-search.com virusini olib tashlang

Firefox bilan bog'liq muammolarga duch kelsangiz, uni qayta o'rnatish yordam berishi mumkin. Qayta tiklash tuzatish Firefox-ni zavod sozlamalariga qaytarish orqali ko'plab muammolarni o'z ichiga oladi, shu bilan birga xatcho'plar, parollar, veb-shaklni avtomatik to'ldirish ma'lumotlari, ko'rib chiqish tarixi va ochiq yorliqlar kabi muhim ma'lumotlarni saqlaydi.

Eslatma: Sizning eski Firefox profilingiz ish stolingizda “ nomli papkaga joylashtiriladi. Eski Firefox ma'lumotlari“. Qayta tiklash muammoingizni hal qilmasa, fayllarni yaratilgan yangi profilga nusxalash orqali saqlanmagan ma'lumotlarning bir qismini tiklashingiz mumkin. Agar sizga bu jild endi kerak bo'lmasa, uni o'chirib tashlashingiz kerak, chunki unda nozik ma'lumotlar mavjud.

Google Chrome brauzeridan start-search.com virusini olib tashlang

3-QADAM: AdwCleaner yordamida start-search.com brauzerini o'g'irlovchini olib tashlang

AdwCleaner yordam dasturi kompyuteringiz va veb-brauzeringizni "start-search.com" zararli fayllari, brauzer kengaytmalari va ro'yxatga olish kitobi kalitlari uchun skanerdan o'tkazadi, ular sizga xabarsiz kompyuteringizga o'rnatilgan bo'lishi mumkin.

4-QADAM: Malwarebytes Anti-Malware Free bilan start-search.com virusini kompyuteringizdan olib tashlang

Malwarebytes Anti-Malware Free zararli dasturlarning barcha izlarini, jumladan qurtlar, troyanlar, rootkitlar, rogues, dialers, josuslik dasturlari va boshqalarni aniqlash va yo'q qilish uchun sanoatning etakchi texnologiyasidan foydalanadi.
Shuni ta'kidlash kerakki, Malwarebytes Anti-Malware yaxshi ishlaydi va antivirus dasturlari bilan ziddiyatsiz ishlashi kerak.

  1. Yuklab olishingiz mumkin Malwarebytes Anti-Malware-ni yuklab oling quyidagi havoladan.
    (Ushbu havola yangi veb-sahifani ochadi, u erda siz Malwarebytes Anti-Malware bepul yuklab olishingiz mumkin)
  2. Yuklab olingandan so'ng, barcha dasturlarni yoping, so'ngra ish stolingizdagi "" deb nomlangan belgini ikki marta bosing. mbam-setup-consumer-2.00.xx” Malwarebytes Anti-Malware dasturini o'rnatishni boshlash uchun.

    Siz ushbu faylni ishga tushirishni xohlaysizmi, deb so'ragan "Foydalanuvchi hisobini boshqarish" dialog oynasi paydo bo'lishi mumkin. Agar bu sodir bo'lsa, "bosishingiz kerak" Ha oʻrnatishni davom ettirish uchun ” tugmasini bosing.
  3. O'rnatish boshlanganda, siz ko'rasiz o'rnatish jarayonida sizga yo'l-yo'riq ko'rsatadi.


    Mashinangizga Malwarebytes Anti-Malware o'rnatish uchun, ko'rsatmalarga rioya qilishni davom eting tugmasini bosish orqali Keyingisi” tugmasi.

  4. O'rnatilgandan so'ng, Malwarebytes Anti-Malware avtomatik ravishda ishga tushadi va siz dasturni yangilashingiz kerakligi va tizimingizda hech qachon skanerdan o'tkazilmaganligi haqida xabarni ko'rasiz. Tizimni skanerlashni boshlash uchun " tugmasini bosing. Hozir tuzating” tugmasi.


    Shu bilan bir qatorda, "bosishingiz mumkin. Skanerlash"tab va tanlang" Tahdid skanerlash", so'ng ustiga bosing "Hozir skanerlash" tugmasi.

  5. Malwarebytes Anti-Malware endi yangilanishlarni tekshiradi va agar ular mavjud bo'lsa, " tugmasini bosishingiz kerak bo'ladi. Hozir yangilash” tugmasi.

  6. Malwarebytes Anti-Malware endi kompyuteringizni start-search.com virusi uchun skanerlashni boshlaydi. Malwarebytes Anti-Malware skanerlashda u quyidagi rasmga o'xshaydi.

  7. Tekshirish tugallangandan so'ng, sizga Malwarebytes Anti-Malware aniqlagan zararli dastur infektsiyalari ko'rsatilgan ekran paydo bo'ladi. Malwarebytes Anti-malware topilgan zararli dasturlarni o'chirish uchun "" tugmasini bosing. Hammasini karantin” tugmasini bosing va keyin “ Hozir murojaat qiling” tugmasi.


    E'tibor bering, topilgan infektsiyalar rasmda ko'rsatilganidan farq qilishi mumkin.
  8. Malwarebytes Anti-Malware endi topilgan barcha zararli fayllar va ro'yxatga olish kitobi kalitlarini karantinga oladi. Fayllarni o'chirishda Malwarebytes Anti-Malware ulardan ba'zilarini olib tashlash uchun qayta ishga tushirishni talab qilishi mumkin. Agar u kompyuteringizni qayta ishga tushirishi kerakligi haqidagi xabarni ko'rsatsa, iltimos, bunga ruxsat bering.


    Kompyuteringiz qayta ishga tushirilgandan so'ng, siz Malwarebytes Anti-Malware dasturini ochishingiz va qolgan tahdidlar yo'qligiga ishonch hosil qilish uchun boshqa "Tahdidlarni skanerlash" ni amalga oshirishingiz kerak.

5-QADAM: HitmanPro bilan start-search.com infektsiyasini ikki marta tekshiring

HitmanPro ikkinchi fikr skaneri bo'lib, siz ko'rgan barcha xavfsizlik choralariga (masalan, antivirus dasturlari, xavfsizlik devorlari va boshqalar) qaramay, kompyuteringizni zararli dasturlardan (viruslar, troyanlar, rootkitlar va boshqalar) qutqarish uchun mo'ljallangan. HitmanPro hech qanday ziddiyatsiz mavjud xavfsizlik dasturlari bilan birga ishlashga mo'ljallangan. U kompyuterni tez tekshiradi (5 daqiqadan kam) va kompyuterni sekinlashtirmaydi.

Kirish

Linuxning Xubuntu 10.04 (aniq) versiyasiga asoslangan Balsa tizimi beta-dastur sifatida foydalanish uchun mavjud. Bu sahifa sizga Balsa-ni yuklab olish va ishga tushirish uchun nima kerakligini aytadi va keyin buni qanday qilish bo'yicha ko'rsatmalarga ishora qiladi.

Balsa kompyuterda ishlash uchun SD kartadan foydalanadi. SD-kartani Balsa-ni ishga tushirish uchun ishlatishdan oldin unga Balsa tizimi o'rnatilgan bo'lishi kerak.

Siz bitta kompyuterda Balsa SD kartasini ishlab chiqarishingiz va uni boshqa kompyuterda ishga tushirishingiz mumkin. Siz uni ishlab chiqaradigan kompyuter Balsa-ning o'zini ishga tushirishi shart emas.

Balsani ishga tushirish uchun nima kerak

Balsa-ni ishga tushirish uchun sizga quyidagilar kerak bo'ladi:

Balsa SD-kartasini ishlab chiqarish uchun siz uni ishlab chiqaradigan kompyuterga karta qurilayotganda 5 yoki 9 gigabayt bo'sh joy kerak bo'ladi.

SD-karta o'quvchilari haqida eslatma

Ba'zi eski noutbuklarda SD o'quvchi 4 yoki 8 gigabaytli SD-kartani ishlay olmaydi. Ba'zi Dell kompyuterlari tomonidan ishlatiladigan boshqa SD-kartani o'quvchi Balsa tizimi bilan ishlamaydi. Ushbu holatlarning har birida Balsa alohida USB SD-kartani o'quvchida ishga tushirilishi mumkin.

Balsa SD kartalari 4 yoki 8 gigabaytli versiyalarda keladi. Ikkala versiya ham Windows yoki Linux mashinasida yaratilishi mumkin. Windows ham, Linux ham karta uchun bir xil yuklab olingan fayldan foydalanadi va yaratilgan karta boshqa tizimdagi bilan bir xil bo'ladi. Shulardan birini tanlang.

PHP bir qatorni boshqa qatorda qidiradigan bir nechta funksiyalarni taqdim etadi. Ba'zilar topilgan satrning o'rnini qaytaradi (strpos , strrpos va tegishli) va asl satrning bir qismini qaytaradi (strstr va strrchr). Agar siz qidirayotgan satr asl nusxada topilmasa, qidiruv funktsiyalari noto'g'ri qiymatini qaytaradi.

Agar sizning maqsadingiz oddiygina bitta satr boshqasida mavjudligini aniqlash bo'lsa, eng samarali variant strpos .

strpos

Strpos funktsiyasi o'zining birinchi qator argumentini ikkinchisi uchun qidiradi va satr ichidagi birinchi moslikning nolga asoslangan indeks manzilini qaytaradi, agar topilmasa, noto'g'ri. Quyidagi misol ko'rsatadi:

$str = ; // $str ichida "ehtiyoj" so'zining birinchi takrorlanishini qidiring$pos = strpos($str, "kerak"); // displey turi va $pos qiymati var_dump ($pos); // int (3)

Natijani yuqorida var_dump yordamida ko'rsatgan bo'lsak ham, strpos uchun qaytarish qiymatining odatiy tekshiruvi quyidagicha amalga oshiriladi:

// strpos qaytish qiymatini qanday tekshirish mumkin ($pos) if ( $pos !== false ) ( // agar qidiruv satri topilsa echo "uni $pos manzilida topdim" ; ) else ( echo "topilmadi" ; )

Strpos funksiyasining qaytaruvchi qiymatini false bilan solishtirish uchun === yoki !== operatorlaridan foydalanganingizga ishonch hosil qiling. Agar pastki satr satr boshida topilsa, strpos 0 ni qaytaradi, bu esa == yoki != operatorlaridir. yolg'onga aylanadi.

Ushbu misolda ko'rsatilgandek, qator boshidan ma'lum miqdordagi belgilarni qidirishni boshlash uchun ofsetni belgilashingiz mumkin:

/* strpos argumentlari: * mavzu satri (aka haystack), qidiruv satri (igna), ofset (ixtiyoriy) */ // $str dagi 10-belgidan “ehtiyoj”ni qidirishni boshlash$pos = strpos ($str , "kerak" , 10 ); // 20

Qidiruvni 10-belgidan boshlaganda, natija 20, so'z ignasi boshlanishining indeks joyi.

strrpos

strrpos funksiyasi satrdagi pastki satrning oxirgi paydo bo'lish o'rnini topadi:

// qidiruvlar uchun foydalanish uchun misol qatori$str = "Biz ignani pichanzordan topishimiz kerak."; // $str da "ehtiyoj" so'nggi paydo bo'lgan joyni toping$pos = strrpos ($str , "kerak" ); // 20

strrpos funktsiyasi ijobiy yoki salbiy bo'lishi mumkin bo'lgan ixtiyoriy ofset parametrini ham ta'minlaydi. Agar ofset ijobiy bo'lsa, satr boshidagi belgilar soni qidiruvdan chiqarib tashlanadi. Quyidagi misolni ko'rib chiqing:

// birinchi 3 ta belgidan tashqari "Biz" ni o'ngdan qidiring$pos = strrpos ($str , "Biz" , 3 ); var_dump ($pos); //bool(noto'g'ri)

Natija noto'g'ri, chunki qidiruvda dastlabki uchta belgi chiqarib tashlanganda "Biz" topilmaydi.

Agar ofset salbiy bo'lsa, qator oxiridagi ko'plab belgilar qidiruvdan chiqarib tashlanadi. Biz salbiy ofsetni ko'rsatadigan ikkita qidiruv bilan ko'rsatamiz:

// oxirgi 5 ta belgidan tashqari "hay" ni o'ngdan qidiring$pos = strrpos ($str , "hay" , - 5 ); // int (34) // oxirgi 10 ta belgidan tashqari o'ngdan qidirish$pos = strrpos ($str , "hay" , - 10 ); //bool(noto'g'ri)

Yuqoridagi oxirgi natija noto'g'ri, chunki qidiruv so'nggi 10 ta belgini chiqarib tashlaganda "hay" topilmaydi.

E'tibor bering, strrpos funksiyasining qaytish qiymati, qidiruv o'ng tomondan boshlangan bo'lsa ham, satr boshidan joylashuvni beradi.

stripos va stripos

strpos va strrpos funksiyalari katta-kichik harflarni hisobga olgan holda qidiruvni amalga oshiradi. PHP katta-kichik harflarni sezmaydigan qidiruvlarni amalga oshirish uchun stripos va strripos funksiyalarini taqdim etadi. Ular xuddi katta-kichik harflarga sezgir ekvivalentlari kabi ishlaydi:

// qidiruvlar uchun foydalanish uchun misol qatori$str = "Biz ignani pichanzordan topishimiz kerak."; // "biz" ni katta-kichik harflarsiz qidirish$pos = stripos($str, "biz"); // int (0) // "Need" uchun o'ngdan katta-kichik harflarsiz qidiruvni amalga oshiring$pos = strripos($str, "Kerak"); // int (20)

"Biz" harfini hisobga olmaydigan qidiruv natijasida 0 , bu biz qidirayotgan qatorning boshida topilganligini bildiradi. O'ngdan "Need" ni katta-kichik harflarsiz qidirish (strripos yordamida), uni 20-joyda topadi.

strstr

strstr funktsiyasi birinchi qator argumentini ikkinchisi uchun qidiradi. Agar ikkinchisi birinchisida topilsa, strstr asl satrning birinchi topilgan hodisadan boshlab satr oxirigacha bo'lgan qismini qaytaradi.

// misol qatori $str = "Biz ignani pichanzordan topishimiz kerak."; // $str ichida "the" ni qidiring $newstr = strstr ($str , "the" ); var_dump ($newstr); // string(27) "pichandagi igna."

strstr funksiyasi asl satrning qolgan qismi bilan birga topilgan birinchi "the" ni qaytaradi.

Agar siz strstr ga uchinchi argument sifatida true ni o'tkazsangiz, asl satrning qismi oldin topilgan satr qaytariladi:

// $str ning "the" dan oldingi qismini qaytarish uchun true qiymatini kiriting.$newstr = strstr ($str , "the" , true ); var_dump ($newstr); // string (16) "Biz topishimiz kerak"

Bu safar strstr funksiyasi satrdagi birinchi "the" dan oldin hamma narsani qaytaradi.

PHP, shuningdek, strstr funksiyasini ham ta'minlaydi, u strstr bilan bir xil ishlaydi, bundan tashqari u katta-kichik harflarga sezgir bo'lmagan qidiruvni amalga oshiradi.

strhrchr

strrchr funksiyasi ikkinchi argumentda biz ko'rsatgan belgi uchun o'ngdan birinchi qator argumentini qidiradi. Funktsiya ushbu belgining topilgan nusxasi joylashgan joydan satrning oxirigacha bo'lgan satr qismini qaytaradi:

// misol qatori $str = "Biz ignani pichanzordan topishimiz kerak."; // $str ichida "s" ni o'ngdan qidiring$newstr = strstr ($str , "s" ); var_dump ($newstr); // string (6) "stack."

E'tibor bering, strstr dan farqli o'laroq, agar ikkinchi argument bir nechta belgilardan iborat bo'lsa, faqat birinchisi ishlatiladi:

// ko'p belgili ikkinchi argument bilan test$newstr = strrchr ($str , "the" ); var_dump ($newstr); // string(5) "tack."

"The pichan" ni qaytarish o'rniga, strrchr funktsiyasi "tack" ni qaytaradi va qidiruvga faqat ikkinchi argumentning birinchi harfini qo'llaydi.

Salom, Xabr!

Bugun men yangi boshlanuvchi webmasterlarni PHP da chiqish buferidan foydalanishning turli xil aniq usullari bilan tanishtirmoqchiman. Tajribali veb-ustalar bu erda foydali narsalarni topishlari dargumon. Garchi - kim biladi?

Barchangizga ma'lumki, php-da chiqish buferi "ob_" bilan boshlanadigan funktsiyalar to'plami tomonidan boshqariladi. Ulardan eng muhimi ob_start. Ishga tushirilganda, u keyingi chiqishlarni, ya'ni barcha turdagi print(), echo va hokazolarni to'playdi, keyin esa tashrif buyuruvchiga html sahifasi ko'rinishida beriladi. Va agar biz chiqishdan oldin buferlashni boshlagan bo'lsak, biz nihoyat bu deyarli tayyor sahifa bilan nimadir qilishimiz mumkin.


Misol uchun, biz tashqi saytlarga barcha havolalarni filtrlashni xohlaymiz.

Bizning forumimizda, xuddi avstralopitekning boltasidek, juda ko'p spamerlar to'planib, tashrif buyuruvchilarni buzuqlik, bir qurolli qaroqchilar va siyosiy tashviqot bilan to'ldirilgan joylarga jalb qilmoqdalar. Kuzatuv bilan Js dan foydalanishimiz mumkin edi, lekin buning o'rniga barcha havolalarni o'zgartirmoqchimiz:

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

Usul eng samarali bo'lmasligi mumkin, ammo u samarali. Biz redirect.php ni filtr va qora ro'yxat bilan yozdik va endi minglab forum sahifalaridagi barcha havolalarni aylantirishimiz kerak. ob_start va bir nechta oddiy iboralar yordamida biz buni bir necha qatorda bajarishimiz mumkin:

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

Endi ushbu kodni index.php yoki server sahifalarni ko'rishda foydalanadigan boshqa faylning boshiga qo'shish orqali biz kerakli narsani olamiz.

Tarkibni shu tarzda o'zgartirib, biz dvigatelning usullari bilan cheklanmaymiz. Bu juda qimmatli bo'lishi mumkin. Masalan, siz plaginni qo'shishingiz mumkin:

Genere_plugin() funksiyasi ( /*biror narsa yaratish*/ ) funktsiyasi f_callback($bufer)( /*...*/ $bufer = str_replace ("",generate_plugin(),$bufer); /*...*/ return $bufer; ) ob_start("f_callback");

Endi tarkibga qayerga qo'shsak, biz xohlagan narsa paydo bo'ladi. Ilovalardan biri JS vidjetini veb-sayt sahifasiga kiritishdir. Masalan, Yandex xaritalari. Odatda bu qiyin emas, lekin ba'zida yomon yozilgan veb-sayt sahifasi muharriri tirnoq va jingalak qavslardan qochib, vidjetni buzadi. Ko'rib turganingizdek, bu muammo osongina hal qilinadi.

Chiqish buferi bilan ishlash uchun PHP vositalari to'plami boy va faqat ob_start bilan cheklanmaydi. Yuqorida tavsiflangan usullar ba'zi hollarda juda ko'p resurs talab qiladi va mashaqqatli bo'ladi, chunki ular butun sahifada ishlaydi. Biz shablonda biz kirishni istamaydigan narsaning avlodi atrofida o'ram yaratish orqali uning faqat bir qismini qayta ishlashimiz mumkin, ammo bu aniq tuzatilishi kerak:

(Katta aqldan ozgan narsani yarating)

Siz bu iboralarning barchasini allaqachon payqagan bo'lsangiz kerak: "Men unga kirishni xohlamayman", "tiranozavr kursisi kabi qadimiy", "qiyshiq yozilgan muharrir" ... Ideal dunyoda chiqish buferi atrofidagi qobiqlar kerak emas. Ob_start bilan bajarilishi mumkin bo'lgan hamma narsani nazariy jihatdan usiz bajarish mumkin. Ushbu uslub ba'zan loyiha kodida chalkashliklarni keltirib chiqaradi; ko'pchilik uning ma'nosini faqat ob_gzhandler-ga siqish uchun chiqishni yuborishda ko'radi va boshqa hollarda undan foydalanish xavfli deb hisoblaydi. Ammo ko'pincha siz chiqish nazoratisiz qilolmaysiz.

Ayniqsa, siz chuqur qazishni xohlamasangiz.

(PHP 4, PHP 5, PHP 7)

ob_start — Chiqish buferlashni yoqish

Tavsif

Bool ob_start ([ chaqirish mumkin$output_callback = NULL [, int $chunk_size = 0 [, int $ bayroqlari = PHP_OUTPUT_HANDLER_STDFLAGS ]]])

Bu funksiya chiqishni buferlash imkonini beradi. Agar chiqish buferlash faol bo'lsa, skript chiqishi yuborilmaydi (sarlavhalardan tashqari), lekin ichki buferda saqlanadi.

Ushbu ichki buferning mazmuni yordamida satr o'zgaruvchisiga ko'chirilishi mumkin ob_get_contents(). Ichki bufer tarkibini chiqarish uchun siz foydalanishingiz kerak ob_end_flush(). Shu bilan bir qatorda siz foydalanishingiz mumkin ob_end_clean() bufer tarkibini yo'q qilish uchun.

Diqqat

Ba'zi veb-serverlar (masalan, Apache) qayta qo'ng'iroq qilish funktsiyasi chaqirilganda skriptning ishchi katalogini o'zgartiradi. Uni ishlatish orqali qaytarib olishingiz mumkin chdir(dirname($_SERVER["SCRIPT_FILENAME"])) qayta qo'ng'iroq qilish funktsiyasida.

Chiqish buferlari stekga suriladi, ya'ni qo'ng'iroqlarga ruxsat beriladi ob_start() boshqa faolga qo'ng'iroq qilgandan keyin ob_start(). Bunday holda, qo'ng'iroq qilish kerak ob_end_flush() tegishli marta soni. Agar bir nechta qayta qo'ng'iroq qilish funksiyalari faol bo'lsa, chiqish ularning har biri uchun joylashtirish tartibida ketma-ket filtrlanadi.

Parametrlar ro'yxati

Ixtiyoriy output_callback parametrini belgilash mumkin. Bu funksiya argument sifatida satrni oladi va qatorni ham qaytarishi kerak. Qayta tiklash (yuborish) yoki tozalash (foydalanish ob_flush(), ob_clean() yoki shunga o'xshash funktsiyalar) yoki so'rov oxirida chiqish buferi brauzerga o'chirilgan bo'lsa. output_callback funksiyasi chaqirilganda, u bufer tarkibini oladi va chiqish buferi brauzerga yuborilishi uchun yangilangan tarkibni qaytarishi kerak. Agar output_callback to'g'ri bo'lmasa, hujjatlashtirilgan funksiya qaytadi FALSE. Ushbu parametr uchun funksiya tavsifi:

String ishlov beruvchi (string $bufer [, int $faza ])

Bufer Chiqish buferining tarkibi. bosqichi Konstantalarning bit niqobi PHP_OUTPUT_HANDLER_*.

Agar output_callback qaytsa FALSE, keyin asl ma'lumot brauzerga o'zgarishsiz yuboriladi.

Qiymatni o'tkazish orqali output_callback parametrini e'tiborsiz qoldirish mumkin NULL.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() Va ob_start() qayta qo'ng'iroq qilish funktsiyalaridan chaqirib bo'lmaydi, chunki ularning xatti-harakatlarini oldindan aytib bo'lmaydi. Agar siz bufer tarkibini o'chirmoqchi bo'lsangiz, qayta qo'ng'iroq qilish funktsiyasidan "" (bo'sh qator) ni qaytaring. Bundan tashqari, funksiyalarni chaqira olmaysiz print_r($ifoda, rost) yoki highlight_file($filename, true) chiqish buferlash qayta qo'ng'iroq funksiyalaridan.

Izoh:

PHP 4.0.4 da funksiya ob_gzhandler() siqilgan veb-sahifalarni qo'llab-quvvatlaydigan veb-brauzerlarga gz-kodlangan ma'lumotlarni yuborishni osonlashtirish uchun joriy qilingan. ob_gzhandler() brauzer tomonidan qabul qilingan kontent kodlash turini aniqlaydi va shunga mos ravishda chiqishni qaytaradi.

chunk_size

Agar ixtiyoriy chunk_size parametri o'tkazilsa, bufer hajmi bo'yicha chunk_size dan katta yoki unga teng bo'lgan har qanday chiqishdan keyin tozalanadi. Standart qiymat 0 bufer yopilganda chiqish funksiyasi chaqirilishini bildiradi.

PHP 5.4.0 dan oldin, qiymat 1 parametrni o'rnatadigan maxsus qiymat edi chunk_size 4096 da.

Bayroqlar parametri chiqish buferida bajarilishi mumkin bo'lgan operatsiyalarni boshqaruvchi bit niqobidir. Odatiy bo'lib, u chiqish buferini tozalash, tozalash va o'chirish imkonini beradi, bu esa | | , yoki PHP_OUTPUT_HANDLER_STDFLAGS bu kombinatsiyaning qisqartmasi sifatida.

Har bir bayroq quyida tavsiflanganidek, bir qator funksiyalarga kirishni nazorat qiladi:

Doimiy Funksiyalar
PHP_OUTPUT_HANDLER_CLEANABLE ob_clean(), ob_end_clean(), Va ob_get_clean().
PHP_OUTPUT_HANDLER_FLUSHABLE ob_end_flush(), ob_flush(), Va ob_get_flush().
PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean(), ob_end_flush(), Va ob_get_flush().

Qaytish qiymatlari

Qaytadi TO'G'RI muvaffaqiyatli tugatilgandan so'ng yoki FALSE xato bo'lgan taqdirda.

O'zgarishlar ro'yxati

Versiya Tavsif
7.0.0 Agar ob_start() chiqish buferi qayta qo'ng'iroq funksiyasi ichida foydalanilganda, bu funksiya endi xato yaratmaydi E_ERROR, lekin o'rniga qo'ng'iroq qiladi E_RECOVERABLE_ERROR, uchinchi tomon xato ishlov beruvchilariga uni qo'lga olish imkonini beradi.
5.4.0 Uchinchi parametr ob_start() mantiqiy dan o'zgartirildi ( mantiqiy) o'chirish parametrining (qaysi, o'rnatilganda FALSE skript tugallanmaguncha buferni o'chirishni oldini oldi) butun songa ( butun son) bayroqlar parametri. Afsuski, bu PHP 5.4.0 dan oldingi uchinchi parametrdan foydalangan kod uchun API mos kelmasligini anglatadi. Kod bilan qanday ishlashni tushunish uchun bayroqlar misoliga qarang, shunda u ikkala versiyaga ham mos keladi.
5.4.0 Parametr chunk_size, ichiga oʻrnatilgan 1 , endi chiqish buferiga 1 bayt chiqishiga olib keladi.
4.3.2 Funktsiya qaytadi FALSE agar output_callback bajarilmasa.

Misollar

1-misol Foydalanuvchi tomonidan belgilangan qayta qo'ng'iroq qilish funksiyasiga misol

Funktsiyani qayta chaqirish ($bufer)
{
// barcha olmalarni apelsin bilan almashtiring
qaytish (str_replace("olma", "apelsin", $bufer));
}

Ob_start("qayta qo'ng'iroq");

?>


Bu olma va apelsinni solishtirishga o'xshaydi.






ob_end_flush();