Etrange, boutton submit inactif [NEW]

[Fermé]
Signaler
Messages postés
13
Date d'inscription
vendredi 25 octobre 2013
Statut
Membre
Dernière intervention
16 février 2016
-
Messages postés
13
Date d'inscription
vendredi 25 octobre 2013
Statut
Membre
Dernière intervention
16 février 2016
-
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

Messages postés
80
Date d'inscription
samedi 21 avril 2012
Statut
Membre
Dernière intervention
27 avril 2014
4
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 ^^
Messages postés
2567
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
23 septembre 2021
462
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
Messages postés
13
Date d'inscription
vendredi 25 octobre 2013
Statut
Membre
Dernière intervention
16 février 2016

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.