Erreur 404 personnalisée

Contenu du snippet

Hello, ceci est ma page d'erreur 404 (démo : http://diabloporc.free.fr/404040404/), je vous la donne gracieusement :P vous pouvez ajouter vos propres messages d'erreurs.

Source / Exemple :


<?php
         // config client
			$so = $_SERVER['HTTP_USER_AGENT'];
			$windowsxp = preg_match('/windows nt 5.1/i', $so);
			$windowsxp2 = preg_match('/windows xp/i', $so);
			$linux = preg_match('/linux/i', $so);
			$windowsme = preg_match('/win 9x 4.90/i', $so);
			$windowsme2 = preg_match('/windows me/i', $so);
			$windows2k = preg_match('/windows nt 5.0/i', $so);
			$windows2kb = preg_match('/windows 2000/i', $so);
			$windowsnt = preg_match('/windows nt 3.1/i', $so);
			$windowsnt2 = preg_match('/windows nt 3.5.0/i', $so);
			$windowsnt3 = preg_match('/windows nt 3.5.1/i', $so);
			$windowsnt4 = preg_match('/windows nt 4.0/i', $so);
			$windows98 = preg_match('/windows 98/i', $so);
			$windows95 = preg_match('/windows 95/i', $so);

			if ($windowsxp == 1 or $windowsxp2 == 1) {
			$OS = 'Windows XP';
			} else if ($linux == 1) {
			$OS = 'Linux';
			} else if ($windowsme == 1 or $windowsme2 == 1) {
			$OS = 'Windows ME';
			} else if ($windows2k == 1 or $windows2kb == 1) {
			$OS = 'Windows 2000';
			} else if ($windowsnt == 1 or $windowsnt2 == 1 or $windowsnt3 == 1 or $windowsnt4 == 1) {
			$OS = 'Windows NT';
			} else if ($windows98 == 1 and $windowsme != 1) {
			$OS = 'Windows 98';
			} else if ($windows95 == 1) {
			$OS = 'Windows 95';
			} else {
			$OS = 'Non identifié';
			}

			$b = $_SERVER['HTTP_USER_AGENT'];
			$ie50 = preg_match('/MSIE 5.0/i', $b);
			$ie55 = preg_match('/MSIE 5.5/i', $b);
			$ie60 = preg_match('/MSIE 6.0/i', $b);
			$opera = preg_match('/opera/i', $b);

			if ($ie40 == 1) {
			$browser = 'Internet Explorer 4.0';
			} else if ($ie50 == 1) {
			$browser = 'Internet Explorer 5.0';
			} else if ($ie55 == 1) {
			$browser = 'Internet Explorer 5.5';
			} else if ($ie60 == 1) {
			$browser = 'Internet Explorer 6.0';
			} else if ($opera == 1) {
			$browser = 'Opera';
			} else {
			$browser = 'Non identifié';
			}
		   $ip_client = (getenv('HTTP_X_FORWARDED_FOR') ? getenv('HTTP_X_FORWARDED_FOR') : getenv('REMOTE_ADDR'));
		   $dns = gethostbyaddr($ip_client);
		   if($dns==''){$dns='Non identifiée';}
		   $date = date(dmy);
		   $heure = date(His);
$errors = array();

