Vous n'êtes pas identifié(e).
Bonjour à tous,
en regardant webmaster tool ce matin, je m'aperçois que j'ai un soucis de 404 manquante...
En fait j'ai des annonces sous cette forme :
http://www.monsite.com/mondossier/monan … hp?id=1112
Mais si une personne supprime cette annonce, l'url est encore bonne (je le pensais :D) puisque je mettais :
mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT * FROM matable WHERE id='".$_GET['id']."' AND valid = 1 ");
mysql_real_escape_string($id);
if ($row=mysql_fetch_array($result)) {
echo $row["titre"];
} else {
echo "annonce disparu";
} mysql_close();
?>
Pareil pour le contenu avec un message, mais google n'apprecie pas.
Donc ma question ,c'est comment renvoyer ou indiquer une 404 si mon "$id" n'existe pas ?
J'ai vu pour l'instant cela :
header("HTTP/1.0 404 Not Found");
Mais j'ai du mal à comprendre le principe... et à l'écrire. Dois je faire un truc dans le genre :
Merci à ceux qui pourront m'éclairer.
PS : je dois finir la guerre des étoiles ;)
Dernière modification par theavengers (23-03-2012 11:02:59)
Hors ligne
J'avance dans mes recherches avec un dernier code trouvé
Hors ligne
Bonjour,
Le plus simple est de centraliser la tâche dans un .htaccess et de donner le nom du fichier à afficher lorsqu'une erreur 404 ou autre est rencontrée. C'est aussi un moyen de personnaliser cette page.
Voici comment faire
Il y a un peu plus d'infos ici que celles requises pour ton 404, mais cela va avec
++
Dernière modification par Jc (23-03-2012 18:57:18)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Hello, merci de ta réponse, mais malheureusement, ce n'est pas dynamique à moins que je me trompe.
Mon code ci-dessus renvoi sur ma page 404... mais est toujours considéré comme une erreur par google ... je cherche encore ^^
Le principe que j'ai trouvé sur le net serais ça :
Mais je n'ai pas encore testé, je galère pour l'adapter n'utilisant pas encore les fonctions.
Hors ligne
Bonjour
Hello, merci de ta réponse, mais malheureusement, ce n'est pas dynamique à moins que je me trompe.
Oui tu te trompes mais à moitié
En fait le .htaccess redefini ta page 404 par défaut lorsque l'erreur 404 est rencontrée directement au niveau du serveur apache. Et c'est bien automatique. (il faut le mettre dans la racine de ton site). Il est vrai que ce que tu cherches à faire est de générer une erreur 404 lorsqu'il y en a pas. Il te sufit alors d'un simple header("Location:blabla.php"); pour faire l'affaire^^ et tu évites toute faille de sécurité éventuelle que ton script autorise.
Cordialement,
Jean-Christophe
Dernière modification par Jc (27-03-2012 17:24:05)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci JC, j'ai déjà effectivement une redirection 404 en htaccess.
Donc si je comprends bien, il me suffit de mettre
J'ai du mal à comprendre le header, je suis allez sur le Manuel php mais je m'embrouille.
Hors ligne
J'ai du mal à comprendre le header,...
Et ça se voit, toute instruction PHP qui suit (dans la séquence programmatique) un appel à la fonction header() ne doit jamais s'exécuter. Or c'est le cas ici de ton mysql_close(), par exemple.
Extrait de la doc PHP :
/* Assurez-vous que la suite du code ne soit pas exécutée une fois la redirection effectuée. */
exit;
?>
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Maljuna Kris merci pour ces précisions. Je vais de ce pas modifier mon code, et revoir la docs php sur le header. Comme tu l'as dit, ça se voit que j'ai du mal
Hors ligne
J'ai testé avec exit et si id existe, j'ai une page blanche ... mais en écrivant ces lignes je viens de comprendre que le exit devrait être dans la condition else si je ne me trompe pas.
C'est fou, chaque fois que je viens ici, j'apprends un peu plus (je ne suis pas un élève assidu et ça se voit...) mais je comprends mieux en expliquant le problème.
Est-ce que ça vous parait correct ?
Dernière modification par theavengers (29-03-2012 14:35:32)
Hors ligne
Bonjour,
Je pensais avoir été suffisamment explicite... et visiblement non.
J'en étais à te dire donc, que tu souhaites générer une erreur 404 alors qu'il n'y en a pas.
Or, lorsque tu écris,
il est tout à fait normal que la suite de ton code s'éxécute, car ... ta page existe!
Donc quand j'ai écris
je pensais que tu avais remarqué à juste titre que je n'ai pas repris le nom de ton fichier mapage404.php (qui lui doit être déclaré dans ton .htaccess) mais un fichier blabla.php ou dit différemment un fichier qui n'existe pas. Ainsi une exception sera levée au niveau d'apache, le code qui suit ne sera pas exécuté, et le fichier 404 mapage404.php sera utilisé et appelé par ton serveur.
++
PS: Pour information, on ne supprime jamais une information en BD! on l'archive
Dernière modification par Jc (29-03-2012 15:56:33)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci JC d'avoir pris le temps de me mettre les points sur les "i"
PS : j'archive régulièrement, surtout depuis que j'ai passé une matinée au commissariat pour une annonce frauduleuse pour laquelle il à fallu que je donne une copie de la bdd.
Hors ligne