Page 1 sur 1

Remplacer la fonction header

Posté : 19 août 2010, 17:24
par Panama21
Bonjour à tous,

Je rencontre des problèmes avec la fonction « header » de mon script. En fait, je ne peux pas l’inséré ou je le souhaite dans ma page (par exemple dans un tableau) et je suis forcer de mettre ces lignes en début de page (sans rien avant) pour que cela marche…

Excise t-il une autre solution pour remplacer la ligne de redirection suivante ?
header ('Location: http://www.mon_site.fr/ma_page_de_redirection.php');

J’ai juste besoin de rediriger mes clients sur une autre page après saisi d’un mot de passe.

Si quelqu'un à une idée…

Merci pour les infos !
<?php
$bdd = "1234";
if(isset($_POST['mdp']))
{
if(($_POST['mdp'])===$bdd)
{
header('Location: header ('Location:  http://www.mon_site.fr/ma_page_de_redirection.php');
exit();
}
else
{
echo '<span style="color:#ff0000;">Désolé, mais le mot de passe entré est incorrect...</span>';
}
}
else
{
echo 'Veuillez entrer votre mot de passe';
}
?>
<form action="password.php" method="post">
<input type="password" name="mdp" /><br />
<input type="submit" value="Valider" />
</form>
<br />

Re: Remplacer la fonction header

Posté : 19 août 2010, 18:50
par Ryle
Pour fonctionner correctement, l'appel à header() doit être fait avant l'envoi de données au navigateur. Tu peux donc tout à fait contrôler que le mot de passe est correct et faire la redirection avant d'envoyer du code html au navigateur.

Si tu ne contrôles pas l'envoi des données vers le navigateur, tu peux paramétrer le fichier php.ini pour activer un buffer de sortie. Cela permet de "retenir" les données envoyées au navigateur dans un buffer. Ainsi, même si données devaient être envoyées au navigateur, php peut encore effectuer des redirections et autres (tant que le buffer n'est pas plein). L'inconvénient c'est que tu dépends de la config du serveur.

Sinon pour le remplacer, tu peux aussi envoyer ton formulaire vers une nouvelle page qui controlera uniquement ton mot de passe et redirigera l'utilisateur (avec un header puisque rien ne sera envoyé au préalable). Si le mdp est correct tu rediriges vers la page suivante, s'il est incorrect, tu le rediriges vers la page précédente...

Tu peux aussi utiliser une redirection html ou js, mais tout dépend des contrôles que effectues par la suite pour éviter qu'ils ne puissent être contournés...