$errors[0]='001 $OS chargé - Système en danger.';
$errors[1]='002 Pas d\'erreur - Pas encore.';
$errors[2]='003 Erreur de Lien Dynamique - Votre erreur est maintenant dans tous les fichiers.';
$errors[3]='004 Erreur erronée - Rien ne va mal.';
$errors[4]='005 Tentative de multitâche - Système désorienté.';
$errors[5]='006 Erreur méchante - Desqview a été détecté sur l\'unité de disque.';
$errors[6]='007 Erreur de coût du système - Somme dépensée insuffisante pour le matériel.';
$errors[7]='008 Fenêtre cassée - Recherche de débris de verre.';
$errors[8]='009 Horrible bug rencontré - Dieu seul sait ce qui a pu arriver.';
$errors[9]='00A Débordement de littérature promotionnelle - Boîte à lettres pleine.';
$errors[10]='00B Espace disque insuffisant - Libérez au moins 50 Go.';
$errors[11]='00C Erreur de mémoire - Il en faut plus. Plus ! Plus ! Encore plus !';
$errors[12]='00D Fermeture de la fenêtre - Ne pas regarder dehors.';
$errors[13]='00E Ouverture de la fenêtre - Ne pas regarder à l\'intérieur.';
$errors[14]='00F Erreur inconnue - Veuillez nous dire comment elle est apparue.';
$errors[15]='010 Réservée pour les erreurs futures que feront nos développeurs.';
$errors[16]='011 Erreur d\'erreur : Erreur inconnue';
$errors[17]='012 Erreur : pilote du CD-Rom introuvable, insérez le CD de $OS pour continuer.';
$errors[18]='013 Erreur inattendue - Hein ?';
$errors[19]='014 Clavier verrouillé - Essayez n\'importe quoi.';
$errors[20]='018 Erreur non récupérable - Le système a été détruit.<br>    Achetez-en un nouveau. L\'ancienne licence de $OS n\'est plus du tout valable.';
$errors[21]='019 Erreur utilisateur - Ce n\'est pas notre faute !<br>      C\'est pas vrai ! Non ! C\'est de la votre !';
$errors[22]='01A Réécriture du système d\'exploitation<br>    Veuillez réinstaller tous vos logiciels. Nous sommes sincèrement désolés.';
$errors[23]='01B Erreur illégale - Vous n\'êtes pas autorisé à avoir cette erreur.<br>    La prochaine fois vous serez sanctionné pour celà.';
$errors[24]='01C Erreur d\'incertitude - Il se peut que l\'incertitude soit insuffisante.';
$errors[25]='01D Système planté - Nous sommes incapables de comprendre notre propre code.';
$errors[26]='01E Erreur d\'horloge - Veuillez patienter... Veuillez patienter...<br>    Veuillez patienter... Veuillez patienter... Veuillez patienter...';
$errors[27]='01F Réservée pour les erreurs futures que feront nos développeurs.';
$errors[28]='020 Erreur dans l\'enregistrement des codes d\'erreurs<br>    Les erreurs restantes seront perdues.';
$errors[29]='042 Erreur liée à un Virus - Un virus a été activé dans une boîte de commandes DOS.<br>    Le virus requiert $OS de toutes façons.<br>    Toutes les tâches en cours seront automatiquement fermées et le virus sera réactivé.';
$errors[30]='079 Souris non trouvée - Le pilote de souris n\'a pas été installé.<br>    Veuillez appuyer sur le bouton gauche de la souris pour continuer.';
$errors[31]='103 Erreur de débordement de la file d\'attente - Trop d\'erreurs sont survenues.<br>    Les prochaines erreurs ne seront ni affichées ni sauvegardées.';
$errors[32]='678 Erreur Ainsi se termine votre session de $OS.<br>    Voulez-vous jouer à un autre jeu ?';
$errors[33]='683 Erreur: temps expiré<br>    L\'utilisateur s\'est endormi en attendant que le système termine la procédure de démarrage.';
$errors[34]='815 Mémoire insuffisante - Seulement 503125830 octets disponibles.';
$errors[35]='927 Démarrage de $OS. Repassez demain.';
$errors[36]='999 Adresse IP $ip_client en dehors des limites. Nouvelle adresse attribuée : 127.0.0.1';
$errors[37]='666 Votre fournisseur d\'acces $dns est en liquidation judiciaire.<br>    Veuillez vous présenter au tribunal le plus proche.';
$rdm = ceil(rand(0,37));

?>

<HTML>
<HEAD>
<TITLE>ERREUR 404</TITLE>
</HEAD>

<BODY TEXT="#FFFFFF" BGCOLOR="#000099" LINK="#FFFFFF" VLINK="#FFFFFF" ALINK="#33CCFF">
&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;

<CENTER><TABLE BORDER=0 COLS=1 WIDTH="10%" BGCOLOR="#C0C0C0" >

<TR>

<TD align=center><TT><FONT COLOR="#330033"><? echo($OS); ?></FONT></TT></TD>

</TR>

</TABLE></CENTER>

<br>
<table border=0 width=60% align=center>
<tr>
<td align=left>
<pre>
Une erreur <b>404</b> est survenue à l'adresse <? echo($ip_client); ?> dans VxD DBP(<? echo($REMOTE_PORT); ?>) +<br>
<? echo($date); ?>. Ceci est du à quelquechose de louche dans <? echo($browser); ?><br>
<? echo($heure); ?>. Il est impossible de continuer normalement(<? echo($dns); ?>)<br>
000000. Contactez l'<a href="mailto:VOTREMAIL@VOTREMAIL.COM?subject=404"><b>administrateur</b></a> rapidement et retournez en <a href="javascript:history.go(-1)"><b>arriere</b></a>.
<br>
<? echo($errors[$rdm]); ?>
</pre>
</td>
</tr>
</table>

</BODY>

</HTML>

Conclusion :


- Dans ce code se trouve la detection d'OS, detection d'adresse IP, de DNS, utilisation d'un array et d'un random.

ps : remplacez VOTREMAIL par votre mail ds le source :p

- Pour que cette page 404 soit votre page, voici la ligne a ajouter dans votre .htaccess :
ErrorDocument 404 http://www.monsite.com/truc/mapage404.php

- Pour que cela envoie un mail qd qqn tombe sur la page, ajoutez où vous voulez dans le code php :
mail("moi@comsite.com", "Mon Sujet", "Erreur 404 : page "._SERVER["REQUEST_URI"]." non trouvée");

vous pouvez donc supprimer le lien "mailto:"

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.