शांत माहिती शीर्षलेख. Http शीर्षलेख काय आहेत? सामान्य सिद्धांत. हे कधी घडते

Symbian साठी 03.03.2020
Symbian साठी

ही त्रुटी दूर करणे सोपे आहे.
बऱ्याचदा समान संदेश सत्राच्या सुरूवातीस, थोड्या वेगळ्या शब्दात दिसून येतो:
चेतावणी: सत्र कुकी पाठवू शकत नाही - शीर्षलेख आधीच पाठवले आहेत
चेतावणी: सत्र कॅशे लिमिटर पाठवू शकत नाही - हेडर आधीच पाठवले आहेत

बाइट ऑर्डर मार्क
काहीवेळा तुम्ही सर्व काही तपासले आहे आणि तेथे काहीही नाही. संपादक बदला. तुमची फाइल दुसऱ्या प्रोग्राममध्ये पहा. उदाहरणार्थ, विंडोज नोटपॅड, युनिकोड एन्कोडिंग वापरताना, तुम्हाला कोणत्याही प्रकारे माहिती न देता, तुमच्या फाइलच्या सुरूवातीस एक सेवा वर्ण बाइट ऑर्डर मार्क जोडते. स्क्रिप्ट दुसऱ्या संपादकामध्ये उघडा आणि कोणतेही बाह्य वर्ण काढा. आणि नोटपॅड बदलून दुसऱ्या एडिटरवर जा.
किंवा BOM शिवाय UTF-8 एन्कोडिंगमध्ये जतन करा

मंचावरील असंख्य प्रश्न मला येथे करण्यास भाग पाडतात महत्वाची टीप:
ही त्रुटी दिसत नाही कारण तुमच्या स्क्रिप्टमध्ये “वर काहीतरी लिहिले आहे”. आणि PHP ब्राउझरमध्ये काहीतरी प्रदर्शित करते या वस्तुस्थितीवरून. हे कोड आवश्यक नाही. असू शकते त्रुटी संदेश. जागा किंवा HTML टॅग असू शकते. होय होय. सर्वात प्रतिभावानांसाठी: आम्ही ब्राउझरला पाठवलेल्या कोणत्याही वर्णांबद्दल बोलत आहोत, आणि केवळ तेच नाही जे ब्राउझर अननुभवी वापरकर्त्याला दाखवतो. HTML पृष्ठांवर स्त्रोत मजकूर असतो. आणि हे तंतोतंत PHP स्क्रिप्टच्या कार्याचा परिणाम आहे, आणि चित्रांसह सुंदर अक्षरे नाही, जसे की मोठ्या संख्येने लोक विचार करतात.

लोक सतत ही त्रुटी घेऊन माझ्याकडे येतात आणि विचारतात: " चूक कुठे आहे?". या संपूर्ण कालावधीत मला अशी काही पत्रे मिळाली आहेत 500 , कमी नाही. "" त्रुटी पूर्ण करण्याची वेळ आली आहे. या लेखात मी या त्रुटीची कारणे तसेच ते कसे सोडवायचे याबद्दल बोलेन.

आपण या त्रुटीचे रशियनमध्ये भाषांतर केल्यास, आपल्याला असे काहीतरी मिळेल: " हेडर बदलू शकत नाही कारण ते आधीच पाठवले गेले आहेत"हे काय आहे" शीर्षलेख"? हे शोधून काढूया.

जेव्हा सर्व्हर मुख्य भागाव्यतिरिक्त क्लायंटला प्रतिसाद देतो (उदाहरणार्थ, HTML कोडपृष्ठे), शीर्षके देखील आहेत. त्यात सर्व्हर प्रतिसाद कोड असतो, कुकी, एन्कोडिंग आणि इतर अनेक सेवा पॅरामीटर्स. करू शकतो PHP स्क्रिप्टशीर्षक पाठवायचे? अर्थात ते होऊ शकते. यासाठी एक फंक्शन आहे शीर्षलेख().

हे कार्य, उदाहरणार्थ, जेव्हा सतत वापरले जाते. हे कार्य नियमितपणे यासाठी देखील वापरले जाते.

तसेच, पाठवल्यावर शीर्षलेख सुधारित केले जातात कुकीआणि सत्राच्या सुरूवातीस (कार्य सत्र_प्रारंभ()).

आणि आता त्रुटी अजूनही का उद्भवते याबद्दल? सर्व्हर नेहमी प्रथम सर्व्हरला शीर्षलेख देतो आणि नंतर मुख्य भाग. जर सर्व्हरने आधीच शीर्षलेख परत केले असतील, तर मुख्य भाग जातो, आणि नंतर तो काही भेटतो सत्र_प्रारंभ(). असे दिसून आले की दुर्दैवी प्रोग्रामर शरीर सुरू होण्यापूर्वी हेडर पाठवण्यास विसरला आणि आता आधीच निघालेली ट्रेन पकडू इच्छित आहे.

येथे "" त्रुटी असलेला कोड आहे:



?>

अर्थात, अशा मूर्खपणा PHPमाफ करत नाही. आणि ते असे लिहिले गेले असावे:

session_start(); // चला सत्र सुरू करूया
?>

या स्क्रिप्टमुळे कोणतीही त्रुटी उद्भवणार नाही, कारण सर्व शीर्षलेख प्रथम पाठवले जातात आणि त्यानंतरच सर्व्हर प्रतिसाद मुख्य भाग तयार केला जातो.

त्रुटीसह कोडचे दुसरे उदाहरण:

प्रतिध्वनी "हॅलो!"; // काहीतरी छापा
session_start(); // चला सत्र सुरू करूया
?>

तीच गोष्ट, काही कारणास्तव शरीर (किंवा त्याचा एक तुकडा) प्रथम प्रदर्शित केला जातो, आणि नंतर त्यांना लक्षात आले की त्यांना शीर्षलेख देखील सुधारित करणे आवश्यक आहे.

हा कोड योग्यरितीने कसा पुन्हा लिहायचा याचा विचार करा.

दुसरे उदाहरण:




बाहेर पडणे
?>

जेव्हा अशा कोडचा लेखक अयशस्वी होतो, तेव्हा तो या त्रुटीमुळे आश्चर्यचकित होतो आणि म्हणतो: “हा एक अतिशय विचित्र योगायोग आहे, जेव्हा ऑपरेशन यशस्वी होते तेव्हा सर्वकाही ठीक होते आणि जेव्हा काही त्रुटी असते तेव्हा ते मला सांगतात की हेडर माहिती सुधारित करू शकत नाही - शीर्षलेख आधीच पाठवले आहे.” शब्दशः नाही, पण मुद्दा आहे.

समस्या सारखीच आहे आणि ती लिहिण्याचा योग्य मार्ग आहे:

$error = खरे; // काही त्रुटी होत्या का?
जर ($error) प्रतिध्वनी "एरर आली";
else शीर्षलेख("स्थान: ".$_SERVER["HTTP_REFERER"]); // परत पुनर्निर्देशित करा
बाहेर पडणे
?>

सूक्ष्म त्रुटी देखील आहेत:

शीर्षलेख("स्थान: ".$_SERVER["HTTP_REFERER"]); // परत पुनर्निर्देशित करा
बाहेर पडणे
?>

या कोडमधील त्रुटी एका जागेमुळे उद्भवते, जे आधी उपस्थित आहे . जागा एक सामान्य वर्ण आहे आणि प्रतिसाद शरीराचा भाग आहे. आणि जेव्हा सर्व्हर ते पाहतो, तेव्हा तो असा निष्कर्ष काढतो की यापुढे कोणतेही शीर्षलेख नाहीत आणि मुख्य भाग आउटपुट करण्याची वेळ आली आहे.

खालील त्रुटी देखील आहेत, ज्या समान स्वरूपाच्या आहेत. समजा एक फाईल आहे a.html:

आवश्यक_एकदा "a.html";
शीर्षलेख("स्थान: ".$_SERVER["HTTP_REFERER"]); // परत पुनर्निर्देशित करा
बाहेर पडणे
?>

आणि त्या व्यक्तीला मनापासून आश्चर्य वाटते, जर त्याने काहीही आउटपुट केले नाही तर त्रुटी कोठून आली? म्हणून, आपल्याला विशिष्टपणे पाहण्याची आवश्यकता नाही 1 फाइल, आणि त्यात समाविष्ट असलेल्या सर्व फायली. आणि जे कनेक्ट केलेले आहेत त्यांच्याशी जोडलेले आहेत, आपल्याला हे देखील पाहण्याची आवश्यकता आहे जेणेकरून कोणतेही आउटपुट नसेल.

आणि शेवटचा मुद्दा, परंतु अधिक कठीण. असे दिसून आले की कधीकधी ही त्रुटी योग्य कोडसह देखील उद्भवते. मग सर्व ही एन्कोडिंगची बाब आहे. फाइल एन्कोडिंग आहे याची खात्री करा " UTF-8 BOM शिवाय"आणि नक्की" BOM शिवाय"आणि फक्त नाही" UTF-8". कारण द BOMफाइलच्या अगदी सुरुवातीला येणारे बाइट्स आहेत आणि ते आउटपुट आहेत.

मला खरोखर आशा आहे की हा लेख "" त्रुटीशी संबंधित सर्व समस्यांचे निराकरण करण्यात मदत करेल, कारण मी उद्भवलेल्या सर्व समस्या हायलाइट करण्याचा प्रयत्न केला आहे. आणि मग आपण आपले डोके चालू करून विचार करणे आवश्यक आहे, आपल्या कोडमध्ये काय चूक आहे?

एक छोटीशी चूक तुमची वर्डप्रेस साइट पूर्णपणे अकार्यक्षम कशी बनवू शकते हे आश्चर्यकारक आहे. आम्ही अर्थातच प्रसिद्ध वर्डप्रेस चेतावणी त्रुटीबद्दल बोलत आहोत चेतावणी: शीर्षलेख माहिती सुधारित करू शकत नाही – pluggable.php द्वारे आधीच पाठविलेले शीर्षलेख (शीर्षलेख माहिती सुधारित करू शकत नाही). जर तुम्ही या त्रुटीचा सामना करत असलेल्यांपैकी एक असाल, तर तुम्ही योग्य ठिकाणी आला आहात. यामध्ये, ही त्रुटी प्रथमतः का दिसून येते याच्या कारणाविषयी चर्चा करू आणि समस्या कायमस्वरूपी सुटतील अशा उपायांचा विचार करू.

आपण प्रारंभ करण्यापूर्वी, आपल्याकडे खालील गोष्टी असल्याची खात्री करा:

  • तुमच्या होस्टिंग कंट्रोल पॅनलमध्ये प्रवेश किंवा FTP प्रवेश

हेडर माहिती कशी सुधारित करू शकत नाही - त्रुटीद्वारे आधीच पाठविलेले शीर्षलेख येतात?

कारणे अधिक चांगल्या प्रकारे समजून घेण्यासाठी या त्रुटीचे उदाहरण पाहू. त्रुटी सहसा या फॉर्ममध्ये दिसून येते:

चेतावणी: शीर्षलेख माहिती सुधारित करू शकत नाही - ओळ # वर /public_html/wp-includes/pluggable.php मध्ये (/public_html/wp-content/plugins/my-plugin/my-function.php:# येथे आउटपुट सुरू झाले) द्वारे आधीच पाठविलेले शीर्षलेख

