bonsoir !
j'ai un petit souci (ou gros) qui me bloque et j'aimerai le resoudre avant de passer a l'étape suivante pour terminer mon site , donc le souci c'est que j'aimerai sécuriser les données que je recois sous forme de variable dans le lien url pour que l'utilisateur n'abuse pas injecter n'importe quoi dans l'url et donc j'ai réussi a realisé quelque chose comme ceci , voici mon code complet :
<?php include("en-tete.php"); ?>
<?php include("menu.php"); ?>
<?php
try{
$bdd = new PDO('mysql:host=localhost;dbname=mangas', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<section>
<article>
<h1 id="a-propos"><img src="image/l-one.png" alt="icon-One Piece" id="icon">Naruto shippuden episode(ID): (Titre)<img src="image/l-one.png" alt="icon one piece" id="icon"></h1>
<div id="video">
<?php
if (isset($_GET'ep']) AND isset($_GET'v'])) // pour vf
{
$reponse = $bdd->prepare('SELECT vf FROM naruto_shippuden WHERE id = ?');
$reponse->execute(array($_GET'ep']));
while ($donnees = $reponse->fetch())
{
echo $donnees'vf'];
}}
elseif(isset($_GET'ep']) AND isset($_GET'vo'])) // pour vostfr
{
$reponse = $bdd->prepare('SELECT vostfr FROM naruto_shippuden WHERE id = ?');
$reponse->execute(array($_GET'ep']));
while ($donnees = $reponse->fetch())
{
echo $donnees'vostfr'];
}}
else
{
echo 'Erreur !';
}
$reponse->closeCursor();
?>
</div>
</article>
<?php include("pied.php"); ?>
</section>
ce code est biensur pas le bon car lorsque je teste ma page et que je modifie les paramettre dans l'url pour voir si le message (erreur !) s'affiche et bien non rien ne s'affiche et j'ai aucun message d'erreur enfin bon ce code n'est pas totalement complet .
mon objectif c'est de détecter si jamais l'utilisateur a changer l'url pour etre plus clair voici un exemple de mon url (monsite/video.php?ep=1&v=vf).
disant que je suis l'utilisateur méchant et je vais modifié l'url comme ceci (mymangashd/video.php?ep=un&v=11225656)ou(mymangashd/video.php) .
et bien j'aimerai mettre en place un message d'erreur qui s’exécutera dés que l'utilisateur méchant change l'url en entrant des paramètres qui n'existe pas , comme vous avez pu le voir j'ai essayé de vérifié si la variable existe avec la fonction isset() j'ai essayé aussi d'autres fonctions comme empty() /!empty() qui vérifie si la variable et vide ou le contraire et intval() pour vérifie que ma varible contient un nombre sinon il transforme la valeur en 0 .
bref, j'ai pas mal galéré avant de venir demander de l'aide , tout ce que je demande c'est de sécuriser ma page contre les mauvais données recu par un utilisateur malintentionné !
merci pour votre aide en avance et bonne soirée !
Bon, ben t'es presque arrivé, tu as tout ce dont tu as besoin.
Test le code suivant et debug (je l'ai un peu fait a l'arrache, il peut y avoir des petits bugs ...)
<?php include("en-tete.php"); ?>
<?php include("menu.php"); ?>
<?php
try {
$bdd = new PDO('mysql:host=localhost;dbname=mangas', 'root', '');
} catch(Exception $e) {
die('Erreur : '.$e->getMessage());
}
// Vérifie les $_GET
if( !isset($_GET'ep']) || !is_int($_GET'ep']) ) {
// Vérifie que l'épisode demandé est un nombre entier
die("Merci de choisir un épisode valide !");
} else if( !isset($_GET'v'] || ($_GET'v'] != 'vf' && $_GET'v'] != 'vostfr') ) ) {
//Vérifie que la version demandées est soit vf soit vostfr
die("Merci de choisir une version valide !");
}
// Récupère l'épisode demandé
$stmt = $bdd->prepare("SELECT * FROM naruto_shippuden WHERE id = :id");
$stmt->bindParam(':id', $_GET'ep'], PDO::PARAM_INT);
$stmt->execute();
$episodes = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Vérifie qu'il y a bien un seul épisode retrouvé
if( count($episode) != 1 ){
die("Erreur bizarre sur le nombre d'épisodes retrouvés");
} else {
// Sinon, stock la première ligne du tableau dans sa propre variable
$episode = $episodes[0];
}
?>
<section>
<article>
<h1 id="a-propos">
<img src="image/l-one.png" alt="icon-One Piece" id="icon">
Naruto shippuden episode <?php echo $episode'id']; ?> : <?php echo $episode'titre']; ?>
<img src="image/l-one.png" alt="icon one piece" id="icon">
</h1>
<div id="video">
<?php echo $episode$_GET'v']]; ?>
</div>
</article>
</section>
<?php include("pied.php"); ?>
Je compte sur toi pour bien lire ce qu'il y a ans ce code et le comprendre, il n'y a rien de compliqué. Par exemple tu peux voir que j'utilise directement la variable $_GET'v'] pour retrouver le lien vers la bonne version. Donc cette variable doit etre soit 'vf', soit 'vostfr'.
Tu peux remarquer aussi que les vérifs sur les variables sont en deux fois, pour plus de clarté et de faciliter a débugger.
Fais les test, modifie le code comme tu le souhaites mais normalement tu dois etre capable de te débrouiller avec ceci.
Bonne chance ;)
Je crois que si tu fais ça s'a pourra marcher:
<?php
// si la variable existe tu affiche ce que tu veux!
if(isset($_GET'ep']))
{
//bienvenue
}
else
{
//l'erreur....
}
?>
et après,parce que pour moi c'est mieux de découper ton script.
Alors juste dans la continuité tu fera:
<?php
if(!isset($_GET'ep']))
{
//tu le renvois sur le formulaire!
}
else
{
//bienvenue
}
?>
J'espère apporter une petite aide mais si je crois y'a mieux!
Alors déja a un moment tu fais:
isset($_GET'vo'])
Je pense que tu te plantes entre le nom de la variable et la valeur qu'elle peut prendre.
Ta variable s'appelle toujours v, et elle peut prendre les valeurs 'vf' ou 'vo' c'est ca ? (monsite/video.php?ep=1&v=vf OU monsite/video.php?ep=1&v=vo).
Du coup tu peux déja faire un truc comme ca:
if( isset($_GET'v']) && ( $_GET'v'] == 'vo' || $_GET'v'] == 'vf' ) ){
// Déja c'est bon pour ta variable $_GET'v'], ici ...
// - Tu as vérifié qu'elle existait avec isset($_GET'v'])
// - Tu as aussi vérifié qu'elle avait soit la valeur vo, soit la valeur vf avec ( $_GET'v'] == 'vo' || $_GET'v'] == 'vf' )
}
Ensuite tu peux ajouter une vérification sur $_GET'ep'] et etre sur que c'est un entier:
if( isset($_GET'ep']) && is_int($_GET'ep']) ){
// Maintenant c'est bon pour ta variable $_GET'ep'] ...
// - Tu as vérifié qu'elle existait avec isset($_GET'ep'])
// - Tu as aussi vérifié que c'était un nombre entier avec is_int($_GET'ep'])
}
Ces deux conditions t'assurent de n'avoir aucune fraude possible. Tu peux les imbriquer, ou les combiner en une seule grosse condition:
if( ( isset($_GET'v']) && ( $_GET'v'] == 'vo' || $_GET'v'] == 'vf' ) ) && ( isset($_GET'ep']) && is_int($_GET'ep']) ) ) {
/* La c'est bon */
} else {
/* La c'est un vilain hacker ^^ */
}
tout d'abord merci pour votre réponse !
vallyan ton code ma ouvert les yeux clairement je le comprend parfaitement a présent niveau sécurité c'est parfait sauf que en combinant les deux conditions pour évité de réécrire une autre conditions je tombe sur un léger problème qui vient de moi surement le voici en forme de question : comment je fais pour afficher l'épisode demander en vf ou vo ?
avant de poser la question j'ai essayé ceci :
<?php
if( ( isset($_GET'v']) && ( $_GET'v'] == 'vo' || $_GET'v'] == 'vf' ) ) && ( isset($_GET'ep']) && is_int($_GET'ep']) ) )
{
$reponse = $bdd->prepare('SELECT * FROM naruto_shippuden WHERE id = ?');
$reponse->execute(array($_GET'ep']));
while ($donnees = $reponse->fetch())
{
echo $donnees'vostfr'];
echo $donnees'vf'];
} }
else
{
echo "erreur!";
}
$reponse->closeCursor();
?>
je sais que mon code est totalement faux ou presque , en tout cas j'essaye toujours de trouvé une solution en essayant plusieurs paramètre mais je trouve que c'est déconseillé car je passe a chaque fois a coté de la reponse et je me dis non c'est pas la bonne donc cette fois ci je vais pas faire le con je demande a vous les experts en programmation :)!
vallyan je tiens a te remercier tu m'a tellement aidé la ou je croyais que aucune solution n'existait pour mon probleme et tu ma appris pleins des choses juste en me corrigeant ma requete de (comment passer des données a une autre page ) merci a toi encore une fois !
Il faudrait voir la structure de ce que te retourne ta requete, mais a priori ton code n'a pas l'air mauvais.
As-tu une erreur ? si ou laquelle ?
Peux tu faire un var_dump($reponse);die(); juste avant le while, et nous copier ce qu'il te sort ?
en fait lorsque je teste ma page j'ai directement le message erreur que j'ai mis dans else plus 2 tableau qui m'indique une erreur mais ma page s affiche correctement , fin juste le contenu html et css sinon aucune videos ne s'affiche , je pensais que ca vennait de moi avant que tu me dis que mon code n'est pas mauvais :) .
bref j'ai ajouté var_dump($reponse);die(); avant le while , et j'ai eu directement une erreur a cette ligne la , la voici :Parse error: syntax error, unexpected 'var_dump' (T_STRING) in C:\wamp\www\test\video.php on line 22 .
je suppose que ce message n'a rien avoir avec le message d'erreur que tu veux savoir ?
voila j'ai rajouté un or juste avant var_dump($reponse);die(); et ca revient au meme j'ai le meme resultat qu'avant voici une capture pour mieu comprendre :
(clique droit afficher l'image)
Parse error: syntax error, unexpected 'var_dump' (T_STRING) in C:\wamp\www\test\video.php on line 22
Ca c'est un ; qui manque a la ligne d'avant, ou une parenthèse bizarre ...
En fait je pense que ma requete n.est pas bonne car jai pas le resultat que je veux cest a dire : si la variable existe et qui est egale a ep=1 et v=vf affiche moi ceci : episode 1 version vf . Sinon au cas ou si la varible nexiste pa ou si elle est pa exact affice moi erreur ! .
Le probleme cest que lorsque je teste jai directement lerreur que jai pris en capture ( voir mon dernier message ).
Voila le probleme en details .
Peux-tu nous mettre ce que te retourne le code suivant stp ? Il récupère la première ligne de ta bdd et l'affiche, c'est pour qu'on s'y retrouve un peu en terme de structre de ta bdd
<?php
if( ( isset($_GET'v']) && ( $_GET'v'] == 'vo' || $_GET'v'] == 'vf' ) ) && ( isset($_GET'ep']) && is_int($_GET'ep']) ) ) {
$reponse = $bdd -> prepare('SELECT * FROM naruto_shippuden LIMIT 0, 1') -> execute() -> fetchAll();
var_dump( $reponse );
die();
}
?>
Copie ce que ca te dis entre des balises code (pour qu'on voit l'indentation)
donc j'ai fais un copier coller de ton code , ensuite j'ai testé et la y'a rien qui s'affiche aucune erreur juste ma page normal avec les includes fin une page vide sans la premiere ligne de ma bdd , voici mon code complet :
<?php include("en-tete.php"); ?>
<?php include("menu.php"); ?>
<?php
try{
$bdd = new PDO('mysql:host=localhost;dbname=mangas', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<section>
<article>
<h1 id="a-propos"><img src="image/l-one.png" alt="icon-One Piece" id="icon">Naruto shippuden episode(ID): (Titre)<img src="image/l-one.png" alt="icon one piece" id="icon"></h1>
<div id="video">
<?php
if( ( isset($_GET'v']) && ( $_GET'v'] == 'vo' || $_GET'v'] == 'vf' ) ) && ( isset($_GET'ep']) && is_int($_GET'ep']) ) ) {
$reponse = $bdd -> prepare('SELECT * FROM naruto_shippuden LIMIT 0, 1') -> execute() -> fetchAll();
var_dump( $reponse );
die();
}
?>
</div>
</article>
<?php include("pied.php"); ?>
</section>
juste une question : pour afficher la premiere ligne de ma bdd je devrais pas utilisé un echo''; ?
sinon je préfère vous tenir au courant et ne pas changer le code fin je suis vos instructions .
Si rien ne s'affiche, c'est qu'il ne passe pas le if. Tes variables GET sont pas bonnes, ou bien le if merdouille un peu.
C'est pas grave, pou le moment il n'y a pas besoin du if: place juste ceci:
$reponse = $bdd -> prepare('SELECT * FROM naruto_shippuden LIMIT 0, 1') -> execute() -> fetchAll();
var_dump( $reponse );
die();
var_dump affiche sans avoir besoin d'un echo, pour info ;)
merci pour l'info je ne le savais avec toi je fais qu'apprendre merci :)
et voila le message d'erreur que j'ai eu : Fatal error: Call to a member function fetchAll() on a non-object in C:\wamp\www\test\video.php on line 18
j'ai effacé la ligne avec if etc et enlever les {} , je suppose que c'est pas le message que tu cherche si ?
Nope, c'est pas ca que je voulais ^^. C'est moi qui me suis planté, je suis un peu rouillé avec PDO :(
Peux-tu essayer ceci stp ?
$stmt = $bdd->prepare("SELECT * FROM naruto_shippuden LIMIT 0, 1");
$stmt->execute();
$values = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump( $values);
die();
Ca devrait fonctionner ...
ah daccord la par contre j'ai une erreur la voici :
array (size=1)
0 =>
array (size=4)
'id' => string '1' (length=1)
'titre' => string 'Le retour ? la maison' (length=21)
'vf' => string '<iframe width="560" height="315" src="//rutube.ru/video/embed/5753490" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>' (length=153)
'vostfr' => string '<iframe width="560" height="315" src="//rutube.ru/video/embed/3029515" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>' (length=153)
Ah, on y vois plus clair !
Je vois que tu n'as pas de champs "numero_episode" dans ta table, je suppose donc que c'est l'id qui est en fait le numéro de l'épisode ...
Maintenant remplace cette requete par la suivante:
$stmt = $bdd->prepare("SELECT * FROM naruto_shippuden WHERE id = :id");
$stmt->bindParam(':id', $_GET'ep'], PDO::PARAM_INT);
$stmt->execute();
$values = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump( $values);
die();
Fait le test avec différentes valeurs de "ep" dans ton url, tu devrais récupérer l'épisode que tu demandes, de cette manière
oui le id c'est le numero de l'épisode .
voila j'ai remplacé l'ancien code par celui que tu viens de me donner et j'ai changer les valeurs de ep dans l'url et ca affiche l'episode que j'ai demandé avec les deux version vf et vo enfin ca affiche la ligne concerner dans la bdd .
je suppose que les verifications sont correctes , je dois faire quoi a present ?
tout d'abord je te remercie t'a meme fait le code complet a ma place maintenant me reste plus qu'a comprendre par moi meme chaque ligne ce qu'elle signifie mais aucun probleme google est mon ami :)
donc j'ai pris ton code qui me semble tres juste sans aucune erreur puis lorsque je teste j'ai une erreur a la ligne 17 la voici : Parse error: syntax error, unexpected '||' (T_BOOLEAN_OR), expecting ',' or ')' in C:\wamp\www\test\video.php on line 14 .
j'ai cherché s'il manquait un (;) ou une parenthèse etc est bien non selon moi tout est parfait je vois vraiment pas pourquoi j'ai une erreur :(
else if( !isset($_GET'v'] || ($_GET'v'] != 'vf' && $_GET'v'] != 'vostfr') ) )
^---- Parenthèse manquante ici ^-- Parenthèse en trop
je l'ai corrigé , maintenant rien ne s affiche a part les deux includes qui sont toute au début de la requête a partir de la on dirait que rien n'existe .
je cherche toujours des erreurs mais tout me semble parfait , je tiens a préciser que je ne touche pas les lignes que je comprends pas leurs contenu donc je cherche la ou je m'y connais le mieux donc ca se peut que l'erreur vient de ces lignes que je ne verifie pas .
je suis vraiment désolé j'ai l'impression comme si je parle a mon prof , désolé si je te casse la tête avec mes soucis .
bah c'est super bizarre ...
Commente toute la partie php depuis le try jusqu'a la création de $episode: met un petit /* juste avant le try, et un */ jute avant la fin du bloc php:
<?php include("en-tete.php"); ?>
<?php include("menu.php"); ?>
<?php
/*
try {
$bdd = new PDO('mysql:host=localhost;dbname=mangas', 'root', '');
// ... le code reste ici, mais il est commenté donc il ne s'execute pas
$episode = $episodes[0];
}
*/
?>
<section>
<article>
<h1 id="a-propos">
<img src="image/l-one.png" alt="icon-One Piece" id="icon">
Naruto shippuden episode <?php echo $episode'id']; ?> : <?php echo $episode'titre']; ?>
<img src="image/l-one.png" alt="icon one piece" id="icon">
</h1>
<div id="video">
<?php echo $episode$_GET'v']]; ?>
</div>
</article>
</section>
<?php include("pied.php"); ?>
La pour le coup tu es obligé d'avoir ta section et ce qu'il y a dedans qui s'affichent (par exemple des grosses erreur php qui te disent que $episode il ne connait pas).
oui la section s'affiche et y'a 3 erreurs 2 dans le titre ligne 19 et une sur la ligne 23 .
OK, c'est logique.
Avant toute chose: tu as bien des paramètres dans ton url, n'est-ce pas ? tu n'oublies pas de mettre
?ep=1&v=vf
a la fin ?
non je n'oublie pas j'ai bien vérifié il y a bien des parametres dans l'url mais la page est vide :
je vais mettre le code des deux page , la page principale et la page qui recoit les données ,je pense que se sera plus clair pour toi :
page principal :
<?php include("en-tete.php"); ?>
<?php include("menu.php"); ?>
<section>
<article>
<H1 id="a-propos"><img src="image/l-one.png" alt="icon-One Piece" id="icon"> Naruto Shippuden<img src="image/l-one.png" alt="icon one piece" id="icon"></H1>
<p><img src="image/narutoshippuden.png" id="float" alt="naruto shippuden">Cela fait désormais trois ans que Naruto est parti de Konoha en entraînement spécial avec le Sannin légendaire Jiraya, avec toujours en tête son fol espoir de retrouver son ami Sasuke et de le ramener parmi les siens au village. Cette suite des aventures du ninja à la tignasse dorée reprend avec son retour dans le village de Konoha, marquées par diverses retrouvailles avec ses amis de toujours et le danger imminent que représente l'organisation Akatsuki à son encontre... </p>
<div id="table">
<table>
<tr>
<th>Episode</th>
<th>Titre</th>
<th>VF</th>
<th>VOSTFR</th>
</tr>
<?php
try{
$bdd = new PDO('mysql:host=localhost;dbname=mangas', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT * FROM naruto_shippuden ')or
die(print_r($bdd->errorInfo()));
while ($donnees = $reponse->fetch())
{ ?>
<tr>
<td><?php echo $donnees'id']; ?><br /></td>
<td><?php echo $donnees'titre']; ?><br /></td>
<td><a href="video.php?ep=<?php echo $donnees'id']; ?>&v=vf">Voir vf<br /></a></td>
<td><a href="video.php?ep=<?php echo $donnees'id']; ?>&v=vo">Voir vostfr<br /></a></td>
</tr>
<?php }
$reponse->closeCursor();
?>
</table>
</div>
</article>
<?php include("pied.php"); ?>
</section>
et la page video.php
<?php include("en-tete.php"); ?>
<?php include("menu.php"); ?>
<?php
try {
$bdd = new PDO('mysql:host=localhost;dbname=mangas', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// Vérifie les $_GET
if( !isset($_GET'ep']) || !is_int($_GET'ep']) )
{
// Vérifie que l'épisode demandé est un nombre entier
die("Merci de choisir un épisode valide !");
}
elseif( !isset($_GET'v']) || ($_GET'v'] != 'vf' && $_GET'v'] != 'vo') )
{
//Vérifie que la version demandées est soit vf soit vostfr
die("Merci de choisir une version valide !");
}
// Récupère l'épisode demandé
$stmt = $bdd->prepare("SELECT * FROM naruto_shippuden WHERE id = :id");
$stmt->bindParam(':id', $_GET'ep'], PDO::PARAM_INT);
$stmt->execute();
$episodes = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Vérifie qu'il y a bien un seul épisode retrouvé
if( count($episode) != 1 )
{
die("Erreur bizarre sur le nombre d'épisodes retrouvés");
}
else
{
// Sinon, stock la première ligne du tableau dans sa propre variable
$episode = $episodes[0];
}
?>
<section>
<article>
<h1 id="a-propos">
<img src="image/l-one.png" alt="icon One Piece" id="icon">
Naruto shippuden episode <?php echo $episode'id']; ?> : <?php echo $episode'titre']; ?>
<img src="image/l-one.png" alt="icon one piece" id="icon">
</h1>
<div id="video">
<?php echo $episode$_GET'v']]; ?>
</div>
</article>
</section>
<?php include("pied.php"); ?>
voila .
Il est aussi possible que PHP te dise quelque chose mais que ce soit masqué par le menu et l'en-tete (suivant ton css). Enlève (commente) ton de menu et ton en-tete pour ne pas les inclure et vois si php te raconte un truc.
D'autre part j'ai vu que tu as modifié vostfr en vo dans la vérif, puisque c'est vo que tu utilises depuis ta page principale dans ton lien. C'est pas gênant sauf que ligne 51 du code au-dessus, tu ne pourras plus utiliser <?php echo $episode$_GET'v']]; ?> (il faut que v soit égal a vf ou a vostfr pour que tu puisses). Je te conseille en fait d'utiliser vostfr dans la page principale (ligne 34) et aussi dans la vérif (ligne 18) pour plus de simplicité.
effectivement lorsque j’enlève le menu et l'en-tete en testant j'ai le message d'erreur directement (merci de choisir un épisode valide!)
T'as ta réponse: il y a un problème avec le numéro de l'épisode. Regarde ton url pour identifier l'erreur.
voici l'url
http://localhost/test/video.php?ep=1&v=vf
selon moi tout est normal et quand meme on m'indique que j'ai une erreur .
Alors je viens d'apprendre un truc grace a toi: une variable $_GET est toujours de type string :o
http://stackoverflow.com/a/3135100/1795767.
Donc la condition is_int() est toujours fausse, ce qui explique tout ^^.
Enlève la vérif sur is_int, et tout devrait rouler.
Nouveau code:
if( !isset($_GET'ep']) )
{
// Vérifie qu'on demande bien un épisode
die("Merci de choisir un épisode !");
}
ah d accord alors je note aussi ça va me servir !
maintenant j'ai une erreur a la ligne 32 a cette ligne la
if( count($episode) != 1 )
{
die("Erreur bizarre sur le nombre d'épisodes retrouvés");
}
plus le message (Erreur bizarre sur le nombre d'épisodes retrouvés) en dessous de l'erreur .
en corrigeant ce code ma page s'affiche correctement avec la video etc , aucun soucis mais en modifiant l'url pour tester les messages d'erreurs et bien aucun ne s'affiche a part les 2 includes menu et en-tete ,mais en les met en forme de commentaire ça fonctionne .
c'est très bizarre je comprends pas pourquoi ça n'affiche rien avec les deux premieres includes .
Alors:
Tu as vu que je fais un die("blabla") s'il y a un problème.
la fonction die() tue le script, tout simplement, il est donc normal que tu n'ais rien qui s'affiche. Je l'ai mis en attendant que tu fasse ton truc a toi comme tu veux.
Tu pourrais faire une redirection, ou faire un include d'une page un peu sympa qui dit qu'il y a un pb... c'est a toi de voir, ca je vais pas le faire a ta place ;).
En fait les messages d'erreur s'affichent bien, mais ton menu ou ton entete sont sans doute en position fixed (css), ce qui fait que le message d'erreur est en dessous (caché) de ton menu/en-tete. C'est d'ailleurs pour ca que quand tu ne les inclus plus, le message apparait.
SI tu veux, en attendant de faire un truc un peu mieux pour gérer les erreurs, tu peux simplement ajouter 5 ou 6 <br /> dans le message d'erreur avant le texte pour etre sur de le voir:
die('<br><br><br><br><br><br>Ceci est un message d'erreur')
On commence a s'éloigner franchement du topic, je pense. Tu devrais fermer celui-ci si tu as ce dont tu as besoin, et essayer d'améliorer ce code par toi-meme. Ré-ouvre un autre topic si tu as une nouvelle question.
d'accord je comprends beaucoup mieux donc juste avant de fermer ce topic j'ai une dernière question qui m’évitera d'ouvrir un nouveau topic pour rien .
si j'ai bien compris , je peux créer une page spécialement pour afficher une erreur et la mettre dans die() comme ceci par exemple : die("<a href="erreur.php"</a>") ; si jamais il y a une erreur ca va me rediriger directement vers cette page la c'est bien ca ?
merci pour ton aide tu m'as tellement appris grace a toi je maitrise de mieux en mieux le php .
Non, pas exactement: fais des includes avant tes die.
if ( /* test */) {
include "./pageErreur1.php";
die();
} else {
include "./pageErreur2.php";
die();
}