begin process at 2010 02 09 19:42:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > NAVIGATION 404 - FLOPTWO

NAVIGATION 404 - FLOPTWO


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :pseudoframe, erreur404, htaccess, url, rewriting Niveau :Débutant Date de création :11/06/2006 Date de mise à jour :14/06/2006 01:23:10 Vu / téléchargé :2 983 / 243

Auteur : floptwo

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Navigation 404 - floptwo :
Il s'agit d'un script permettant de naviguergrace a la page d'erreur 404.
C'est une sorte d'URL Rewriting.
C'est à peu près le même principe que les pseudo-frames sauf qu'au lieu de monsite.com/index?rub=blabla (ce dont j'ai horreur !) on a monsite.com/blabla/
Ca a l'avantage de perturber les petits curieux qui s'amusent à déchiffer les URL et puis je trouve ça plus original et plus propre.

Source

  • <?php
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * *
  • * Navigation 404 - floptwo :
  • * Il s'agit d'un script permettant de naviguer
  • * grace a la page d'erreur 404.
  • * C'est une sorte d'URL Rewriting.
  • * C'est à peu près le même principe que les
  • * pseudo-frames sauf qu'au lieu de
  • * monsite.com/index?rub=blabla (ce dont j'ai horreur !)
  • * on a monsite.com/blabla/
  • * Ca a l'avantage de perturber les petits curieux
  • * qui s'amusent à déchiffer les URL et puis je trouve
  • * ça plus original et plus propre.
  • *
  • * Script réalisépar floptwo (floptwo@gmail.com)
  • * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • /* Je ne décrirais pas la partie CSS car ce n'est pas
  • * fondamental pour le script.
  • * Il faut avant tout créer un fichier .htacces à la racine
  • * de votre site. Il doit contenir :
  • * ErrorDocument 404 /index.php (l'URL de votre page de
  • * pseudo-frame).
  • * (Pour plus d'info voir les tutoriaux sur le htaccess)
  • *
  • * Pour la navigation on se sert des variable PHP (ou
  • * variables d'environnement que l'on obtient en tappant
  • * phpinfo()).
  • * On se sert ici de _SERVER["REQUEST_URI"] pour récupérer
  • * ce qui nous interesse c'est à dire la page demandée qui
  • * n'a pas été trouvée.
  • * Ensuite c'est comme les pseudo frames (include($page)...).
  • * Si vous ne connaissez pas, cherchez un tutoriel sur les
  • * pseudo-frames, il y en a des milliers et dans toutes
  • * les langues.*/
  • $a = explode('/', $_SERVER["SCRIPT_NAME"]);
  • $a_count = count($a);
  • $b = $a[$a_count-1];
  • $b_count = strlen($b);
  • $adresse_index = substr($_SERVER["SCRIPT_NAME"],0, -($b_count+1));
  • /* $_SERVER["REQUEST_URI"] :
  • * retourne l'adresse saisie (l'adresse censée générer
  • * une erreur 404).
  • * substr($var,1) retire le 1er caratère : un slash. */
  • $adresse = str_replace( $adresse_index.'/', '', $_SERVER["REQUEST_URI"]);
  • /* On hache l'adresse à chaque slash '/' et retourne les
  • * valeurs dans un tableau.
  • * $tab[0] correspond au premier élément retrouver avant
  • * un slash '/', $tab[1] deuxièmem élément, etc ...*/
  • $adresse_tableau = explode ('/', $adresse);
  • if ($adresse_tableau[0] =='script')
  • {
  • if (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'calendrier')
  • {
  • $page = 'page_script_calendrier.php';
  • }
  • elseif (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'bidon')
  • {
  • $page = 'page_script_bidon.php';
  • }
  • else
  • {
  • $page = 'page_script.php';
  • }
  • }
  • elseif($adresse_tableau[0] =='contact')
  • {
  • $page = 'page_contact.php';
  • }
  • elseif($adresse_tableau[0] == '')
  • {
  • $page = 'main.php';
  • }
  • else
  • {
  • $page = 'page_erreur.php';
  • }
  • ?>
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  • <html>
  • <head>
  • <STYLE type="text/css">
  • @IMPORT URL(css.css);
  • </STYLE>
  • <title>Navigation 404 - floptwo</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • </head>
  • <body>
  • <table width="500" height="400" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#999999">
  • <tr>
  • <td><table width="100%" height="400" border="0" align="center" cellpadding="2" cellspacing="1">
  • <tr align="center" bgcolor="#CCCCCC">
  • <td height="20" colspan="2"> <div class="titre1">Monsite.com</div></td>
  • </tr>
  • <tr bgcolor="#CCCCCC">
  • <td height="10" colspan="2"> <div class="titre2" align="right"><?php echo $adresse ?></div></td>
  • </tr>
  • <tr bgcolor="#999999">
  • <td width="400" rowspan="2" valign="top" bgcolor="#FFFFFF">
  • <div>
  • <?php
  • //Contrôle si le fichier $page existe
  • if(file_exists($page))
  • {
  • //Si celui-ci existe, on l'insère dans la page centrale
  • include($page);
  • }
  • else
  • {
  • //Sinon, on insère la page avec le message d'erreur
  • include('page_erreur.php');
  • }
  • ?>
  • </div></td>
  • <td height="10" bgcolor="#CCCCCC"><p class="titre2" align="center">Menu</p></td>
  • </tr>
  • <tr>
  • <td width="100" valign="top" bgcolor="#FFFFFF">
  • <div class="text">
  • <li><a href="<?php echo $adresse_index ?>/">Acceuil</a></li>
  • <hr/>
  • <span>
  • <div><a href="<?php echo $adresse_index ?>/script">Script</a></div>
  • <li><a href="<?php echo $adresse_index ?>/script/calendrier">Calendrier</a></li>
  • <li><a href="<?php echo $adresse_index ?>/script/bidon">Bidon</a></li>
  • </span>
  • <hr/>
  • <div><a href="<?php echo $adresse_index ?>/contact">Contact</a></div>
  • </div></td>
  • </tr>
  • </table></td>
  • </tr>
  • <tr>
  • <td bgcolor="#FFFFFF">
  • <div align="center" class="text">Script r&eacute;alis&eacute; par floptwo
  • (floptwo@gmail.com)</div></td>
  • </tr>
  • </table>
  • <?php
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
  • * script réalisé par floptwo (floptwo@gmail.com)
  • * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • ?>
  • </body>
  • </html>
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * Navigation 404 - floptwo :
 *   Il s'agit d'un script permettant de naviguer
 *   grace a la page d'erreur 404.
 *   C'est une sorte d'URL Rewriting.
 *   C'est à peu près le même principe que les 
 *   pseudo-frames sauf qu'au lieu de 
 *   monsite.com/index?rub=blabla (ce dont j'ai horreur !) 
 *   on a monsite.com/blabla/
 *   Ca a l'avantage de perturber les petits curieux
 *   qui s'amusent à déchiffer les URL et puis je trouve
 *   ça plus original et plus propre.
 *
 *   Script réalisépar floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
/* Je ne décrirais pas la partie CSS car ce n'est pas
 * fondamental pour le script. 
 
 * Il faut avant tout créer un fichier .htacces à la racine
 * de votre site. Il doit contenir :
 * ErrorDocument 404 /index.php (l'URL de votre page de 
 * pseudo-frame).
 * (Pour plus d'info voir les tutoriaux sur le htaccess)
 *
 * Pour la navigation on se sert des variable PHP (ou 
 * variables d'environnement que l'on obtient en tappant 
 * phpinfo()). 
 * On se sert ici de _SERVER["REQUEST_URI"] pour récupérer 
 * ce qui nous interesse c'est à dire la page demandée qui
 * n'a pas été trouvée.
 * Ensuite c'est comme les pseudo frames (include($page)...).
 * Si vous ne connaissez pas, cherchez un tutoriel sur les
 * pseudo-frames, il y en a des milliers et dans toutes 
 * les langues.*/

$a = explode('/', $_SERVER["SCRIPT_NAME"]);
$a_count = count($a);
$b = $a[$a_count-1];
$b_count = strlen($b);
$adresse_index = substr($_SERVER["SCRIPT_NAME"],0, -($b_count+1));

/* $_SERVER["REQUEST_URI"] :
 * retourne l'adresse saisie (l'adresse censée générer
 * une erreur 404).
 * substr($var,1) retire le 1er caratère : un slash. */
$adresse = str_replace( $adresse_index.'/', '', $_SERVER["REQUEST_URI"]); 

/* On hache l'adresse à chaque slash '/' et retourne les 
 * valeurs dans un tableau. 
 * $tab[0] correspond au premier élément retrouver avant
 * un slash '/', $tab[1] deuxièmem élément, etc ...*/
$adresse_tableau = explode ('/', $adresse); 

if ($adresse_tableau[0] =='script')
{
	if (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'calendrier')
	{
		$page = 'page_script_calendrier.php';
	}
	elseif (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'bidon')
	{
		$page = 'page_script_bidon.php';
	}
	else
	{
		$page = 'page_script.php';
	}
}
elseif($adresse_tableau[0] =='contact')
{
	$page = 'page_contact.php';
}
elseif($adresse_tableau[0] == '')
{
	$page = 'main.php';
}
else
{
	$page = 'page_erreur.php';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<STYLE type="text/css">	
	@IMPORT URL(css.css);	
</STYLE>

<title>Navigation 404 - floptwo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="500" height="400" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#999999">
  <tr> 
    <td><table width="100%" height="400" border="0" align="center" cellpadding="2" cellspacing="1">
        <tr align="center" bgcolor="#CCCCCC"> 
          <td height="20" colspan="2"> <div class="titre1">Monsite.com</div></td>
        </tr>
        <tr bgcolor="#CCCCCC"> 
          <td height="10" colspan="2"> <div class="titre2" align="right"><?php echo $adresse ?></div></td>
        </tr>
        <tr bgcolor="#999999"> 
          <td width="400" rowspan="2" valign="top" bgcolor="#FFFFFF"> 
            <div> 
              <?php 
			    //Contrôle si le fichier $page existe 
				if(file_exists($page)) 
				{ 
				    //Si celui-ci existe, on l'insère dans la page centrale
					include($page); 
				}
				else
				{
				    //Sinon, on insère la page avec le message d'erreur
					include('page_erreur.php'); 
				}
			?>
            </div></td>
          <td height="10" bgcolor="#CCCCCC"><p class="titre2" align="center">Menu</p></td>
        </tr>
        <tr> 
          <td width="100" valign="top" bgcolor="#FFFFFF"> 
		    <div class="text"> 
				<li><a href="<?php echo $adresse_index ?>/">Acceuil</a></li>
				<hr/>
				<span>
					<div><a href="<?php echo $adresse_index ?>/script">Script</a></div>
                 	<li><a href="<?php echo $adresse_index ?>/script/calendrier">Calendrier</a></li>
                  	<li><a href="<?php echo $adresse_index ?>/script/bidon">Bidon</a></li>
               </span>
			   <hr/>	
				<div><a href="<?php echo $adresse_index ?>/contact">Contact</a></div>
            </div></td>
        </tr>
      </table></td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF"> 
      <div align="center" class="text">Script r&eacute;alis&eacute; par floptwo 
        (floptwo@gmail.com)</div></td>
  </tr>
</table>
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * script réalisé par floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
?>
</body>
</html>

 Conclusion

Noubliez pas de bien configurer le .htaccess avant de le tester

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

12 juin 2006 01:02:30 :
Corriger quelques fautes et j'ai rajouté quelques explications.
14 juin 2006 01:23:10 :
Mise a jour de procéder, mais ya comme un bug que je n'arrive pas a résoudre, mais ca fonctionne.

 Sources du même auteur

CLASS MYSQL (FLOPTWO)
Source avec Zip Source avec une capture NUAGE DE MOTS OU TAG CLOUD-FLOPTWO
Source avec Zip UPLOAD - FLOPTWO
Source avec Zip Source avec une capture CALENDRIER - FLOPTWO

 Sources de la même categorie

Source avec une capture PAGINATION EN PHP par Orangina
Source avec Zip POO - DEBUGGER par DiGhan
Source avec Zip CRAWLER DE SITE EN PHP par Mcjo
DÉCOUPAGE D'UN TEXTE EN FONCTION DES SAUTS DE LIGNES par biloubil
RÉCUPÉRER LE CHEMIN RELATIF D'UN OBJET PAR RAPPORT À LA RACI... par FredPsy

 Sources en rapport avec celle ci

FONCTION GET EN PHP : RECUPERER UNE PAGE SUR UN SITE DISTANT par nax333
Source avec Zip TÉLÉCHARGER LES VIDEOS DE YOUTUBE AVEC PERMALIEN DEPUIS YOUT... par amteur
GÉRER UN .HTPASSWD par coockiesch
CONTROLE D'ACCÈS AVEC WWW-AUTHENTICATE: par monsieurjean
Source avec Zip URL REWRITING EN PHP (RESPECTE LES RÉGLES DU MOD_REWRITE) par Shisui

Commentaires et avis

Commentaire de pcgpegase le 11/06/2006 22:47:15

Bonjour,

Interessant comme source :) Cela faisait un certain temps que je cherchais quelque chose de similaire ;)

Par contre, quand je clic sur "calendrier" il me dit :
The requested URL /calendrier was not found on this server.

Mais quand je clic sur "contact" il affiche bien contact.php :x

bye

Commentaire de audayls le 11/06/2006 23:17:25

Bonsoir,
En gros c'est en quelque sorte de l'URL Rewriting avec PHP non ?

Commentaire de floptwo le 11/06/2006 23:23:42

Salut !
Je ne sais pas ce qu'est de l'URL Rewriting, je me renseignerai.

Pour ce script j'ai mis vraiment la base, si vous comprenez le principe vous pouvez faire de grande choses. Moi, je le developpe beaucoup plus pour mon site mais comme les explication serai redondantes...
Tant mieux si ca vous plait !  ;)

Commentaire de floptwo le 11/06/2006 23:33:51

Resalut!
Donc j'ai lu quelques articles sur l'URL Rewriting, et donc oui on peut dire que c'est un peut ça.
En tout cas si ça ne l'est pas il serait facile d'en faire une imitation efficace.

Commentaire de WhiteDwarf le 12/06/2006 03:00:32

Salut,

Le seul problème, c'est que tu peux pas utiliser les stats du serveur, vu que toutes tes connexions aboutissent à des 404, lol... et je ne sais pas comment réagissent les moteurs de recherche par rapport à ca... :p

L'idée est sympas et bien mise en oeuvre..

A mon sens l'url rewritting est plus simple (quoi que les regex c'est pas encore mon truc), et surtout pas besoin de faire un switch... si t'a vraiment beaucoup de pages c'est long à faire.

