headers_sent
(PHP 3 >= 3.0.8, PHP 4, PHP 5)
headers_sent -- Ελέγχει αν ή πού οι headers έχουν σταλεί
Περιγραφή
bool
headers_sent ( [string &file [, int &line]] )
Η headers_sent() θα επιστρέψει FALSE αν δεν έχουν σταλεί HTTP headers
και TRUE στην αντίθετη περίπτωση. Αν οι προαιρετικές παράμετροι
file και line
έχουν τεθεί, η headers_sent() θα βάλει το όνομα του αρχείου
της php και τον αριθμό της γραμμής απ'όπου το αποτέλεσμα άρχισε, στις file
και line μεταβλητές.
Δεν μπορείτε να προσθέσετε άλλες γραμμές στο header χρησιμοποιώντας τη συνάρτηση header()
όταν το τμήμα του header έχει ήδη σταλεί. Χρησιμοποιώντας αυτή τη συνάρτηση
μπορείτε τουλάχιστο να εμποδίσετε να πάρετε μηνύματα λάθους σχετικά με την HTTP header.
Μια άλλη επιλογή είναι να χρησιμοποιήσετε την Output Buffering.
Óçìåßùóç:
Οι προαιρετικές παράμετροι file και line
προστέθηκαν στην PHP 4.3.0.
ÐáñÜäåéãìá 1. Παραδείγματα που χρησιμοποιούν την headers_sent()
<?php
// If no headers are sent, send one if (!headers_sent()) { header ('Location: http://www.example.com/'); exit; } // An example using the optional file and line parameters, as of PHP 4.3.0 // Note that $filename and $linenum are passed in for later use. // Do not assign them values beforehand. if (!headers_sent($filename, $linenum)) { header ('Location: http://www.example.com/'); exit;
// You would most likely trigger an error here. } else {
print "Headers already sent in $filename on line $linenum\n" . "Cannot redirect, for now please click this <a " . "href=\"http://www.example.com\">link</a> instead\n"; exit; }
?>
|
|
Δείτε επίσης τις ob_start(), trigger_error(),
και header() για μια πιο λεπτομερή συζήτηση στα
θέματα που πραγματεύονται.