Page 404 personnalisée
16 messages
• Page 1 sur 2 • 1, 2
- Thoomas
- Nouveau WRInaute

- Messages: 20
- Inscription: 14 Fév 2010
Page 404 personnalisée
Bonjour,
Quand un visiteur entre un lien incorrect comme monsite.com/indexx.php au lieu de monsite.com/index.php, il arrive sur une page 404 qu'il est possible de configurer.
Mais comment faire, pour créer aussi une page erreur 404 quand le paramètre d'un lien est incorrect, par exemple si monsite.com/page.php?page=la_page n'existe pas mais page.php existe.
Car, cette technique permettrait d'éviter aux hackers de mettre des paramètres "bidons" (injections SQL...) pour hacker le site (enfin je pense, contredisez moi si c'est le cas).
Merci d'avance,
Thomas.
Quand un visiteur entre un lien incorrect comme monsite.com/indexx.php au lieu de monsite.com/index.php, il arrive sur une page 404 qu'il est possible de configurer.
Mais comment faire, pour créer aussi une page erreur 404 quand le paramètre d'un lien est incorrect, par exemple si monsite.com/page.php?page=la_page n'existe pas mais page.php existe.
Car, cette technique permettrait d'éviter aux hackers de mettre des paramètres "bidons" (injections SQL...) pour hacker le site (enfin je pense, contredisez moi si c'est le cas).
Merci d'avance,
Thomas.
-

forty - WRInaute passionné

- Messages: 1595
- Inscription: 30 Oct 2008
Re: Page 404 personnalisée
il faut le faire en php :
- Code: Tout sélectionner
//if (...) { //rien dans la table pour $_GET['page']
header('Status: 404 Not Found', true, 404);
include(dirname(__FILE__) . '/erreur404.php'); // la page 404 personnalisée
exit;
}
-

KOogar - WRInaute accro

- Messages: 3884
- Inscription: 16 Nov 2004
Re: Page 404 personnalisée
je complete le IF de Forty
- Code: Tout sélectionner
<?php
$q = mysql_query("SELECT * FROM table WHERE la_page='$la_page' ");
if (($r = mysql_fetch_array($q)) === false) {
header('Status: 301 Moved Permanently', false, 301);
header('Location: ' . url_erreur());
exit;
}
?>
-

Julia41 - WRInaute passionné

