Etrange, boutton submit inactif [NEW]

Fermé
Thibaut93260 Messages postés 13 Date d'inscription vendredi 25 octobre 2013 Statut Membre Dernière intervention 16 février 2016 - 27 avril 2014 à 19:15
Thibaut93260 Messages postés 13 Date d'inscription vendredi 25 octobre 2013 Statut Membre Dernière intervention 16 février 2016 - 3 mai 2014 à 12:55
Bonsoir tout le monde, il y a deja quelques topics traitant du même sujet, mais aucun ne m'a aidé à regler mon probleme, voili voilou en projet de fin d'année on attend de moi que je réalise un site dynamique en php (original n'est ce pas ! ), je suis en ce moment sur mon minichat, et chose étrange, le boutton submit de mon formulaire ne marche pas, il actualise la page, allez savoir pourquoi
Voila mon code : (Fin de ma page d'accueil)

<div class="div5">
<span class="titre5">
Minichat
</span>
<hr>
<div class="minichat">
<p>
<?php
// Connexion à la base de données
$cx=@mysqli_connect("localhost","root","") or die("[Erreur de connexion]");
$bdd=@mysqli_select_db($cx,"test") or die("[Erreur de base]");

// Récupération des 5 derniers messages
$requete = 'SELECT pseudo,message FROM chat ORDER BY ID DESC LIMIT 0, 5;';
$reponse = @mysqli_query($cx,$requete) or die("[Erreur de requete]");
echo '<div class=\'minichat3\'>';
echo '<table align=\'left\' border=\'0\' cellspacing=\'0\' cellpadding=\'0\' width=\'100%\' style=\'table-layout:fixed\'>';
while ($data = @mysqli_fetch_array($reponse))
{
echo '<tr><td align=\'center\'><strong><u><font color=\'#3399FF\'>' . $data['pseudo'] .'</strong></u>: </td><td><strong><font color=\' #696969\'>-' . $data['message'] .'</strong></td></tr><tr><td><br></td><td><br></td></tr>';
}
echo '</table>';
echo '</div>';
?>

</div>
<form action="chat_post3.php" method="post">
<table width="100%" class="minichat2">
<tr><td><label for="pseudo">Pseudo</lable> : </td><td><input type="text" name="pseudo" id="pseudo" /></td></tr>
<tr><td><label for="message">Message</label> : </td><td><input type="text" name="message" id="message" /></td></tr>
<tr><td><input type="submit" value="Envoyer" id="envoyer"/></td></tr>
</table>
</form>
</div>
</body>
</html>



Et la traitement php :



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Testchat</title>
</head>
<body>
<?php

// Connexion à la base de données
$cx=@mysqli_connect("localhost","root","") or die("[Erreur de connexion]");
$bdd=@mysqli_select_db($cx,"test") or die("[erreur de base]");
function securisation($variable)

// Fonction de sécurisation //
{
$variable = mysql_real_escape_string($variable);
$variable = htmlspecialchars($variable);

return $variable ;
}
// Le traitement du formulaire d'ajout d'un message.
if(isset($_POST['pseudo'], $_POST['message'])) // Si le formulaire est envoyé.
{
if(!empty($_POST['pseudo']) AND !empty($_POST['message'])) // Si tous les champs ont été remplis correctement.
{
$pseudo = securisation($_POST['pseudo']); // Regardez un peu plus haut pour la fonction.
$message = securisation($_POST['message']);

// Et une insertion dans la table minichat.
mysqli_query($cx,'INSERT INTO chat(pseudo,message) VALUES("' . $pseudo . '", "' . $message . '")') ;
}
else // Si le visiteur n'a pas correctement saisi tous les champs, alors on le lui indique.
{
echo '<strong>Erreur : vous n\'avez pas correctement saisi les champs obligatoires.</strong>' ;
}
}

// Redirection du visiteur vers la page du minichat
echo '<a href=\'Pageaccueil.php\'> ICI </a>';
?>

</body>
</html>

C'est comme si je n'étais pas du tout edirigé vers ma page chat_post3.php, ce qui est le cas de toute manière, car j'ai essayé en copiant/collant mon formulaire sur une page test vierge, et cela marche sans soucis ... pourtant c'est exactement le même formulaire que sur ma page d'accueil ... bref, en espérant un peu d'aide, merci d'avance :)

3 réponses

younesase Messages postés 80 Date d'inscription samedi 21 avril 2012 Statut Membre Dernière intervention 27 avril 2014 4
27 avril 2014 à 23:15
et tu veux qu'il fasse quoi on input (de type submit) à part d'actualiser la page.
quand tu met pas de "action" dans la balise <form> ton formulaire renvoi vers la même page !!
veuillez mieux s'expliquer et nous donner le problème s'il y en a un ^^
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
28 avril 2014 à 11:05
Salut,

Essaye de passer le code source de ta page d'accueil au validateur w3c, tu as p-e une erreur sur ton code HTML qui rend ton formulaire inactif.

Attention à ta fonction securisation() qui n'est pas du tout sécurisé : les fonctions mysql_real_escape_string() et htmlspecialchars() ont chacune leurs rôles et ne doivent pas être utilisées n'importe quand.
En utilisant htmlspecialchars() en plus de mysql_real_escape_string() avant l'insertion en bdd, tu risques des injections sql.

mysql_real_escape_string() doit uniquement être utilisé sur des données avant insérer en bdd.
htmlspecialchars() doit uniquement être utilisé pour afficher des données en html.

Exemple :
<?php
if (!empty($_POST['pseudo'])) {
    // insertion en bdd, on échappe les caractères spéciaux sql
    mysql_query('INSERT INTO users (pseudo) VALUE (' . mysql_real_escape_string($_POST['pseudo']) . ')');
}

// affichage du pseudo, on échappe les caractères spéciaux html
echo htmlspecialchars($_POST['pseudo']);


Dernier conseil, évite l'utilisation des @, il faut mieux corriger les erreurs que de les masquer.

Bonne journée
0
Thibaut93260 Messages postés 13 Date d'inscription vendredi 25 octobre 2013 Statut Membre Dernière intervention 16 février 2016
3 mai 2014 à 12:55
Merci à vous deux pour votre temps, je viens de trouver, ma premiere balise <form> pour ma fonction de recherche n'était pas fermée, il devait donc y avoir conflit, j'ai trouvé cette erreur grâce au validateur W3C, que je vais dorenavant utiliser bien plus souvent ! Pour ça, encore merci Pitet !

Bonne journée à vous.
0