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() για μια πιο λεπτομερή συζήτηση στα θέματα που πραγματεύονται.