Vous n'êtes pas identifié(e).
Bonjour à tous !
Dans mon formulaire (mon textaera) lorsque j'écris un paragraphe trop long, cela défigure ma page graphique. J’ai lu un peu partout dans le forum mais en vain, j'ai beau mettre un nl2br ou encore un wordwrap ou les deux à la fois dans mon code rien y fait. Aussi je voudrai intégrer un anti spam à mon code car les spams on pourri ma page. Pouvez-vous m’aider svp ? voici mon code. Je vous remercie.
if($posted)
{
if(!empty($pseudo) AND !empty($email) AND !empty($pays) AND !empty($message))
{
$pseudo = trim(ucfirst(addslashes($pseudo)));
$email = trim(addslashes($email));
$pays = trim(ucfirst(addslashes($pays)));
$message = trim(ucfirst(addslashes($message)));
$insert = "INSERT INTO chatt VALUES('','$pseudo','$email','$pays','$message','$date') ";
$query = mysql_query($insert) OR die(" Impossible d’ajouter le message ! ");
echo '<script>';
echo 'alert(" message transmis avec succès !");';
echo '</script>';
}
}
?>
<table width="550px" height="100%" ><tr><td>
<?php
if(!$start) {$start=0;}
$rec = mysql_query("SELECT * FROM chatt Order by id Desc LIMIT $start,$nb");
while ($row = mysql_fetch_array($rec))
{
echo '<table bgcolor="#ffffff" width="100%" id="cont">'."\n";
echo '<tr>';
echo '<td align="center" bgcolor="#e2e2e2"><b><FONT COLOR="#40bde8">Posté par :</FONT></b> '.htmlentities($row['pseudo']).'</td>';
echo '</tr>'."\n";
echo '<tr>';
echo '<td bgcolor="#f7e90f"><b><FONT COLOR="#ffffff">Date et heure :</FONT></b> '.$row[date].'</td>';
echo '</tr>'."\n";
echo '<tr>';
echo '<td bgcolor="#e2e2e2"><b><FONT COLOR="#40bde8">Pays :</FONT></b> '.htmlentities($row['pays']).' <b><FONT COLOR="#40bde8">Email : </FONT></b> <a href="mailto:">'.$row['email'].'</a></td>';
echo '</tr>'."\n";
echo '<tr>';
echo '<td align="justify" id="mess" ><b><FONT COLOR="#32CD32">Message :</FONT></b> '.wordwrap(htmlentities($row['message'])).'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
?>
<?php
mysql_free_result($rec);
$result=mysql_query("SELECT COUNT(*) FROM dchatt");
$row=mysql_fetch_row($result);
if ($start == "0") {
echo"<b><font size=\"1\" face=\"Verdana\">[1]</font></b>";
} else {
echo"<a href=\"info.php?start=0\">[1]</a> ";
}
for($index=1;($index*$nb)<$row[0];$index++) {
$pg = $index+1;
if(($index*$nb)!=$start) {
print("<a href=\"info.php?start=".($index*$nb)."\">");
echo"[$pg]";
print("</a>");
}
else {
echo" <b><font size=\"1\" face=\"Verdana\">[$pg]</font></b>";
} }
?>
<form action="<? echo $PHP_SELF ?>" method="POST" onSubmit="return testform(this.pseudo,this.email,this.pays,this.message)">
<input type="hidden" name="posted" value="1">
<table cellspacing="0" cellpadding="0" >
<table align = "center" >
<tr>
<td ><font color="#40bde8">Nom :</font></td>
<td ><input class="champ" name="pseudo" size="20" maxlength="40"></td>
</tr>
<tr>
<td><font color="#40bde8">Email :</font></td>
<td ><input class="champ" name="email" size="20"></font></td>
</tr>
<tr>
<td><font color="#40bde8">Pays :</font></td>
<td ><input class="champ" name="pays" size="20"></font></td>
</tr>
</fieldset>
</table>
<tr>
<td colspan="2" align = "center">
<fieldset><p><legend><font color="#32CD32"><B><I>--Écrire votre message--</I></B></font></legend></p>
<textarea name="message" rows="4" cols="50"></textarea>
<br><br>
<p align = "center"><input type="Submit" value="Poster">
<input type="reset" value="Annuler"/></p>
</td>
</tr>
<tr><td> </td> </tr>
</table>
</form>
</td></tr></table>
Hors ligne
Il se peut que cela vienne de htmlentities.
Cette fonction convertit les entités html par un codage plus long (voir exemple). Or le retour à la ligne ne peut se faire sur des espaces insécables ou bien au beau milieu d'une série de terme.
// Affiche : Un 'apostrophe' en <strong>gras</strong>
echo htmlentities($str);
// Affiche : Un 'apostrophe' en <strong>gras</strong>
echo htmlentities($str, ENT_QUOTES);
?>
Au final avec une telle fonction tu augmentes le nombre de caractères et réduit le nombre d'espaces. As-tu vraiment besoin d'une telle méthode ?
Hors ligne
Merci pour ta réponse !
j'ai enlevé le htmlentities mais ça ne change rien...En effet Ssi tu as une autre méthode à me proposer je suis ok...ça m'aiderai.
merci
Hors ligne
Bonjour !
J'ai finalement trouver ce qui n'allait pas en fait le problème venait de ma table, d'après ce j'ai pu lire sur le web, il fallait mettre dans la balise table echo '<table bgcolor="#ffffff" style="table-layout:fixed" width="100%" id="cont">'."\n"; aussi j'ai ajouté <textarea name="message" rows="10" cols="45" style="word:wrap;overflow:auto"></textarea>. d'un point de vue codage je ne sais pas si c'est correct, mais toujours est-il que je n'ai plus ce problème d'affichage...Merci de m'avoir répondu...J'essaie maintenant néanmoins d'intégrer un captcha dans mon code, pour mon problème de spams...! si vous voulez bien m'aider...
Bonne journée
Hors ligne
Merci j'en ai trouvé un !
Hors ligne