Il suffit de voir l'extrait de code suivant. Je suis tombé sur cela dans l'un des plugins que je lis maintenant.
if ( ! defined( 'ABSPATH' ) ) {
header( 'Status: 403 Forbidden' );
header( 'HTTP/1.1 403 Forbidden' );
exit;
}
Je comprends que ce script envoie une réponse d'en-tête 403 interdite au navigateur pour un accès non autorisé. Mais pourquoi deux 403 en-têtes? Est-ce que le second type de repli sur le premier?
La manière appropriée d’envoyer un statut (lorsque WordPress n’est pas disponible) est la suivante:
http_response_code( 403 );
Voir le Manuel de PHP pour sa définition .
Mais dans les fichiers de plug-in, il ne devrait jamais s'agir du code "par défaut" placé au-dessus d'un en-tête de fichier. Voir Il est utile de limiter l'accès direct aux fichiers de thème? pour une discussion.
Dans WordPress, utilisez status_header( 403 )
si vous en avez besoin.
Une note sur le code que vous avez posté:
header( 'Status: 403 Forbidden' );
header( 'HTTP/1.1 403 Forbidden' );
La première ligne est un traitement "spécial" pour PHP fonctionnant en mode CGI, la seconde utilise une version de protocole HTTP spécifique sans aucune vérification. Si la connexion est via HTTP 2 ou 1.1, cela n'a aucun sens.
Les deux sont incorrects, car la manière correcte d’envoyer le statut correct avec header()
consiste à utiliser les deuxième et troisième arguments de cette fonction.
Donc, cela fonctionnerait mieux:
header( 'Status: 403 Forbidden', true, 403 );
Le deuxième argument indique à PHP de remplacer d'autres en-têtes portant le même nom, le troisième concerne le statut réel. Le code que vous avez posté est un bon compteur - exemple. :)