- Messages: 1734
- Inscription: 31 Aoû 2007
Re: Page 404 personnalisée
Ouais enfin bon, le faire par SQL est un peu se compliquer la vie pour rien
Pas checké la structure mais c'est la technique la plus simple.
Et renvoyer il faut renvoyer un 4** pas un 3** sinon ce n'est pas un code erreur.
- Code: Tout sélectionner
if (isset($_GET['page'])) {
$page = trim($_GET['page']);
} else {
$page = 'defaut';
switch ($page) {
case 'un': require_once('ce_que_tu_veux_un.php');
break;
case 'deux': require_once('ce_que_tu_veux_deux.php');
break;
case 'defaut': require_once('ta_page_par_defaut');
break;
default:
require_once('ton_template_404.php');
}
Pas checké la structure mais c'est la technique la plus simple.
Et renvoyer il faut renvoyer un 4** pas un 3** sinon ce n'est pas un code erreur.
- Thoomas
- Nouveau WRInaute

- Messages: 20
- Inscription: 14 Fév 2010
Re: Page 404 personnalisée
forty a écrit:il faut le faire en php :
- Code: Tout sélectionner
//if (...) { //rien dans la table pour $_GET['page']
header('Status: 404 Not Found', true, 404);
include(dirname(__FILE__) . '/erreur404.php'); // la page 404 personnalisée
exit;
}
KOogar a écrit:je complete le IF de Forty![]()
- Code: Tout sélectionner
<?php
$q = mysql_query("SELECT * FROM table WHERE la_page='$la_page' ");
if (($r = mysql_fetch_array($q)) === false) {
header('Status: 301 Moved Permanently', false, 301);
header('Location: ' . url_erreur());
exit;
}
?>
Merci pour votre aide.
Quelques questions :
Il y a vraiment 3 "=" (===) ou tu en as mis un de trop ?
Le statut faudrait le passer en 404 non ?
Je met ça juste après mon </head> ?
Julia41 a écrit:Ouais enfin bon, le faire par SQL est un peu se compliquer la vie pour rien
- Code: Tout sélectionner
if (isset($_GET['page'])) {
$page = trim($_GET['page']);
} else {
$page = 'defaut';
switch ($page) {
case 'un': require_once('ce_que_tu_veux_un.php');
break;
case 'deux': require_once('ce_que_tu_veux_deux.php');
break;
case 'defaut': require_once('ta_page_par_defaut');
break;
default:
require_once('ton_template_404.php');
}
Pas checké la structure mais c'est la technique la plus simple.
Et renvoyer il faut renvoyer un 4** pas un 3** sinon ce n'est pas un code erreur.
Je n'ai pas trop compris ce que tu veux faire ici, comment sais tu que la valeur du paramètre n'existe pas avec ce code ?
-

KOogar - WRInaute accro

- Messages: 3884
- Inscription: 16 Nov 2004
Re: Page 404 personnalisée
les 3 signes d'égalité sont correcte. La fonction retourne des entiers et si la valeur n'est pas trouvé elle retourne un booléen
$a == $b Egal TRUE si $a est égal à $b
$a === $b Identique TRUE si $a est égal à $b et qu'ils sont de même type
j'ai mixer les 2 codes
$a == $b Egal TRUE si $a est égal à $b
$a === $b Identique TRUE si $a est égal à $b et qu'ils sont de même type
j'ai mixer les 2 codes
- Code: Tout sélectionner
<?php
$q = mysql_query(" SELECT *
FROM table
WHERE la_page='".$_GET['la_page']."'
");
if (($r = mysql_fetch_array($q)) === false ) {
header('Status: 404 Not Found', true, 404);
include(dirname(__FILE__) . '/erreur404.php'); // la page 404 personnalisée
exit;
}
?>
Dernière édition par KOogar le Mar Fév 16, 2010 13:18, édité 2 fois.
-

OTP - Modérateur

- Messages: 19361
- Inscription: 16 Déc 2005
Re: Page 404 personnalisée
KOogar a écrit:les 3 signes d'égalité sont correcte car la fonction retourne des entiers et si la valeur est trouvé elle retourne un booléen
$a == $b Egal TRUE si $a est égal à $b
$a === $b Identique TRUE si $a est égal à $b et qu'ils sont de même type
HS : merci, j'aurais appris quelque chose aujourd'hui !
- Thoomas
- Nouveau WRInaute

- Messages: 20
- Inscription: 14 Fév 2010
Re: Page 404 personnalisée
@Koogar : J'ai ajouté entre mes balises <head> le code suivant :
Si je passe un mauvais paramètre, j'ai l'erreur suivante qui boucle à l'infinie :
- Code: Tout sélectionner
<?php
$q = mysql_query(" SELECT *
FROM ma_table
WHERE lien='".$_GET['lien']."'
");
if (($r = mysql_fetch_array($q)) === false ) {
header('Status: 404 Not Found', true, 404);
include(dirname(__FILE__) . '/page404.php'); // la page 404 personnalisée
exit;
}
?>
Si je passe un mauvais paramètre, j'ai l'erreur suivante qui boucle à l'infinie :
- Code: Tout sélectionner
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\EasyPHP5.3.0\www\site\entete.php:4) in C:\Program Files\EasyPHP5.3.0\www\site\entete.php on line 112
- Thoomas
- Nouveau WRInaute

- Messages: 20
- Inscription: 14 Fév 2010
Re: Page 404 personnalisée
Merci j'ai mis ça à la toute première ligne. Cependant j'ai un autre problème (ils s'enchainent définitivement) :
Ça me parait bizarre qu'il y ait un dépassement de mémoire...
- Code: Tout sélectionner
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261900 bytes) in C:\Program Files\EasyPHP5.3.0\www\site\entete.php on line 1
Ça me parait bizarre qu'il y ait un dépassement de mémoire...
16 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Page 404 personnalisée
- Page 404 personnalisée et sous domaine
- [Résolu] erreur 404 personnalisée
- Erreur 404 personnalisée et URL erronées
- 2 questions (404 personnalisée et url rewrite)
- absence robots.txt et 404 personnalisée
- Problème avec Erreur 404 personnalisée et .htaccess
- 404 Personnalisée qui renvoit un 302 : Problématique ?
- Page d'accueil personnalisée Dell / Google
- Google IG devient iGoogle (page d'accueil personnalisée)
Consultez la description détaillée des produits ou services de Google suivants : Page d'accueil personnalisée de Google
- Test HTTP header
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée. - Calcul d'indice de densité
Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page. - Calcul du taux de liens vers des pages internes
Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
Qui est en ligne
Utilisateurs parcourant ce forum: Google Adsense [Bot] et 3 invités


