PHP Utilisation header location avec replace

Résolu/Fermé
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 - 11 juil. 2012 à 17:03
julie-f Messages postés 63 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 31 août 2012 - 11 juil. 2012 à 22:10
Bonjour,
Bien souvent, les pages PHP (ou même HTML) doivent s'enchaîner automatiquement.
Pour cela, il existe diverses possibilités : le code Action au sein d'un formulaire,
La fonction header() avec son paramètre location qui placée en tête du programme peut rediriger vers une autre page...
Problème, cette redirection est difficilement conditionnelle et pour preuve j'ai même lu que cette fonction (en tête de module) devait de préférence être suivie d'un Exit !
Pourtant, j'ai cru comprendre qu'il existait un second paramètre possible :
Le paramètre optionnel replace indique si la fonction header() doit remplacer un en-tête précédemment émis, ou bien ajouter un autre en-tête du même type. Par défaut, un nouvel en-tête va écraser le précédent, mais si vous passez FALSE dans cet argument, vous pouvez forcer les en-têtes multiples pour un même type d'en-tête.
L'usage avec False d'entêtes multiples dépasse ma compétence (bien limitée) mais le Replace simple qui peut être envoyé en décale semble bien se prêter à des déroulement de pages pour des cas particuliers de traitement (ou celui des erreurs).
Merci d'avance à qui aurait employé ce paramètre ou pourrait m'apporter des précisions sur ce fonctionnement.
@bientôt RJL2711


A voir également:

2 réponses

julie-f Messages postés 63 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 31 août 2012 10
11 juil. 2012 à 17:58
Bonjour,

je ne vois pas pourquoi la fonction header() ne serait pas conditionnel.

https://forums.commentcamarche.net/forum/affich-37622003-redirection-php-redirect-header

Si l'instruction doit impérativement être utilisée avant tout code HTML, il est néamoins possible de mettre du code php. Et mettre un exite ne rend pas ta condition invalide :
<?php 
if (testredirection) {
header('Location: mapage.php');
exit();
}
//Ton code a executer si testredirection == false...
?>

Cordialement
2
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
11 juil. 2012 à 18:21
Bonjour julie-f ,
Merci de ta réponse et des précisions qu'elle m'apporte.
Toutes mes excuses de débutant en PHP (et pourtant, c'est un passage obligé...).
Il existait tant de mise en garde sur l'impossibilité de toute instruction HTML avant la redirection (y compris dans la page officielle OHP sur les redirections) qu'il ne m'en fallait pas plus pour que j'en sois traumatisé !
Merci donc de ce recadrage qui permet de travailler tranquille en PHP pour opérer tests et contrôles avant de poursuivre en HTML !
Inversement, j'ai bien noté, ni l'instruction HTML, elle-même, ni INCLUDE avant ces redirections.
Bonne fin de journée. RJL2711
0
julie-f Messages postés 63 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 31 août 2012 10
11 juil. 2012 à 22:10
C'est très bien résumé. Bon courage et bon apprentissage, on est tous passé par la ;)
0