Redirection de page

Eléphant du PHP | 424 Messages

01 août 2006, 12:37

Bonjour,

J'ai un probléme de redirection de page :

Je fais remplir un formulaire à un utilisateur et je vérifie ce qu'à remplit l'utilisateur grace à une page verif.php qui contient ce code :
<?php 
$nom = $_POST['nom']; 
$prenom = $_POST['prenom']; 
if(empty($nom)) 
{ 
print("<center>Votre '<b>nom</b>' est vide !</center>"); 
exit(); 
} 
else 
{ 
echo "<meta http-equiv=\"refresh\" content=\"0; url=http://www.sagipassurances.com/step_2.php\">";
} 
?> 
Mon probléme se pose quand l'utilisateur remplit correctement son formulaire, en effet, quand l'utilisateur valide le formulaire la page verif.php s'ouvre et s'actualise pour la redirection... Est il possible d'éviter ce rafraichissement ?

Merci pour votre aide.
Youpi Youpi Yo !

ViPHP
ViPHP | 3607 Messages

01 août 2006, 12:43

Oui bien sur regarde du côté de la fonction header() :-)
à utiliser comme suit:
<?php
header('Location: mapage.php');
?>

Eléphant du PHP | 424 Messages

01 août 2006, 13:17

Quand je mets un header j'ai un message d'erreur !

Je pense qu'il faut que je modifie mon code ! php - html non ?

J'ai regardé du coté de la fonction header mais le probleme c'est que c'est en anglais et je suis pas trop calé en anglais... arf :shock:
Youpi Youpi Yo !

marghost
Invité n'ayant pas de compte PHPfrance

01 août 2006, 13:18

en fet la fonction header doit absolument avant tout code ou balises html pour fonctionner :wink:

Eléphant du PHP | 424 Messages

01 août 2006, 13:29

Ok effectivement ca fonctionne ! mais la redirection ne fonctionne pas j'ai un message d'erreur :

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/valid_step_1.php:1) in /var/www/html/valid_step_1.php on line 11


La ligne 11 étant la ligne de redirection...
Youpi Youpi Yo !

Eléphant du PHP | 424 Messages

01 août 2006, 13:48

Ca fonctionne sauf une chose qui va vous praitre bête !

J'ai donc mis mon code avant les balise mais si l'utilisateur oubli un champ le texte s'inscrit en haut de la page sur un fond blanc, pourquoi n'ai je plus les boutons de mon siite les liens.....???

Merci
Youpi Youpi Yo !

Invité
Invité n'ayant pas de compte PHPfrance

01 août 2006, 13:57

sans code, on ne peut essayer de résoudre ton problème, met donc içi les différents scripts merci :wink:

Eléphant du PHP | 424 Messages

01 août 2006, 14:01

Voici le code que je place avant les balises avant les balises ou code html :
<?php 
$nom = $_POST['nom']; 
$prenom = $_POST['prenom']; 
if(empty($nom)) 
{ 
$message = "Votre nom please";

exit(); 
}
?>
<?php 
header('Location: step_2.php'); 
?>
Je n'ai plus les images, bouton, liens de mon site j'ai juste une page blache avec mon message.

Merci pour votr aide
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 août 2006, 23:41

Toujours regarder la doc pour les fonctions que l'on utilise => exit()

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 424 Messages

03 août 2006, 14:21

Bon je suis toujours sur mon probleme et je n'y arrive pas !

J'ai lu le lien que m'a envoyé "Truc" mais je ne saisie pas le fonctionnement...

J'ai essayé d'écrire exit(0); mais rien de nouveau.. Est ce que quelqun peut m'éclairer ????

merci
Youpi Youpi Yo !

Eléphant du PHP | 88 Messages

03 août 2006, 14:36

Bonjour,

la fonction exit() stoppe le script. Donc si tu as des lignes de code après la fonction exit() elles ne seront pas executées.

bon courage

ViPHP
ViPHP | 2144 Messages

03 août 2006, 15:07

La structure de tes tests me parait assez étrange.
Si un variable est vide, tu affiches un message (avant même le début du code html de la page et donc en dehors du corps de la page) sinon tu envois un header qui redirige vers une autre page. le code html qui suit n'apparait donc jamais sur le pc de l'utilisateur.
Il faudrait prendre le problème à l'envers : si la variable contient quelque chose, on redirige, sinon on affiche l'ensemble de la page, avec les message d'erreur éventuel.

Code : Tout sélectionner

Si la variable Nom est remplie Alors on redirige Sinon on affiche l'ensemble de la page

Eléphant du PHP | 424 Messages

03 août 2006, 15:19

Oui effectivement c'est une solution !

Mais j'aimerais quand meme comprendre ce foutu header qui ne fonctionne pas chez moi LOL

Quand je met le header j'ai un message d'erreur :

Warning: Cannot modify header information - headers already sent by

Je desespere.... mais souhaite comprendre d'ou vient mon erreur !

merci à vous [/php]
Youpi Youpi Yo !

ViPHP
ViPHP | 2144 Messages

03 août 2006, 15:40

http://www.phpfrance.com/forums/voir_su ... header.php
devrait te renseigner sur l'usage des header.
ps: penses toujours à regarder dans la FAQ avant de poster :wink: