Problème de header php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de header php

Re: Problème de header php

par moogli » 28 janv. 2013, 14:09

Ben ça dépend du moment où tu veux la redirection.

Côté serveur : header
Côté client : JS ou meta.

Regarde commen c'est fait ici quand tu poste.
Ce n'est pas du php car il ne peux en aucun cas décider ce que fait le navigateur.
La page est générée c'est du ressor du client.


@+

Re: Problème de header php

par Fre3z69 » 28 janv. 2013, 13:24

Bin on a dit dans le poste lié plus haut, d'éviter de faire des redirection en Js.

Moi j'avais fait des redirections Js, mais en voulant suivre les conseils, j'ai voulu faire mes redirection en php.

Je te montre un exemple, afin que tu comprenne mieux.

Par exemple, lors de la connexion:
				
				redirectLocation(SITE_BASE); // fonction défini plus haut, permettant de faire toutes me redirection, vers une url choisie en paramètre.
				// si on a déja une langue défini, on créer un cookie avec une séssion plus longue
				if (!empty($lang) && isset($_COOKIE['lang'])){
					$langue_actuelle = $_COOKIE['lang'];
					$expire = time() + 365*24*3600;
					setcookie('lang', $langue_actuelle, $expire);
				}
				$mess_sucess = $lang_succes_connexion_message1.$data['users_name'].$lang_succes_connexion_message2; // définition du message à afficher, en multilangue
				sucess($mess_sucess); // affichage du message de succès
					[ ... ]
				// ce que j'avais au par avant!
				// echo '<script type="text/javascript">setTimeout(function() {window.location.href="./";},2000);</script>';
Merci de ton aide

Cordialement

Re: Problème de header php

par moogli » 28 janv. 2013, 13:10

si tu veux la redirection soit faite par le navigateur => meta ou javascript.

lorsque la page est affiché php ne rentre plus en compte, c'est ton navigateur qui fait le boulot.


@+

Re: Problème de header php

par Fre3z69 » 28 janv. 2013, 12:40

Il n'y a pas d’erreur, c'est juste que la redirection ne s’effectue pas.

Et je préfère évité les Meta, sachant que j'ai lu qu'en vérité, les header sont les mieux placer pour faire une redirection en php, et que si ça ne fonctionne pas, c'est qu'on a dû certainement mal coder, et qu'il ya une erreur dans le script.

Merci pour toi aide

Cordialement

Re: Problème de header php

par Mazarini » 28 janv. 2013, 10:23

Tu peux mettre le message d'erreur ? A moins qu'il n'y en ait pas ?

Pour moi la solution avec <meta http-equiv="refresh" content="3;url=NEW PAGE URL" /> devrait marcher en l'incluant dans une vraie page html. Tu peux écrire une fonction pour le faire de partout en passant le message, l'url et le délai comme paramètres.

Re: Problème de header php

par Fre3z69 » 28 janv. 2013, 10:11

je colle jamais de blancs avant et parès les balises <?php ?>, sauf si c'est un echo ou autre sur une ligne.

Exp:
<?php echo 'Salut, merci ^^'; ?>
Sinon :
<?php

  header(...);
  echo 'Salut';

?>
Donc je ne pense pas que le problème vienne de ça.

Merci beaucoup.

Cordialement!

Re: Problème de header php

par Mazarini » 28 janv. 2013, 09:22

Il n'est pas impossible que du "blanc" soit envoyé avant ton header à cause d'un <?PHP précédé d'un blanc ou un ?> suivi d' un blanc (blanc ou saut de ligne ou tabulation...)
Personnellement, je faisais mes resfresh en html et avec la même page. Il doit être possible de faire un redirect de la même manière.

edit :
<meta http-equiv="refresh" content="0;url=NEW PAGE URL" />

Problème de header php

par Fre3z69 » 28 janv. 2013, 08:49

Salutation,

Je poste ce message lié avec celui-ci, et ce à cause de problèmes avec les headers.
Il ne faut rien faire afficher avant l'envoi d'un header, dans le cas contraire cela affiche ce message d'erreur.
Sinon, tu devrais éviter absolument de faire des redirections javascript générées par du code php. Utilses plutôt la fonction php : header('Location:monfichier.php');
Concernant les pb de header dans 99% des cas c'est que as mal organisé ton code (en faisant afficher quelque chose avant l'envoi d'un header). Il vaut mieux avoir une bonne organisation du code plutôt que d'essayer de rattraper l'affaire avec un echo javascript qui est une horreur de plus.

Pour une redirection php c'est un header location suivi d'un exit (pour être certain que le code suivant ne sera pas exécuté). Si tu veux aller vers index.php c'est donc
header('Location: index.php');
exit;
Voici ce que j'ai fait, lors de la validation de l'envoie d'un message:
	sucess($lang_succes_mp);
	echo'<script type="text/javascript">setTimeout(function(){window.location.href = "message";},2000);</script>';
Et voici le soucis qui ne fonctionne pas, vu (je pense) que j'affiche un message de succès (enfin en production)
	header("Refresh : 2; url:./");
	sucess($lang_succes_mp);
Avec ce code, la redirection ne s’effectue pas, alors que j'ai biens mit le header avant l'affichage de la page.

Comment ce fait t'il que cela ne fonctionne pas?

Merci beaucoup.

Cordialement