Encore un header...

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 : Encore un header...

par Zurg » 29 nov. 2005, 00:00

Sitôt dit, sitôt fait !!

Encore merci...

par Cyrano » 28 nov. 2005, 23:55

Alors c'est parfait, il te reste plus qu'à mettre un [Résolu] ;)

par Zurg » 28 nov. 2005, 23:53

Euh oui,

mais en l'occurence, la page index.php est composée d'autres pages en php, dont la principale est centre.php, et c'est sur cette page que s'effectue le switch.

Sinon, j'ai fait ça sur ma page centre.php
?php
require_once('../Connections/cnn.php');

if (!isset ($_GET['rubrikID'])) 
	{
	if (isset($_GET['ec']) && ($_GET['ec'] == "COMMANDER"))
		{
		$ec = $_GET['ec'];
           if (!isset($_SESSION['statut'])||($_SESSION['statut'] != "client"))
            {
                ?>
				<script type="text/javascript" language="javascript">
					window.location.replace("login.php");
				</script>
				<?php
                exit;
            }
            else
                include ("commande.php");            
        }
	}
Et ça marche...

:)

Mais c'est vrai que niveau architecture, il y a encore 2 ou 3 trucs qui ne me semblent pas très propres, mais pour l'instant, on peut les contourner, et d'ailleurs au final, ça permet d'avoir des scripts moins longs, sur certaines pages...

par Cyrano » 28 nov. 2005, 23:47

J'avais juste survolé le sujet, en le relisant mieux, je constate que le javaScript ne t'aidera pas beaucoup : il y a un problème d'architecture dans ton système. Mais tu pourrais le contourner en déplaçant la vérification de la variable de session dans ton index : tu dis que tout est en pseudo-frames, je suppose donc que ta page index contient un switch vérifiant la page demandée: quand tu testes si la page est la page "commander", c'est là que tu peux tester la variable de session pour envoyer la bonne page pour la page d'identification. Sommairement:
<?php
switch($page)
//...
    case "commander":
        if(!empty($_SESSION['login']) && $_SESSION['login'] != "")
        {
            include("./pages/commander.php");
        }
        else
        {
            include("./pages/identifier.php");
        }
    break;
//... etc...
?>

par Zurg » 28 nov. 2005, 23:46

Certes, c'est la petite explication en + sur le risque de tomber sur un navigateur dont le JavaScript est désactivé qui m'a convaincu, et aussi, un peu, parce-que j'en ai marre de ces headers !!!! :D

Bon, donc je remplace, et je vous dis comment ça se passe...

Merci en tout cas pour votre aide...

:pouce:

par Truc » 28 nov. 2005, 23:43

Personnellement, je ferais une redirection JavaScript:(...) virus en JavaScript ;)
pareil c'est ce que je disait d'ailleurs :wink:
comment l'inclure dans mon code
remplace:
header ("Location: login.php"]; 
par:
<script type="text/javascript" language="javascript">
 window.location.replace("login.php");
</script>

par Zurg » 28 nov. 2005, 23:37

Bonsoir Cyrano,

et où devrais-je la placer cette redirection JavaScript ? sur la page centre.php, ce serait le + logique, mais comment l'inclure dans mon code :?:

par Cyrano » 28 nov. 2005, 23:32

Personnellement, je ferais une redirection JavaScript: les navigateurs ou JavaScript est désactivé sont en général les navigateurs en mode texte (robots d'indexation entre autre) et qelques ordinateurs en entreprise : si tu crée un magasin à l'intention de l'internaute lambda, tu as très peu de chances de voir le JavaScript désactivé. En outre, tu peux toujours ajouter un lien html vers la page suivante avec un message pour les paranos du virus en JavaScript ;)

par Zurg » 28 nov. 2005, 23:29

Oups, pardon, j'avais pas vu ton post !!

Ou alors il reste la solution un peu moins propre, on triche, et je redirige directement depuis la page panier.php vers la page commande.php, mais alors il faut que je la construise selon l'architecture de ma page index.php, avec des include et tout et tout...

Qu'en penses-tu ?

par Zurg » 28 nov. 2005, 23:20

Bon, alors voilà les nouvelles :

J'ai essayé la solution de Truc/jeff, mais le problème persiste.

Effectivement, j'ai du code HTML qui est envoyé par la page catalogue.php, comment contourner ce problème, sachant que je ne peux pas ne pas mettre ce code ?

par Truc » 28 nov. 2005, 21:53

Il est clair que ma page catalogue.php contient du HTML, mais pas moyen de s'en passer...
je récapitule alors:
page panier
ou se trouve: header("Location: catalogue.php?ec=COMMANDER");
catalogue.php inclus => centre.php
centre.php inclus => commande.php (avec header ("Location: login.php"]; )
il faut donc placer le code de "centre.php" avant le HTML de la page "catalogue.php". S'il n'y a pas moyen de faire autrement il n'y a plus que le javascript (pour le cas ou le js est désactivé un lien a cliquer)

par Zurg » 28 nov. 2005, 21:42

Effectivement, j'avais pas compris ce qu'il voulait dire, merci, je vais essayer puis je donne des nouvelles...

biensur il faut verifier sur toute les pages qui comportent un fichier inclus
Il est clair que ma page catalogue.php contient du HTML, mais pas moyen de s'en passer...

par Truc » 28 nov. 2005, 21:18

sinon je pense que jeff avait plus quelque chose comme ça en tete:
if (!isset ($_GET['rubrikID']))
    {
		if (isset($_GET['ec']) && ($_GET['ec'] == "COMMANDER"))
		{
		   $ec = $_GET['ec'];
		   if (!isset($_SESSION['statut'])||($_SESSION['statut'] != "client"))
			{
				header ("Location: login.php"];
				exit;
			}
			else
				include ("commande.php");			
		} 
ou encore un pb de exit apres le include.

le seul truc d'un peu bizarre, c'est que la page centre.php est inclue dans la page catalogue.php, cela peut-il jouer ?
biensur il faut verifier sur toute les pages qui comportent un fichier inclus

par Zurg » 28 nov. 2005, 21:17

J'ai beau chercher, je ne vois pas où se trouve le html, pas de echo ni rien, le seul truc d'un peu bizarre, c'est que la page centre.php est inclue dans la page catalogue.php, cela peut-il jouer ?

Sinon, merci Truc pour le ] à la place de ), je m'en suis rendu compte peu de temps après avoir posté, mais je n'ai pas corrigé sur le post...

par Truc » 28 nov. 2005, 21:01

Salut, je vois pas pourquoi on ne pourrai pas mettre plusieurs Header de redirection.

tu inclus le header sur la page "centre.php", on peut donc considèrer que le code de "commande.php" se trouve sur cette page !

regarde donc sur cette meme page (centre.php) si tu n'a pas du code Html ou autre.

sinon tu as ausi un ] a la place de ) dans ce meme header:
header ("Location: login.php"]<--;