fonction header Location : sur Url

Eléphant du PHP | 59 Messages

15 févr. 2010, 12:21

Bonjour,
Je galère sur un truc tout con, je m'explique :
J'utilise une adresse :
http://monserveur/monappli/index.php?action=6&test=34

Je mets a jour mon enregistrement puis demande de retourner a la page d'accueil :

Code : Tout sélectionner

$updateGoTo = "index.php?action=7"; if (isset($_SERVER['QUERY_STRING'])) { $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?"; $updateGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $updateGoTo)); }
comme je suis deja dans index.php
l'url se change en
http://monserveur/monappli/index.php?ac ... =7&test=34
(il me rajoute "action=6" du coup ma page ne change pas. :(
Je ne vois pas trop comment faire pour le coup puisque je passe toujours par ma page index.php pour charger les différentes modules.
Besoin de votre aide.
Je vous remercie par avance

ViPHP
ViPHP | 5462 Messages

15 févr. 2010, 12:29

avec parse_str + http_build_query
parse_str($_SERVER['QUERY_STRING'], $query);
$query['action'] = 7;
header(sprintf("Location: %s", http_build_query($query)));

Eléphant du PHP | 59 Messages

16 févr. 2010, 09:22

Merci pour la réponse :)
J'ai testé avec le code :

Code : Tout sélectionner

$updateGoTo['action'] = 6; if (isset($_SERVER['QUERY_STRING'])) { $updateGoTo .= parse_str($_SERVER['QUERY_STRING'], $updateGoTo); } header(sprintf("Location: %s", http_build_query($updateGoTo))); }
et j'ai une erreur sous firefox (pas sous ie 6)
Warning: http_build_query() [function.http-build-query]: Parameter 1 expected to be Array or Object. Incorrect value given. in /var/www/html/MonAppli/Appli/MODULES/modifTest.php on line 74
la ligne 74 correspond a l'header. Il doit me manquer un parametre
et lorsque je colle directement le code. Plus d'erreur mais une page 404 not found.
Je ne comprends pas :( je continue a chercher depuis hier soir... Merci encore pour ta reponse

ViPHP
ViPHP | 5462 Messages

16 févr. 2010, 10:57

normal c'est pas bon, faut que tu fasse comme j'ai mis

Eléphant du PHP | 59 Messages

16 févr. 2010, 14:10

Je viens d'essayer la fonction location a l'air de marcher mais me renvoie vers une page 404. comme si mon url etait mauvaise.
Je dois peut etre rajouter un parametre supplémentaire ? mon but est d'aller a l'url index.php?action=6.
Mais l'update de l'enregistrement a bien fonctionné. Je galère :(

ViPHP
ViPHP | 5462 Messages

16 févr. 2010, 15:12

parse_str($_SERVER['QUERY_STRING'],  $query);
$query['action'] = 7;
header(sprintf("Location: index.php?%s", http_build_query($query)));

ViPHP
AB
ViPHP | 5818 Messages

16 févr. 2010, 15:18

En même temps, si tu n'as pas d'autres variables dans l'url à reporter dans ta page d'index, pas besoin d'analyser l'url donc tu peux faire simplement
$updateGoTo = "index.php?action=6";
header(sprintf("Location: %s", $updateGoTo));

Eléphant du PHP | 59 Messages

16 févr. 2010, 16:50

Merci :)
Ca fonctionne désormais. Encore merci
Bonne fin de journée