⊗ppPmHpRHP 400 of 447 menu

Πρόβλημα με τις επικεφαλίδες HTTP απόκρισης στην PHP

Σύμφωνα με τους κανόνες του HTTP, πρώτα στέλνονται οι επικεφαλίδες HTTP και μετά το σώμα της HTTP απόκρισης. Λόγω αυτού, η εργασία με τη συνάρτηση header στη PHP έχει τις ιδιαιτερότητές της.

Το θέμα είναι ότι αν πριν από την κλήση αυτής της συνάρτησης υπάρξει κάποια έξοδος στην οθόνη, αυτή θα ερμηνευτεί ως η αρχή του σώματος της απόκρισης. Σε αυτήν την περίπτωση, η κλήση της συνάρτησης header θα οδηγήσει σε μια προειδοποίηση της PHP με κείμενο headers already sent. Σε αυτήν την περίπτωση, οι επικεφαλίδες μπορεί ακόμη και να σταλούν. Μπορεί ακόμη και το σφάλμα να μην εμφανιστεί (εξαρτάται από τις ρυθμίσεις της PHP). Αλλά τις περισσότερες φορές αυτό συμβαίνει μόνο στοπ τοπικό περιβάλλον, ενώ όταν το site ανέβει στο διαδίκτυο όλα θα σπάσουν.

Ως έξοδος στην οθόνη νοείται οποιοδήποτε κείμενο. Για παράδειγμα, έτσι:

κείμενο <?php header('Content-Type: text/html'); ?>

Ή μια κενή γραμμή:

<?php header('Content-Type: text/html'); ?>

Ή ένα κενό:

<?php header('Content-Type: text/html'); ?>

Ή μια ετικέτα:

<div> <?php header('Content-Type: text/html'); ?> </div>

Ή έξοδος μέσω echo:

<?php echo 'abc'; header('Content-Type: text/html'); ?>

Ή έξοδος μέσω var_dump:

<?php $str = 'abc'; var_dump($str); header('Content-Type: text/html'); ?>

Ακόμη και οι προειδοποιήσεις της PHP θα είναι έξοδος στην οθόνη. Στο επόμενο παράδειγμα γίνεται σκόπιμα πρόσβαση σε μια ανύπαρκτη μεταβλητή, κάτι που θα οδηγήσει στην έξοδο μιας προειδοποίησης:

<?php $text += 1; header('Content-Type: text/html'); ?>

Οι αλλαγές των PHP ταγκών επίσης δημιουργούν έξοδο στην οθόνη:

<?php echo 'abc'; ?> <?php header('Content-Type: text/html'); ?>

Δημιουργήστε σκόπιμα έξοδο στην οθόνη πριν από τη συνάρτηση header. Μελετήστε το κείμενο του σφάλματος που προκύπτει.

Διορθώστε το σφάλμα που γίνεται σε αυτόν τον κώδικα:

<!DOCTYPE html> <html> <head> <?php header('Content-Type: text/html'); ?> </head> <body> κείμενο <body> <html>
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη