Créations de pseudo frames

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 : Créations de pseudo frames

Créations de pseudo frames

par Faust » 01 nov. 2005, 15:19

Ah! Tout marche comme je le voulais.

J'aurais dû suivre le code de Cyrano à la lettre :P et mettre
$page = isset ($_GET['page']) ? $_GET['page'] : '';
et non
$page = isset ($_GET['page']) ? $_GET['page'] : 'default';
Pour ce code-ci :
if (!empty($page) && !in_array($page, $valid))
Je crois que j'avais mal compris le code ; il signifie bien que si la variable $page n'est pas nulle ET qu'elle est différente des valeurs du tableau $valid, on renvoit une page d'erreur?

Et encore merci à vous deux pour votre aide. :D

par Truc » 01 nov. 2005, 14:14

Truc, $_GET['page'] ne renvoie pas une valeur littérale? :?
Vu la façon dont tu utilisait le tableau ça laissait entndre que tu passait tes pages avec des entiers
$valid{$_GET['page']}
et ton tableau
$valid = array('news','test','error'); 
ici les indexes de ton tableau sont (0 => "news",1 =>" test",2 =>" error")
donc tu comparais des variables "incomparables" :wink:

Donc, pour ton autre probleme puisque tu affecte "default" a $page si la variable n'existe pas tu toi ajouter "default" a ta liste ($valid) de pages qui ne renvoi pas d'erreur.

in_array(), verifi si une valeur est comprise dans un tableau
et pour empty() je te renvois sur la doc :wink:
Pour encore plus de détail regarde ce post

Créations de pseudo frames

par Faust » 01 nov. 2005, 13:27

Merci pour ton code Cyrano, il fonctionne correctement mais j'ai encore un problème : la page index.php m'affiche également une page d'erreur.
Comment faire pour que si aucune variable page n'est entrée, on inclut la page par défaut?

Voici le code :
<?php
$valid = array('news','test','error');

$page = isset ($_GET['page']) ? $_GET['page'] : 'default';

if (!empty($page) && !in_array($page, $valid))
{
	header("Location: index.php?page=error");
}

?>
<?php include('page_header.php')?>

<?php include('page_menu.php')?>

<?php
switch($page) {

case 'news':
include ('page_body.php');
break;

case 'test':
include ('page_body.php');
break;

case 'error':
include ('page_error.php');
break;

default:
include('page_body.php');
break;
}
?>

<?php include('page_footer.php')?>
Et aussi, que signifie la fonction in_array($var1, $var2)?

!empty($var) veut-il dire que $var n'est pas vide?

Truc, $_GET['page'] ne renvoie pas une valeur littérale? :?

Merci encore pour votre aide. :)

par Cyrano » 01 nov. 2005, 09:56

On va simplifier un peu :
<?php
include('page_header.php');
include('page_menu.php');
/* Récupération du paramètre s'il existe */
$page = isset($_GET['page']) ? $_GET['page'] : "";
/* Gestion de la page d'erreur' */
$pages_valides = array("news", "test");
if(!empty($page) && !in_array($page, $pages_valides))
{
    $page = 'error';
}
/* Affichage */
switch($page)
{
    case 'news':
    include ('page_body.php');
    break;

    case 'test':
    include ('page_body.php');
    break;

    case 'error':
    include ('page_error.php');
    break;

    default:
    include('page_body.php');
    break;
}
include('page_footer.php')
?>
Suivez bien le raisonnement :
  1. On récupère le paramètre s'il existe ;
  2. On crée une liste des pages valides pour gérer le renvoi automatique vers une page erreur : cette liste devra être augmentée au fil de la création de nouvelles pages;
  3. On teste la valeur du paramètre s'il y en a un : s'il n'y en a pas, on ira sur la page par défaut, mais s'il y a un paramètre, on vérifie qu'il est dans la liste, s'il n'y est pas, on renvoie vers la page d'erreur;
  4. On affiche alors la page selon le paramètre prédéfini.

par Truc » 01 nov. 2005, 03:37

ce test n'est pas bon
if ($_GET['page'] !== $valid{$_GET['page']})
tu compare un chiffre ($_GET['page'],numérique) avec un string (news, pour page=0)
Donc dans tous les cas le test est verifié:
si page = 0 tu compare a "news" hors 0!="news" et INT ! = string

revoi ce test :wink:

Créations de pseudo frames

par Faust » 31 oct. 2005, 16:15

Bonjour,

J'ai repris mes tests il y a quelques temps seulement.
Mon code est un peu différent des codes précédents mais mon problème est assez étrange : la page se charge indéfiniment.
Je ne comprends pas où est l'erreur.
<?php
$valid = array('news','test','error');

if (isset ($_GET['page'])) {

	if ($_GET['page'] !== $valid{$_GET['page']}) {

		header("Location: index.php?page=error");

	} else {

		$page = $_GET['page'];

	}

} else {

	$page = 'default';

}
?>
<?php include('page_header.php')?>

<?php include('page_menu.php')?>

<?php
switch($page) {

case 'news':
include ('page_body.php');
break;

case 'test':
include ('page_body.php');
break;

case 'error':
include ('page_error.php');
break;

default:
include('page_body.php');
break;
}
?>

<?php include('page_footer.php')?>

par charabia » 07 sept. 2005, 12:00

Je ne sais pas si je vais te dire une bêtise mais si tu essayais de mettre ceci :
$pageOK = array('' => 'index.php',
                  'news' => 'news.php', 
                  'accueil' => 'accueil.php');

Créations de pseudo frames

par Faust » 06 sept. 2005, 17:40

Mon problème avec cette méthode c'est que si j'entre l'adresse www.monsite.com/index.php, la page affichera également une erreur 404. :?
Je voudrais pouvoir afficher la page d'accueil même si l'adresse n'est que index.php. J'ai déjà vu quelque chose comme ce que je veux faire avec une page d'erreur et tout sur un site, je ne me rappelle plus lequel. :roll:

par charabia » 05 sept. 2005, 21:10

Bé si ça existe sur le code de phpdebutant. Il y a une page de redirection si la page n'existe pas dans le tableau.
<div class="entete" >
<?php 
  include('entete.htm');  // Nous appelons l'entete du site
?>
</div>
<div class="colonneGauche" >
<?php 
  include('menu.htm');   // Nous appelons notre menu
?>
</div>
<div class="colonneDroite">
<?php

  // On définit le tableau contenant les pages autorisées
  // ----------------------------------------------------
  $pageOK = array('news' => 'news.php', 
                  'accueil' => 'accueil.php');

  // On teste que le paramètre d'url existe et qu'il est bien autorisé
  // -----------------------------------------------------------------
  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
    include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
  } else {
    include('accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
  }

?>
</div> <div class="pied">
<?php 
  include('pied.htm');   // Nous appelons le pied de page
?>
</div>
A la place d'accueil, tu peux mettre ta page 404 non ?

Créations de pseudo frames

par Faust » 05 sept. 2005, 18:30

Oui, j'ai déjà survolé cet article mais je souhaite pouvoir rediriger les visiteurs sur une page d'erreur 404 si l'adresse entrée est incorrecte.
Le problème de l'article PHP Débutant est qu'il n'explique pas comment faire. J'ai déjà regardé de nombreux tutoriaux que j'ai trouvé sur Internet sur les pseudo-frames, mais aucun d'entre eux ne traîtent de ce point-ci.

par charabia » 05 sept. 2005, 09:50

Pour ce qui est de pseudo frames, regarde cet article de phpdebutant qui est très bien :
http://www.phpdebutant.org/article68.php

Créations de pseudo frames

par Faust » 04 sept. 2005, 14:14

Avec ta méthode Grummfy, toutes les pages dans le style index.php?page=unepage me renvoient sur la page d'erreur, même pour index.php?page=news.

Pour ta méthode Truc, tu veux que je code ma page de cette manière?
<?php include('page_header.php')?> 
<?php include('page_menu.php')?> 

<?php 
if (!isset ($_GET['page'])) { 
  $page= ''; 
} elseif ($_GET['page']!= 'news' || $_GET['page']!= 'test') { 
  $page= 'error'; 
} 
else 
$page= $_GET['page']; 

switch($page) { 
case 'news': 
include ('page_body.php'); 
break; 

case 'test': 
include ('page_body.php'); 
break; 

case 'error': 
include ('page_error.php'); 
break; 

default: 
include('page_body.php'); 
break; 
} 
?> 

<?php include('page_footer.php')?> 

par Truc » 03 sept. 2005, 01:15

essai avec:
$page=$_GET['page'];
switch($page)

par Grummfy » 03 sept. 2005, 01:14

Hello,
essaye en utilisant ceci:
<?php include('page_header.php')?>
<?php include('page_menu.php')?>

<?php
if (!isset ($_GET['page'])) {
  $page= '';
} elseif ($_GET['page']!= 'news' || $_GET['page']!= 'test') {
  $page= 'error';
}
else {
 $page= $_GET['page'];
}
switch($page) {
case 'news':
include ('page_body.php');
break;

case 'test':
include ('page_body.php');
break;

case 'error':
include ('page_error.php');
break;

default:
include('page_body.php');
break;
}
?>

<?php include('page_footer.php')?>

Créations de pseudo frames

par Faust » 03 sept. 2005, 01:02

J'ai un problème pour créer des pseudo frames avec une page d'erreur 404.
Avec ce code, quand je clic sur un lien comme index.php?page=lol ou n'importe lequel d'autre, il me renvoit toujours sur une page qui inclut le fichier page_body.php.
<?php include('page_header.php')?>
<?php include('page_menu.php')?>

<?php
if (!isset ($_GET['page'])) {
  $_GET['page']= '';
} elseif ($_GET['page']!= 'news' || $_GET['page']!= 'test') {
  $_GET['page']= 'error';
}
else {
  $_GET['page']= $_GET['page'];
}
switch($page) {
case 'news':
include ('page_body.php');
break;

case 'test':
include ('page_body.php');
break;

case 'error':
include ('page_error.php');
break;

default:
include('page_body.php');
break;
}
?>

<?php include('page_footer.php')?>
[/i]