Problème avec apostrophe dans formulaire php
Gérard 84
-
wenijah Messages postés 72 Date d'inscription Statut Membre Dernière intervention -
wenijah Messages postés 72 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème d'apostrophe sur une de mes pages php, plus précisément avec un formulaire et une zone de texte. Lorque je saisis " j\'en " il s'affiche " j'en " mais lorsque je saisis " j'en " alors j'obtiens un message d'erreur.
Peut être saurez vous m'aider ?
Voici le code de la page :
<code><!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<?
//on recupere la config
include ("./connect.php");
$db=mysql_connect($serveur, $nom, $passe);
mysql_select_db($base, $db);
function EmailOK($mail_com)
{
return ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$mail_com);
}
if($action == 'sent')
{
if(EmailOK($mail_com) AND !empty($nom_com) AND $nom_com<>'Nom' AND !empty($mail_com) AND $mail_com<>'Mail' AND !empty($commentaire) AND $commentaire<>'Commentaire')
{
// Empêcher l'utilisation du code HTML dans les champs
$mail_com=str_replace("<","",$mail_com);
$mail_com=str_replace(">","",$mail_com);
$nom_com=str_replace("<","",$nom_com);
$nom_com=str_replace(">","",$nom_com);
$commentaire=str_replace("<","",$commentaire);
$commentaire=str_replace(">","",$commentaire);
$dat_com=date("Y-m-d");
$heure_com=date("H:i:s");
$date_com=$dat_com.$heure_com;
//on insere les données dans la table
$db=mysql_connect($serveur, $nom, $passe);
mysql_select_db($base, $db);
$sql= "INSERT INTO comments VALUES ('', '$id', '$commentaire', '$date_com', '$nom_com', '$mail_com')";
mysql_query($sql) or die('Erreur SQL !' . $sql.'<br>' . mysql_error());
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=".$site_perso."news/comments/commentaire.php?id=".$id."'>";
}
else
{
echo "<TITLE>Erreur !</TITLE><body><table align='center' border='0' width='100%' height='100%'><tr><td align='center' valign='middle'><font size=3 face=arial><b>VEUILLEZ REMPLIR TOUS LES CHAMPS !</b><br><br><a href='javascript:history.go(-1);'>Retour</a></font></td></tr></table><br><br></BODY></HTML>";
}
}
//on compte le nbre de commentaire rattachés au lien
$sql = "SELECT count(*) FROM comments WHERE id='$id'";
$resultat = mysql_db_query($base, $sql);
$enr = mysql_fetch_array($resultat);
$nbcom=$enr[0];
if (!isset($mult))
{
$debut=0;
$mult=intval($nbcom/30);
if ($nbcom-30<=0)
{
$fin=$nbcom;
}
else
{
$fin=30;
}
}
else
{
if (isset($mult) and $mult>0)
{
$debut=$fin;
$fin=$debut+30;
}
if (isset($mult) and $mult==0)
{
$debut=$fin-1;
$fin=$nbcom;
}
}
$sql="SELECT * FROM comments WHERE id='$id' ORDER BY dat_com DESC LIMIT ".$debut.",".$fin;
//on envoie la requête
$req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'. mysql_error());
echo "<center>";
echo "<table width=\"550\" border=\"1\" bgcolor=\"#000000\" class=\"a1\" bordercolor=\"#2B2B2B\">";
while ($enr = mysql_fetch_array($req))
{
//remise en forme au format jj-mmm-aaaa
$tmp = explode("-",$enr['dat_com']);
$tmp[0] = intval($tmp[0]); //jour
$tmp[1] = intval($tmp[1]); //mois
$tmp[2] = intval($tmp[2]); //année
$date=$tmp[2]."-".$tmp[1]."-".$tmp[0];
$h=substr($enr['dat_com'],11,2);
$m=substr($enr['dat_com'],14,2);
$s=substr($enr['dat_com'],17,2);
$heure=$h.":".$m.":".$s;
echo "<font face=\"arial\" size=\"2\" color=\"#FFFFFF\">";
echo "<tr><td><font face=\"arial\" size=\"2\" color=\"#FFFFFF\">Posté par <a href=\"mailto:".$enr['mail']."\">".$enr['pseudo']."</a> le ".$date." à ".$heure."<br></font>";
echo "<font face=\"arial\" size=\"2\" color=\"#FF0000\"><p align=\"justify\">";
echo $enr['texte_com'];
echo "</font>";
}
echo "</table>";
echo "<br>";
$mult=$mult-1;
if ($debut<>0)
{
echo "<a href=\"".$siteperso."commentaire.php\"><img src=\"".$site_perso."news/comments/image/gauche_on.gif\" alt=\"début\" border=0></a>";
echo " ";
}
if ($mult>=0)
{
echo "<a href=\"".$siteperso."commentaire.php?debut=".$debut."&fin=".$fin."&mult=".$mult."\"><img src=\"".$site_perso."news/comments/image/droite_on.gif\" alt=\"suivant\" border=0></a>";
}
echo "</center>";
?>
<title>Commentaires</title>
<LINK REL=stylesheet HREF="folder.css" TYPE="text/css">
</head>
<body bgcolor="#000000" text="#FF0000" link="#COCOCO" vlink="#COCOCO">
<?echo "<form action=\"".$site_perso."news/comments/commentaire.php?action=sent&id=".$id."\" method=\"POST\">";?>
<table bordercolor="#2B2B2B" align="center" border="1" cellpadding=0 cellspacing=0>
<tr>
<td>
<table border="1" width=550 cellspacing="0" cellpadding="0" bordercolor="#2B2B2B" bgcolor=black class="a1">
<tr>
<td align="center"><font size="2" color=FFFFFF>
<br>
<b>AJOUTER UN COMMENTAIRE</b></font>
<br><br>
<input type="text" size="25" name="nom_com" value="Nom" style="color:white;background-color:black">
<br><br>
<input type="text" size="25" name="mail_com" value="E-mail" style="color:white;background-color:black">
<br><br>
<textarea name="commentaire" cols="30" rows="7"style="color:white;background-color:black">Commentaire
J'ai un problème d'apostrophe sur une de mes pages php, plus précisément avec un formulaire et une zone de texte. Lorque je saisis " j\'en " il s'affiche " j'en " mais lorsque je saisis " j'en " alors j'obtiens un message d'erreur.
Peut être saurez vous m'aider ?
Voici le code de la page :
<code><!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<?
//on recupere la config
include ("./connect.php");
$db=mysql_connect($serveur, $nom, $passe);
mysql_select_db($base, $db);
function EmailOK($mail_com)
{
return ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$mail_com);
}
if($action == 'sent')
{
if(EmailOK($mail_com) AND !empty($nom_com) AND $nom_com<>'Nom' AND !empty($mail_com) AND $mail_com<>'Mail' AND !empty($commentaire) AND $commentaire<>'Commentaire')
{
// Empêcher l'utilisation du code HTML dans les champs
$mail_com=str_replace("<","",$mail_com);
$mail_com=str_replace(">","",$mail_com);
$nom_com=str_replace("<","",$nom_com);
$nom_com=str_replace(">","",$nom_com);
$commentaire=str_replace("<","",$commentaire);
$commentaire=str_replace(">","",$commentaire);
$dat_com=date("Y-m-d");
$heure_com=date("H:i:s");
$date_com=$dat_com.$heure_com;
//on insere les données dans la table
$db=mysql_connect($serveur, $nom, $passe);
mysql_select_db($base, $db);
$sql= "INSERT INTO comments VALUES ('', '$id', '$commentaire', '$date_com', '$nom_com', '$mail_com')";
mysql_query($sql) or die('Erreur SQL !' . $sql.'<br>' . mysql_error());
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=".$site_perso."news/comments/commentaire.php?id=".$id."'>";
}
else
{
echo "<TITLE>Erreur !</TITLE><body><table align='center' border='0' width='100%' height='100%'><tr><td align='center' valign='middle'><font size=3 face=arial><b>VEUILLEZ REMPLIR TOUS LES CHAMPS !</b><br><br><a href='javascript:history.go(-1);'>Retour</a></font></td></tr></table><br><br></BODY></HTML>";
}
}
//on compte le nbre de commentaire rattachés au lien
$sql = "SELECT count(*) FROM comments WHERE id='$id'";
$resultat = mysql_db_query($base, $sql);
$enr = mysql_fetch_array($resultat);
$nbcom=$enr[0];
if (!isset($mult))
{
$debut=0;
$mult=intval($nbcom/30);
if ($nbcom-30<=0)
{
$fin=$nbcom;
}
else
{
$fin=30;
}
}
else
{
if (isset($mult) and $mult>0)
{
$debut=$fin;
$fin=$debut+30;
}
if (isset($mult) and $mult==0)
{
$debut=$fin-1;
$fin=$nbcom;
}
}
$sql="SELECT * FROM comments WHERE id='$id' ORDER BY dat_com DESC LIMIT ".$debut.",".$fin;
//on envoie la requête
$req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'. mysql_error());
echo "<center>";
echo "<table width=\"550\" border=\"1\" bgcolor=\"#000000\" class=\"a1\" bordercolor=\"#2B2B2B\">";
while ($enr = mysql_fetch_array($req))
{
//remise en forme au format jj-mmm-aaaa
$tmp = explode("-",$enr['dat_com']);
$tmp[0] = intval($tmp[0]); //jour
$tmp[1] = intval($tmp[1]); //mois
$tmp[2] = intval($tmp[2]); //année
$date=$tmp[2]."-".$tmp[1]."-".$tmp[0];
$h=substr($enr['dat_com'],11,2);
$m=substr($enr['dat_com'],14,2);
$s=substr($enr['dat_com'],17,2);
$heure=$h.":".$m.":".$s;
echo "<font face=\"arial\" size=\"2\" color=\"#FFFFFF\">";
echo "<tr><td><font face=\"arial\" size=\"2\" color=\"#FFFFFF\">Posté par <a href=\"mailto:".$enr['mail']."\">".$enr['pseudo']."</a> le ".$date." à ".$heure."<br></font>";
echo "<font face=\"arial\" size=\"2\" color=\"#FF0000\"><p align=\"justify\">";
echo $enr['texte_com'];
echo "</font>";
}
echo "</table>";
echo "<br>";
$mult=$mult-1;
if ($debut<>0)
{
echo "<a href=\"".$siteperso."commentaire.php\"><img src=\"".$site_perso."news/comments/image/gauche_on.gif\" alt=\"début\" border=0></a>";
echo " ";
}
if ($mult>=0)
{
echo "<a href=\"".$siteperso."commentaire.php?debut=".$debut."&fin=".$fin."&mult=".$mult."\"><img src=\"".$site_perso."news/comments/image/droite_on.gif\" alt=\"suivant\" border=0></a>";
}
echo "</center>";
?>
<title>Commentaires</title>
<LINK REL=stylesheet HREF="folder.css" TYPE="text/css">
</head>
<body bgcolor="#000000" text="#FF0000" link="#COCOCO" vlink="#COCOCO">
<?echo "<form action=\"".$site_perso."news/comments/commentaire.php?action=sent&id=".$id."\" method=\"POST\">";?>
<table bordercolor="#2B2B2B" align="center" border="1" cellpadding=0 cellspacing=0>
<tr>
<td>
<table border="1" width=550 cellspacing="0" cellpadding="0" bordercolor="#2B2B2B" bgcolor=black class="a1">
<tr>
<td align="center"><font size="2" color=FFFFFF>
<br>
<b>AJOUTER UN COMMENTAIRE</b></font>
<br><br>
<input type="text" size="25" name="nom_com" value="Nom" style="color:white;background-color:black">
<br><br>
<input type="text" size="25" name="mail_com" value="E-mail" style="color:white;background-color:black">
<br><br>
<textarea name="commentaire" cols="30" rows="7"style="color:white;background-color:black">Commentaire
A voir également:
- Problème avec apostrophe dans formulaire php
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum Access
6 réponses
Après un rapide survol:
$commentaire=str_replace("<","",addslashes($commentaire));
$commentaire=str_replace(">","",addslashes($commentaire));
$commentaire=str_replace("<","",addslashes($commentaire));
$commentaire=str_replace(">","",addslashes($commentaire));
Par la même occasion, vous sauriez me dire pourquoi l'heure et la date des commentaires affichent : le 0-0-0 à 00:00:00 ?
//remise en forme au format jj-mmm-aaaa $tmp = explode("-",$enr['dat_com']); $tmp[0] = intval($tmp[0]); //jour $tmp[1] = intval($tmp[1]); //mois $tmp[2] = intval($tmp[2]); //année $date=$tmp[2]."-".$tmp[1]."-".$tmp[0]; $h=substr($enr['dat_com'],11,2); $m=substr($enr['dat_com'],14,2); $s=substr($enr['dat_com'],17,2); $heure=$h.":".$m.":".$s;
le format date de Mysql (si tu as mis ce champ en typae DATE) est 20070707051023
fais des echo de tes différents $tmp
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question$dat_com=date("Y-m-d"); $heure_com=date("H:i:s");
A l'état initial, ta date à la même valeur qu'à l'état final... aaaa-mm-jj!!
..regarde bien ton code:
//remise en forme au format jj-mmm-aaaa $tmp = explode("-",$enr['dat_com']); $tmp[0] = intval($tmp[0]); //jour $tmp[1] = intval($tmp[1]); //mois $tmp[2] = intval($tmp[2]); //année $date=$tmp[2]."-".$tmp[1]."-".$tmp[0];
C'est égal à ta date d'origine:
$dat_com=date("Y-m-d");
...les $tmp[*] impriment ta date en aaaa-mm-jj..
Et pour l'heure:
$heure=$h.":".$m.":".$s;
C'est aussi égal à ton heure d'origine:
$heure_com=date("H:i:s");
L'heure n'a donc pas besoin d'être changée!
...Enfin, pour mettre ta date au format jj-mm-aaaa :
$dat_com=date("Y-m-d"); $day = substr("$dat_com", 0, 4); $month = substr("$dat_com", 5, 2); $year = substr("$dat_com", 8, 2); $date = "$mday"."-"."$mmonth"."-"."$myear";
Simple et fonctionne!
Et voilà !
~W~