pcgpegase => je pense que le problème avec la page contact c'est au niveau de l'include car il y a une majuscule dans le nom du fichier... certain serveurs ne font pas la différence et d'autres la font :) Ca dépend si c'est Windows ou Linux :)

@++

Commentaire de Palleas_44 le 12/06/2006 13:43:46

Si mes souvenirs sont bons c'est la méthode utilisée sur linuxfr ^o)

Commentaire de abdoulax le 12/06/2006 15:33:53

Je veux pas parler trop vite mais je crois que l'URL rewriting est la meilleur façon d'être référencé par les moteurs... Je ne suis pas un expert en la matière mais ce code est belle et bien de l'url rewriting. Par contre j'ai pas essayé mais à mon avis ça ne marche pas sous free...

Par contre ce qui marche sous free c'est :
<?php
$param = $_SERVER['QUERY_STRING'];
$para = explode("/",$param);

if ( $para[0] == "compte" )
include("compte.php);
/* ...... etc */
?>

ça par contre ce n'est pas de l'url rewriting, et ça donnerai http://lesitefree.free.fr/?compte
Y a d'autre solution encore plus poussé ms celle ci est assez simple à utiliser...

Have fun

Commentaire de Palleas_44 le 12/06/2006 16:49:13

L'url rewriting est effectivement desactivé chez free mais pourquoi le script de flowtwo ne marcherait il pas ? Tu as la possibilité d'utiliser les htaccess chez free pour la gestion des erreurs donc pas de soucis jpense ^o)