तुम्ही बघू शकता, त्रुटी दोन फाइल्सचा उल्लेख करते. पहिली फाइल (आमच्या बाबतीत: my-function.phpमध्ये पोस्ट केले /public_html//wp-content/plugins/my-plugin/) संशयितांच्या डोक्यावर. हा आमचा सानुकूल कोड आहे जो WordPress द्वारे प्रदान केलेल्या मुख्य कार्यक्षमतेमध्ये बदल करण्यासाठी डिझाइन केलेला आहे. मुख्य कार्यक्षमता फाइलमध्ये आहे pluggable.php(वर्डप्रेस कोर फाइल, कोणत्याही वर्डप्रेस इंस्टॉलेशनसाठी अपरिवर्तित). दुसऱ्या शब्दांत, समस्या पहिल्या फाइलमध्ये आहे, जी दुसरी फाइल योग्यरित्या कार्यान्वित होण्यापासून प्रतिबंधित करते.

त्रुटीचे मुख्य कारण अनावश्यक आहे पहिल्या फाईलमधील रिक्त जागा. या फाईलच्या वरच्या किंवा खालच्या बाजूला असलेल्या स्पेसेस, फाईलमध्ये कुठेही अनावश्यक स्पेसेस किंवा अगदी PHP टॅगमधील स्पेसेस आहेत. . तसे, कारण प्रोग्रामर त्यांच्या कोडमध्ये चुकून अतिरिक्त स्पेस घालू शकतात (आणि सहसा करतात), ही त्रुटी तुमच्या अपेक्षेपेक्षा जास्त वेळा येते. त्रुटी संदेशामध्ये प्रदान केलेली # ओळ समस्येच्या स्थानाचा संदर्भ देते - यामुळे समस्या जलद आणि गोंधळ न करता सोडविण्यात मदत होईल.

त्रुटीचे निराकरण केल्याने शीर्षलेख माहिती सुधारित केली जाऊ शकत नाही - हेडर आधीच पाठविले आहेत

आता तुम्हाला एरर कशामुळे होत आहे हे माहित आहे, तुम्ही त्याचे निराकरण करण्यासाठी पुढे जाऊ शकता. समस्येचे निराकरण करण्यासाठी आम्ही तुम्हाला दोन पर्याय दर्शवू, जे तुम्ही वैयक्तिकरित्या प्रयत्न करू शकता किंवा वैयक्तिकरित्या मदत करत नसल्यास.

पर्याय १ - सदोष फाइल संपादित करणे

त्रुटीचा पहिला उपाय चेतावणी: शीर्षलेख माहिती सुधारित करू शकत नाही- त्रुटीसह फाइलचे मॅन्युअल सुधारणा. त्रुटी संदेशामध्येच समस्या शोधण्यासाठी तुमच्याकडे आधीपासूनच आवश्यक माहिती आहे (लक्षात ठेवा, ही संदेशातील पहिली फाइल आहे). तुम्हाला फक्त फाइलझिला सारख्या क्लायंटचा वापर करून किंवा फाइल व्यवस्थापकाद्वारे FTP द्वारे ही फाइल उघडायची आहे.

मूलत:, फाईलमधून अतिरिक्त जागा/रिक्त ओळी काढून टाकणे ही येथे काळजी घेणे आवश्यक आहे. प्रारंभ करण्यासाठी एक चांगली जागा म्हणजे त्रुटी संदेशात नमूद केलेली # ओळ. येथून, तुम्ही बाकीच्या फाईलचे पार्सिंग करणे सुरू ठेवू शकता, इतर अनावश्यक जागा किंवा रिकाम्या ओळी शोधत आहात, दस्तऐवजाच्या शेवटपर्यंत.

तुम्ही PHP स्टार्ट आणि एंड टॅगचे स्पेलिंग योग्यरित्या केल्याची खात्री करा. टॅगच्या आधी किंवा नंतर जागा नसावी , तसेच टॅग ?> . तसेच, कोडची शेवटची ओळ स्पेस किंवा अतिरिक्त लाइन फीडने संपू नये.

खालील स्क्रीनशॉटमध्ये तुम्ही फाइल पाहू शकता wp-config.php, ज्यामध्ये पहिल्या PHP टॅगच्या आधी मोकळी जागा आहे.

सुगावा: अनेक मजकूर संपादक आपोआप अनावश्यक जागा काढून टाकू शकतात. उदाहरणार्थ, ॲटम एडिटरमधील अतिरिक्त स्पेस काढण्यासाठी, सर्व कोड हायलाइट करा आणि P वर जा ackages -> Whitespace -> Trailing Whitespace काढून टाका.

पर्याय २ - सदोष फाइल बदला

अर्थात, त्रुटींसह फाइल्सची संपूर्ण मालिका संपादित करणे कठीण असू शकते. फाइल्स तुम्ही तुमच्या साइटवर नुकतेच स्थापित केलेल्या प्लगइन किंवा थीमशी संबंधित असू शकतात किंवा वर्डप्रेस कोर फाइल्स देखील असू शकतात.

जर त्रुटी खरोखर प्लगइन किंवा थीममुळे उद्भवली असेल, तर तुम्हाला ते पुन्हा स्थापित करण्याची आवश्यकता आहे. ही क्रिया बहुतेक प्रकरणांमध्ये मदत करते. दुसरीकडे, जर वर्डप्रेस कोर फाईल त्रुटीचे कारण असेल, तर सर्वोत्तम उपाय म्हणजे वर्डप्रेसची स्वच्छ प्रत घेणे आणि तुमच्या इंस्टॉलेशनमधील त्रुटी असलेल्या फाइलला योग्य आवृत्तीमध्ये बदलणे. हे सुनिश्चित करेल की सदोष फाइल तिच्या मूळ स्थितीत पुनर्संचयित केली गेली आहे, तर तुमची उर्वरित वर्डप्रेस साइट स्थापना अखंड राहील. आता, फक्त पृष्ठ रीलोड करा आणि त्रुटी निश्चित केली आहे याची खात्री करा.

अनुमान मध्ये

तुम्ही फाइलमध्ये कोडचा तुकडा पेस्ट केला असला, नवीन प्लगइन/थीम जोडली किंवा कोड मॅन्युअली लिहिला असला तरीही, फाइलमध्ये अतिरिक्त जागा दिसण्याचा धोका असतो. या उशिर निर्दोष जागा वर्डप्रेस त्रुटीमध्ये बदलू शकतात चेतावणी: शीर्षलेख माहिती सुधारित करू शकत नाही - हेडर आधीच पाठवलेले आहेत.

या मार्गदर्शकामध्ये, आम्ही अशा त्रुटींचे निराकरण कसे करावे ते पाहिले आणि आता तुमची साइट पुन्हा अपेक्षेप्रमाणे कार्य करत आहे. अधिक वर्डप्रेस ट्यूटोरियल येथे आढळू शकतात.

या लेखात आपण कोणते हेडर कशासाठी जबाबदार आहे याबद्दल तपशीलात न जाता, कशासाठी हेडर आवश्यक आहेत ते पाहू. सर्वात सामान्य शीर्षकांच्या भूमिका पुढील लेखांमध्ये वर्णन केल्या जातील.

मालिकेतील सर्व लेख:

  • Http शीर्षलेख काय आहेत? सामान्य सिद्धांत.

HTTPम्हणजे हायपरटेक्स्ट ट्रान्सफर प्रोटोकॉल. प्रोटोकॉल हा नियमांचा एक संच आहे ज्याद्वारे भिन्न उपकरणे डेटाची देवाणघेवाण करतात. हे 1990 च्या दशकात तयार केले गेले. आता ते इंटरनेटवर जवळजवळ सर्वत्र वापरले जाते. आपण आपल्या ब्राउझर विंडोमध्ये जे काही पाहता ते या प्रोटोकॉलद्वारे प्राप्त होते. एचटीटीपी शीर्षलेख कदाचित डिव्हाइसेसमधील संप्रेषणातील मुख्य गोष्ट आहे. ते कनेक्शन स्थापित केल्याबद्दल आणि या कनेक्शनद्वारे प्रसारित केल्या जाणाऱ्या माहितीबद्दल मूलभूत माहिती देतात.
दोन उपकरणांमधील संप्रेषण आकृतीवर एक नजर टाकूया. या उपकरणांना तुमचा संगणक आणि इंटरनेटवरील काही सर्व्हर असू द्या:

तुम्ही बघू शकता, ब्राउझरने HTTP विनंती पाठवली. हे असे काहीतरी दिसू शकते:

/other-19 HTTP/1.1 मिळवा
होस्ट: www.scriptsite.ru
वापरकर्ता-एजंट: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
स्वीकार करा: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
स्वीकारा-भाषा: ru,en-us;q=0.7,en;q=0.3
स्वीकार-एनकोडिंग: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
जिवंत ठेवा: 300
कनेक्शन: जिवंत ठेवा

या प्रकरणात, पहिली ओळ विनंती ओळ आहे, इतर सर्व ओळी HTTP शीर्षलेख आहेत ज्यात विनंतीबद्दल, या माहितीची विनंती करणाऱ्या क्लायंटबद्दल आणि इतर अनेक गोष्टींबद्दल अतिरिक्त माहिती असते.
आमच्या विनंतीला प्रतिसाद म्हणून, सर्व्हर खालील शीर्षलेख पाठवू शकतो:

सर्व्हर: Apache/2.0.61 (Unix) mod_ssl/2.0.61 OpenSSL/0.9.8k mod_dp20/0.99.2 PHP/5.2.5 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6/Ruby (२००७-०९-२४)

X-द्वारे समर्थित: PHP/5.2.5

सेट-कुकी: PHPSESSID=ft47gokfee6amv3eda3k1p93s3; मार्ग=/

कॅशे-नियंत्रण: नो-स्टोअर, नो-कॅशे, पुनर्प्रमाणित करणे आवश्यक आहे, पोस्ट-चेक=0, प्री-चेक=0

प्राग्मा: नो-कॅशे

जिवंत ठेवा: कालबाह्य = 10, कमाल = 1024

कनेक्शन: ठेवा-जिवंत

हस्तांतरण-एनकोडिंग: तुकडे केलेले

सामग्री-प्रकार: मजकूर/html

पहिली ओळ स्टेटस लाइन आहे. उर्वरित ओळी हेडर आहेत. आकृतीने दर्शविले की पृष्ठाची सामग्री देखील लोड केली आहे. परंतु ही सामग्री सामान्यत: शीर्षलेख दर्शक प्लगइनमध्ये प्रदर्शित केली जात नाही. आणि पृष्ठाची सामग्री केवळ एक विशेष बाब आहे. प्रोटोकॉलनुसार, पृष्ठ प्रसारित करणे आवश्यक नाही. त्याऐवजी, चित्र, ध्वनी फाइल आणि व्हिडिओ प्रसारित केला जाऊ शकतो. आणि त्या सर्वांची शीर्षके खूप वेगळी असतील.

HTTP शीर्षलेख कसे पहावे?

HTTP शीर्षलेख पाहण्यासाठी, मी फायरफॉक्स ब्राउझरसाठी खालील प्लगइनची शिफारस करतो:

तुम्ही क्रोम ब्राउझर वापरत असल्यास, तुम्ही सेटिंग्ज बटण - टूल्स - डेव्हलपर टूल्सवर क्लिक करून सर्व माहिती पाहू शकता. नेटवर्क टॅब.
मी ऑपेरा ब्राउझरच्या वापरकर्त्यांना कोणताही सल्ला देऊ शकत नाही, कारण मी या ब्राउझरचा मित्र नाही. एकदा प्लगइन स्थापित आणि चालू झाल्यावर, पृष्ठ रीफ्रेश करण्याचा प्रयत्न करा. तुमच्या ब्राउझरने सर्व्हरशी संवाद साधलेल्या विनंत्या आणि प्रतिसादांच्या मोठ्या सूची तुम्हाला लगेच दिसतील.

Http शीर्षलेख आणि त्यांना php मध्ये प्रवेश

तुम्ही PHP डेव्हलपर असल्यास, तुम्ही getallheaders() फंक्शन वापरून विनंती शीर्षलेखांमध्ये प्रवेश करू शकता. हे कसे कार्य करते हे समजून घेण्यासाठी, खालील कोड चालवूया:

आणि आम्हाला हेडर ॲरेची प्रिंटआउट मिळते.

परंतु अधिक वेळा ते ग्लोबल व्हेरिएबल $_SERVER द्वारे ऍक्सेस केले जातात. या व्हेरिएबलमध्ये जवळजवळ प्रत्येक http हेडरचे समान घटक नाव असते, जे HTTP_header_name तत्त्वानुसार तयार केले जाते. तर त्याच ‘User_Agent’ साठी $_SERVER[‘HTTP_USER_AGENT’] व्हेरिएबल आहे;

सर्व्हर वापरकर्त्याला पाठवणार हेडर्स मिळविण्यासाठी, headers_list() फंक्शन वापरले जाते. नियमानुसार, सर्व्हर सर्व स्क्रिप्टच्या शेवटी गहाळ आवश्यक शीर्षलेख तयार करतो. म्हणून, या ॲरेमध्ये एकतर स्क्रिप्ट कार्यान्वित होण्यापूर्वी सर्व्हरने तयार केलेले शीर्षलेख असतील (आणि ते बदलले जाणार नाहीत), किंवा जे आम्ही व्यक्तिचलितपणे सेट केले आहेत. फंक्शन हेडर ("हेडर टेक्स्ट") वापरून ते व्यक्तिचलितपणे सेट केले जाऊ शकतात;
चला खालील कोड चालवू:

फंक्शन कॉल केल्यावर पाठवायला तयार हेडरची प्रिंटआउट आपण पाहू:

पहिले शीर्षलेख आपोआप सेट केले गेले होते, आणि त्यात स्क्रिप्ट चालू असलेल्या सर्व्हरचे नाव आहे. दुसरा आमच्याद्वारे व्यक्तिचलितपणे स्थापित केला गेला. जर ब्राउझरला "फ्रूट" हेडरची आवश्यकता असेल, तर तो सर्व्हरच्या http प्रतिसादातून घेईल आणि त्याचा वापर करेल. परंतु आमच्या ब्राउझरला त्याची आवश्यकता नसल्यामुळे, ते समजत नसलेल्या ओळीकडे दुर्लक्ष करते.

HTTP विनंती रचना

आमची विनंती असे दिसते:

त्यातील पहिली ओळ, आधी सांगितल्याप्रमाणे, क्वेरी लाइन आहे. यात तीन भाग असतात:

  • पद्धत(पद्धत) - कोणत्या प्रकारची विनंती दर्शवते. सर्वात सामान्य पद्धती: GET, POST, HEAD. त्यांच्याबद्दल पुढील परिच्छेदात लिहिले जाईल.
  • मार्ग(पथ) - सहसा हा URL चा भाग असतो जो डोमेन नंतर येतो. उदाहरणार्थ, आपण ॲड्रेस बारमध्ये http://www.scriptsite.ru/about/ प्रविष्ट केल्यास, पथ मूल्य /about/ असेल.
  • प्रोटोकॉल(प्रोटोकॉल) - वापरलेला प्रोटोकॉल. सामान्यत: "HTTP" आणि प्रोटोकॉल आवृत्ती असते. सामान्यतः, आधुनिक ब्राउझर आवृत्ती 1.1 वापरतात

पुढे हेडर “Name: value” फॉरमॅटच्या स्ट्रिंग्सच्या स्वरूपात येतात.
तसे, या विनंतीमध्ये शीर्षलेखांपैकी एक म्हणून कुकी डेटा देखील प्रसारित केला जातो. यातील बहुतेक ओळी ऐच्छिक आहेत. क्वेरी फक्त दोन ओळींपर्यंत कमी केली जाऊ शकते:

मिळवा /article/show/4/ HTTP/1.1

होस्ट: scriptsite.ru

विनंती पद्धती

मिळवा

प्राप्त विनंती सामान्यत: दस्तऐवजाची विनंती करण्यासाठी आणि काही पॅरामीटर्स पास करण्यासाठी वापरली जाते.
HTML पृष्ठे, प्रतिमा, CSS आणि JavaScript फाइल्स इत्यादी मिळविण्यासाठी ही मुख्य पद्धत वापरली जाते.
पॅरामीटर्स काहीही असू शकतात या वस्तुस्थितीमुळे आणि सर्व्हरवर त्यावर प्रक्रिया कशी केली जाऊ शकते यावर कोणतेही निर्बंध नाहीत, डेटा विनंती पद्धत बहुतेकदा माहिती हस्तांतरित करण्यासाठी वापरली जाते. उदाहरणार्थ, आपल्याकडे असा फॉर्म असेल

या प्रकरणात, हे पॅरामीटर्स ब्राउझरच्या ॲड्रेस बारमध्ये दृश्यमान असतील.

पोस्ट

पोस्ट ही सर्व्हरला डेटा पाठवण्यासाठी वापरली जाणारी पद्धत आहे. जरी तुम्ही ब्राउझरच्या ॲड्रेस बारद्वारे GET पद्धतीचा वापर करून सर्व्हरला डेटा पाठवू शकता, परंतु बर्याच बाबतीत POST वापरणे श्रेयस्कर आहे. GET द्वारे मोठ्या प्रमाणात डेटा पाठवणे अव्यवहार्य आहे. याव्यतिरिक्त, GET ला काही मर्यादा आहेत ज्या परवानगी देत ​​नाहीत, उदाहरणार्थ, हा लेख माझ्या वेबसाइटवर फक्त एका ब्राउझर लाइनद्वारे प्रकाशित करणे. POST विनंत्या बहुतेक वेळा वेब फॉर्म सबमिट करण्यासाठी वापरल्या जातात. POST पद्धत देण्यासाठी मागील उदाहरणावरून फॉर्ममध्ये बदल करू

या लेखात आम्ही त्रुटीची मुख्य कारणे आणि उपाय पाहू "हेडर बदलणे अशक्य आहे कारण ते आधीच पाठवले गेले आहेत" ("शीर्षलेख माहिती सुधारित करू शकत नाही - हेडर आधीच पाठवले आहेत").

या त्रुटीचा अर्थ काय आहे?

त्रुटीची कारणे समजून घेण्यासाठी, आपण प्रथम हे "हेडर" काय आहेत हे समजून घेणे आवश्यक आहे.

चला सिद्धांतात खोलवर जाऊ नका. फक्त असे म्हणूया की कोणत्याही वापरकर्त्याने वेब पृष्ठ उघडण्यापूर्वी, हेच "हेडर" त्याला पाठवले जातात, ज्यामध्ये एन्कोडिंग, साइट भाषा, सर्व्हर डेटा आणि इतर सेवा माहिती असते. कुकीज आणि सत्र हेडरमध्ये देखील पाठवले जातात हे वेगळे जोडणे योग्य आहे.

कोणत्या कमांडमुळे ही त्रुटी निर्माण होते?

त्रुटी "शीर्षलेख माहिती सुधारित करू शकत नाही - शीर्षलेख आधीच पाठविलेले आहेत"हेडर, सेटकुकी आणि कुकीज किंवा सत्रांच्या ऑपरेशनशी संबंधित PHP कमांडस कॉल करू शकतात.

त्रुटीची कारणे आणि उपाय.

अनुभवाच्या अभावामुळे सर्वात सामान्य चूक होते. आम्ही आधीच शोधून काढले आहे की पृष्ठ स्वतः लोड होण्याआधी शीर्षलेख पाठवले जातात.

परंतु प्रोग्रामर, विशेषत: नवशिक्या, हे फक्त विसरतात किंवा त्यांना माहित देखील नाहीत. आणि प्रथम ते पृष्ठावर काहीतरी प्रदर्शित करण्याचा प्रयत्न करतात - बहुतेकदा इको कमांड वापरतात आणि नंतर ते कुकीज सेट करतात, शीर्षलेख पाठवतात इ. जे नेमके या त्रुटीकडे नेत आहे.

येथे कोडचे एक उदाहरण आहे ज्यामुळे ही त्रुटी येईल:

येथे योग्य पर्याय आहे:

म्हणजेच, प्रथम, आपण शीर्षलेख पाठविण्यापूर्वी काहीही प्रदर्शित करू शकत नाही!

हे नेहमीच स्पष्ट नसते, परंतु थोड्या फरकाने एक त्रुटी असते. जेव्हा तुमचा PHP दस्तऐवज स्पेस किंवा रिकाम्या ओळींनी सुरू होतो, याचा अर्थ या ओळी ब्राउझरमध्ये प्रदर्शित केल्या जातात.

याचे निरीक्षण करणे खूप कठीण आहे, कारण, उदाहरणार्थ, विंडोज नोटपॅड आपल्याला कोणत्याही प्रकारे चेतावणी न देता किंवा हे चिन्ह न दाखवता सुरुवातीला बाइट ऑर्डर मार्क जोडू शकते. या प्रकरणात, आपण इतर संपादक वापरून दस्तऐवज उघडा आणि तपासा.

हेडर चुकीच्या पद्धतीने सेट करण्याचे उदाहरण येथे आहे:

म्हणजे, दुसरे म्हणजे, आधी

तुम्ही समाविष्ट कमांड वापरत असल्यास तुम्ही विशेषतः सावधगिरी बाळगली पाहिजे, मूलत: ते सर्व फायली एकत्र करते आणि परिणामी एक बनवते, आणि जर तुम्ही प्रथम साइट हेडर (स्लायडर, मेनू, इ.) समाविष्ट केले असेल आणि नंतर मुख्य फाइलमध्ये हेडर पाठवण्याचा प्रयत्न करा. , मग तुम्हाला नक्कीच ही त्रुटी मिळेल.

येथे अशा चुकीच्या कोडचे उदाहरण आहे:



आम्ही वाचण्याची शिफारस करतो

वर