Page 1 sur 1

Erreur 404 personnalisée

Posté : 03 nov. 2005, 10:01
par dream3w
Bonjour,

J'ai essayé le code suivant pour ma page d'erreur personnalisée.

Dans le mail que je reçois, je n'ai pas d'indication du référant et de l'url demandé.

Pouvez-vous me dire ce qui ne va pas.

Merci d'avance,

Stephan

Voici le script:

<?
if(!$HTTP_POST_VARS)
{
$referant=$http_referer;
echo "<table border=0 cellspadding=\"0\" cellpadding=\"0\" width=\"90%\" align=\"center\">\n";
echo "<tr>\n";
echo "<td height=400 colspan=\"2\" align=center valign=center><b>\n";
echo "ERREUR 404</b> Fichier non trouvé - Le document demandé n'existe pas<br>\n";
echo "<br>\n";
echo "<br>\n";
echo "Vous pouvez soumettre le rapport d'incident au <br>Webmaster en cliquant sur le bouton ci-dessous. Merci.<br>\n";
echo "<form name=\"rapport\" action=\"$php_self\" method=post>\n";
echo "<input type=\"hidden\" name=\"referant\" value=\"$http_referer\">\n";
echo "<input type=\"hidden\" name=\"request\" value=\"$request_url\">\n";
echo "<input type=\"submit\" value=\"Soumettre le BUG\">\n";
echo "</form>\n";
$history=1;
}
else
{
$referant=$http_referer;
mail("[email protected]","BUG","REFERANT : ".$referant."\n\nURL DEMANDEE : ".$request);
$history=2;
echo "<table border=0 cellpadding=\"0\" cellspadding=\"0\" width=\"90%\" align=center><tr><td width=750 height=400 colspan=\"2\" align=center valign=center><b>Rapport de BUG envoyé... </b>Ce lien sera rapidement corrigé. Merci.";
}
?>
<br>
<tr>
<td width="50%"><center>
<input type="button" name="accueil" alt="Accueil" value="Retour à la page d'accueil" onclick="location.href='/index.htm'" />
</center></td>
<td width="50%"> <center>
<input type="button" name="precedent" alt="Page précédente" value="Retour page précédente" onclick="history.go(-<? echo $history ?>)" />
</center></td>
</td>
</tr>
</tr>
</table>

Posté : 03 nov. 2005, 10:04
par charabia
Edites ton message et utilises les balises [ php ], on verra ton code beaucoup plus clairement ;)

Posté : 03 nov. 2005, 10:25
par dream3w
Bonjour Charabia,

tu me demandes là quelque chose que je ne sais pas faire. J'y connais rien en php, je voudrais juste avoir une page d'erreur personnalisée avec possibilité de m'envoyer un email pour que je corrige les liens erronés.

J'ai trouvé ce code quelque part et il ne fonctionne qu'à moitié.

Posté : 03 nov. 2005, 10:30
par charabia
tu me demandes là quelque chose que je ne sais pas faire. J'y connais rien en php
Ce n'est pas du php dream3w, c'est juste une balise qui colore ton code. Tu la trouves en éditant ton message, juste en haut.

Entoures tout ton code se trouvant dans ton post des balises [ php ]...[/ php]
:arrow: ce qui donnera
ton code

Posté : 03 nov. 2005, 10:37
par dream3w
Voilà qui est fait.

Maintenant, si vous avez un autre exemple de code qui fait la même chose, je suis preneur.

Posté : 03 nov. 2005, 10:56
par charabia
Peux-tu nous donner un code un peu plus complet ? Dans celui-ci on ne voit pas d'où viennent tes variables $http_referer et $request_url alors que le problème vient de là.

Posté : 03 nov. 2005, 11:28
par dream3w
C'est le code complet que j'ai trouvé.

Je n'ai rien d'autre. Il se trouve dans un fichier nommé error404.php et dans mon fichier .htaccess j'ai la ligne suivante:

Errordocument 404 error404.php

Posté : 03 nov. 2005, 19:14
par dream3w
Personne n'a de solution pour moi?

Posté : 03 nov. 2005, 19:36
par Truc
Salut, ton script semble un pu vieux, essai avec ce bout de code remis au gout du jour :wink:
<?
if(!$_POST)
{
$referant=$_SERVER['HTTP_REFERER'];
$request_url=$_SERVER['REQUEST_URI'];
$page=$_SERVER['PHP_SELF'];

echo "<table border=0 cellspadding=\"0\" cellpadding=\"0\" width=\"90%\" align=\"center\">\n";
echo "<tr>\n";
echo "<td height=400 colspan=\"2\" align=center valign=center><b>\n";
echo "ERREUR 404</b> Fichier non trouvé - Le document demandé n'existe pas<br>\n";
echo "<br>\n";
echo "<br>\n";
echo "Vous pouvez soumettre le rapport d'incident au <br>Webmaster en cliquant sur le bouton ci-dessous. Merci.<br>\n";
echo "<form name=\"rapport\" action=\"".$page."\" method=post>\n";
echo "<input type=\"hidden\" name=\"referant\" value=\"".$http_referer."\">\n";
echo "<input type=\"hidden\" name=\"request\" value=\"".$request_url."\">\n";
echo "<input type=\"submit\" value=\"Soumettre le BUG\">\n";
echo "</form>\n";
$history=1;
}
else
{
$referant=$_POST['referant'];
$request=$_POST['request'];

mail("[email protected]","BUG","REFERANT : ".$referant."\n\nURL DEMANDEE : ".$request);
$history=2;
echo "<table border=0 cellpadding=\"0\" cellspadding=\"0\" width=\"90%\" align=center><tr><td width=750 height=400 colspan=\"2\" align=center valign=center><b>Rapport de BUG envoyé... </b>Ce lien sera rapidement corrigé. Merci.";
}
?> 
voila un peu de doc sur la variable $_SERVER

Posté : 03 nov. 2005, 19:44
par dream3w
Maintenant il me donne quelque chose à URL DEMANDEE mais c'est l'adresse du fichier PHP. Ce qui m'intéresse, c'est l'adresse qui a provoqué le message d'erreur.

Je n'ai toujours rien pour le REFERANT

Posté : 03 nov. 2005, 19:54
par Truc
Je n'ai toujours rien pour le REFERANT
certainement normal, pour que $_SERVER['HTTP_REFERER'] renvoi une valeur il faut que tu vienne d'une autre page que celle du fichier

Posté : 03 nov. 2005, 21:36
par dream3w
J'ai un fihcier html de test, sur lequel j'ai un lien erroné.

Quand je clique dessus, j'obtiens le mail suivant:

REFERANT :

URL DEMANDEE : /error404.php


Le lien erroné est errors404.htm et il me donne le nom du fichier qui contient le code php. Ce n'est pas ce que je souhaitais. Est-ce qu'il est possible d'avoir le nom du fichier qui a provoqué l'eereur?

Merci d'avance pour vos réponses.

Stephan