Commentaire de abdoulax le 12/06/2006 16:59:55

En faite ça marche en partie, mais y a des soucis, par exemple si tu tape http://lesite.free.fr/contact et qu'un fichier contact.php existe celui-ci sera affiché. Cependant je pense qu'il doit y avoir moyen de configurer ça avec le htaccess... Je m'ettais penché sur la question mais je me suis vite arrêté, cependant je pense qu'il doit etre possible d'utiliser le principe avec un peu de bricolage. Mais je sais que quand j'ai essayé j'ai eu plein de soucis. Le truc aussi c'est que mes testes je les ai fait sur un site existant, or je pense que si on commence le site dès le début avec cette technique il doit y avoir moyen de s'en sortir...

Enfin voili voilou,

Have fun

Commentaire de floptwo le 12/06/2006 17:38:10

Salut!

Tu peux resoudre ton probleme facilement en observant le _SERVER["REQUEST_URI"] que te retourne ton serveur.

J'ai fais les essais depuis un site http://www.site.com/monsite/index.php
donc le _SERVER["REQUEST_URI"] retournait "/monsite/"
Mais si ton index est à la racine (http://www.site.com/index.php) le _SERVER["REQUEST_URI"] devrait te retourner "/" donc apres l'explode il n'y a rien de la tableau $tab.
Donc pour une URL qui serait http://www.site.com/ton_url le _SERVER["REQUEST_URI"] retournera /ton_url et donc tu devra tester le $tab[0] au lieu du $tab[1].

Ce script requiert une petite configuration adapté à son propre serveur pour qu'il fonctionne.
Je pourrai le modifier pour qu'il s'adapte mais ca sera pas avant la fin de la semaine et la configuration du htaccess sera toujours à faire.

Commentaire de kankrelune le 13/06/2006 03:11:06

Ouep... marrant comme technique mais deux problèmes... .. .

-1- chaud voir impossible à mettre en oeuvre pour un gros site et/ou à l'architecture complexe

-2- ça risque de se gater si tu passe des variable en $_GET

pour le référencement ça ne change rien normalement... .. .

@ abdoulax... ce code est une alternative à l'url rewriting mais ça n'en est pas... par contre il est vrai que les bots des moteurs de recherche (surtout google) sont frileux avec les url contenant beaucoups de variables passées via $_GET et que l'url rewriting est la meilleur manière d'optimiser le référencement sur ce point... mais il ne faut pas perdre de vue que ce n'est pas le seul paramètre à prendre en compte... .. .

@ tchaOo°

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

URL Rewriting & .htaccess [ par dorian53 ] Bonjour,j'aimerais pouvoir tester l'URL Rewriting en local sur mon PC. Je suis sous ephp 1.7. Pour le moment j'ai laissé toutes les config par défaut, urlrewriting htaccess free [ par rockclimber ] Voila, je m'explique : J'aimerais que mon site chez free g&#232;re l'url-rewriting. Pour cela je passe par l'erreur 404, donc je redirige dans mon fi htaccess et fin de session [ par jyhes ] Bonjour,La question est forcément saugrenie, mais existe-t-il un moyen de clore une session ouverte sur un dossier protégé par un htacces/htpasswd ?A1 Fichier HTACCESS [ par slhuilli ] Bjr,Quelqu'un aurat il déjàç développé un outiil PHP générant un fichier .HTACCESS car j'ai beaucoup de mal d l'écrire.Merci de vos réponses.SLSébasti Url rewriting (htaccess) [ par levampiremarius ] Bonjour, Voil&#224;, j'ai un petit probl&#232;me avec mon syst&#232;me d'url rewriting. Tout d'abord je vous donne le contenu de mon htaccess Rewri url rewriting [ par LaurentKOogar ] Bonjourvoila, je voudrais faire une url rewriting sur un annauire qui a 12 000 pages index&#233;s dans GooglePas compliquer au niveau du rewriting ave [prob] Image Jpeg - php - URL Rewriting [ par ouned ] bonjour,voici mon probl&#232;mej'ai un fichier .HTACCESS qui r&#233;&#233;crit une url pour acc&#232;der &#224; une image :RewriteRule ^websites\/b2n\ URL rewriting [ par Anthotill ] Bonjour &#224; tous !Je me tire les cheveux pour trouver un mod URL rewriting.sur ce site j'ai trouver ceci : http://www.phpcs.com/code.aspx?ID=33296& URL rewriting simple problème [ par bricethenetman ] Bonjour, je viens de trouver cette source http://www.phpcs.com/code.aspx?ID=33296&nbsp;mais je n'arrive pas &#224; la configurer (je d&#233;bute en ur url rewriting [ par titeuf974 ] bonjour,je souhaierai 'rewriter', les pages du livre de mon site. je souhaiterai passer de la structure suivante :www.monsite.com/guestbook.php?lang=f


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales