impossible de prendre l'apostrophe pour l'enregistrement dans mysql - PHP - Programmation
Marsh Posté le 22-08-2008 à 18:35:41
L'apostrophe est un caractère spécial, donc pour en mettre un dans une valeur faut l'échapper (en remplaçant ' par \'). C'est aussi nécessaire du coup pour éviter certaines failles de sécurités. Pour faire ça, englobe tes valeurs par la fonction mysql_real_escape_string :
Code :
|
Marsh Posté le 22-08-2008 à 18:27:03
Bonjour,
voilà j'ai créé une page avec un formulaire tout fonction mais je n'arrive pas a rajouter le controle pour que l'apostrophe passe pour l'adresse dans ma base mysql merci de m'aider voici ma page:
?>
<body>
<div class="contenu">
<?php
/**
* On commence par vérifier si le bouton soumettant le formulaire a été
* cliqué, "envoi" étant l'attribut "name" du bouton "submit"
* Sinon, on saute à la ligne 255 de ce code.
*/
if(isset($_POST['envoi']))
{
/* Récupération des données du formulaire */
$nom = isset($_POST['nom']) ? trim($_POST['nom']) : "";
$prenom = isset($_POST['prenom']) ? trim($_POST['prenom']) : "";
$adresse = isset($_POST['adresse']) ? trim($_POST['adresse']) : "";
$code_postal = isset($_POST['code_postal']) ? trim($_POST['code_postal']) : "";
$ville = isset($_POST['ville']) ? trim($_POST['ville']) : "";
$pays = isset($_POST['pays']) ? trim($_POST['pays']) : "";
$telephone = isset($_POST['telephone']) ? trim($_POST['telephone']) : "";
$gsm = isset($_POST['gsm']) ? trim($_POST['gsm']) : "";
$e_mail = isset($_POST['e_mail']) ? trim($_POST['e_mail']) : "";
/**
* Définition des variables servant au traitement de l'adresse électronique et du numéro de
* téléphone: on utilise ici des expressions régulières.
*/
$valid = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#";
$phone = "#^\d{6,10}$#";
/**
* Définition des variables servant au traitement de l'url:
*/
/**
* Traitement de vérification des champs vides ou invalides (téléphone et/ou email et/ou url)
* Conditions de mauvaises réponses (champ vide par exemple)
*/
if ($nom == '' || $prenom == '' || $adresse == '' || $code_postal == '' || $ville == '' || $pays == '' || $telephone == '' || !(preg_match($phone,$gsm,$telephone)) || $gsm == ''|| $e_mail == '' || !(preg_match($valid, $e_mail)))
{
/* Action à adopter */
?>
<h3>Informations incomplètes</h3>
<p>Un (ou plusieurs) champ(s) obligatoire(s) n'a(ont) pas été correctement rempli(s).</p>
<?php
if ($nom == '')
{
/* Si le champ "prénom" est vide, */
print "<p>Vous n'avez pas précisé le nom</p>\n";
}
if ($prenom == '')
{
/* Si le champ "nom" est vide, */
print "<p>Vous n'avez pas précisé le prénom</p>\n";
}
if ($adresse == '')
{
/* Si le champ "nom" est vide, */
print "<p>Vous n'avez pas précisé l'adresse</p>\n";
}
if ($code_postal == '')
{
/* Si le champ "nom" est vide, */
print "<p>Vous n'avez pas précisé le code postal</p>\n";
}
if ($ville == '')
{
/* Si le champ "nom" est vide, */
print "<p>Vous n'avez pas précisé la ville</p>\n";
}
if ($pays == '')
{
/* Si le champ "nom" est vide, */
print "<p>Vous n'avez pas précisé le pays</p>\n";
}
if ($telephone == '')
{
/* Si le champ "téléphone" est vide, */
print "<p>Vous n'avez pas précisé le numéro de téléphone</p>\n";
}
if (($telephone) && !(preg_match($phone,$gsm,$telephone)))
{
print "<p>Le numéro de téléphone doit comporter seulement des chiffres, de 6 à 10 chiffres sans espaces ni tirets</p>\n";
}
if ($gsm == '')
{
/* Si le champ "nom" est vide, */
print "<p>Vous n'avez pas précisé le gsm</p>\n";
}
if (($gsm) && !(preg_match($phone,$gsm,$telephone)))
{
print "<p>Le numéro de gsm doit comporter seulement des chiffres, de 6 à 10 chiffres sans espaces ni tirets</p>\n";
}
if(!$e_mail)
{
/* Si le champ "adresse électronique" est vide, */
print "<p>Vous avez omis de mentionner une adresse électronique !</p>\n";
}
if(($e_mail) && !(preg_match($valid, $e_mail))) /* Si il y a une adresse inscrite mais invalide */
{
/* On vérifie LES DEUX conditions réunies (avec le sugne "&&" ): si on ne vérifie que la validité, en ne
mettant pas d'adresse dans le formulaire, on obtient l'affichage des deux messages, or l'adresse à
ce moment là n'est pas invalide, elle est absente: le message d'invalidité ne s'applique donc pas. */
print "<p>L'adresse électronique saisie est invalide.</p>\n";
}
/**
* Si les vérifications ont généré des erreurs, affichage du formulaire
* contenant les données déjà saisies.
*/
$adresse = addslashes($adresse);
?>
<form action="ajouterclient.php ?>" method="post">
<fieldset>
<label><span class="legende_elmt">Nom : </span> <input type="text" name="nom" maxlength="40" class="cases" value="<?php echo $nom ?>" /></label><br />
<label><span class="legende_elmt">Prénom : </span> <input type="text" name="prenom" maxlength="40" class="cases" value="<?php echo $prenom ?>" /></label><br />
<label><span class="legende_elmt">Adresse : </span> <input type="text" name="adresse" maxlength="40" class="cases" value="<?php echo $adresse ?>" /></label><br />
<label><span class="legende_elmt">Code Postal: </span> <input type="text" name="code_postal" maxlength="40" class="cases" value="<?php echo $code_postal ?>" /></label><br />
<label><span class="legende_elmt">Ville : </span><input type="text" name="ville" maxlength="40" class="cases" value="<?php echo $ville ?>" /></label><br />
<label><span class="legende_elmt">Pays : </span><input type="text" name="pays" maxlength="40" class="cases" value="<?php echo $pays ?>" /></label><br />
<label><span class="legende_elmt">Téléphone : </span> <input type="text" name="telephone" maxlength="40" class="cases" value="<?php echo $telephone ?>" /></label><br />
<label><span class="legende_elmt">Gsm : </span><input type="text" name="gsm" maxlength="40" class="cases" value="<?php echo $gsm ?>" /></label><br />
<label><span class="legende_elmt">Email : </span> <input type="text" name="e_mail" maxlength="40" class="cases" value="<?php echo $e_mail ?>" /></label><br />
<div class="c3">
<input type="submit" class="verif" name="envoi" value="Envoyer" />
</div>
</fieldset>
</form>
<?php
}
else
{
$db_link = mysql_connect("localhost","root","" );
if (!$db_link){
die ("Erreur de connexion :".mysql_error());
}
mysql_select_db("gestion de commande" ) or die ("Sélection de la base impossible" );
/*performing SQL query*/
//$adresse= stripslashes($adresse) ;
$sql="INSERT INTO client VALUES('".$_POST["id"]."','".$_POST["nom"]."','".$_POST["prenom"]."','".$_POST["adresse"]."','".$_POST["code_postal"]."','".$_POST["ville"]."','".$_POST["pays"]."','".$_POST["telephone"]."','".$_POST["gsm"]."','".$_POST["e_mail"]."','".$_POST["desactive"]."')";
/*echo $sql;*/
$result = mysql_query($sql,$db_link);
if (!$result)
die ("erreur sur ma requete".mysql_error());
/* closing connection*/
mysql_close($db_link);
}
}
else
{
?>
<form action="ajouterclient.php ?>" method="post">
<fieldset>
<label><span class="legende_elmt">Nom : </span> <input type="text" name="nom" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Prénom : </span> <input type="text" name="prenom" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Adresse : </span> <input type="text" name="adresse" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Code Postal: </span> <input type="text" name="code_postal" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Ville : </span><input type="text" name="ville" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Pays : </span><input type="text" name="pays" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Téléphone : </span> <input type="text" name="telephone" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Gsm : </span><input type="text" name="gsm" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Email : </span> <input type="text" name="e_mail" maxlength="40" class="cases" value="" /></label><br />
<input type="submit" class="verif" name="envoi" value="Envoyer" />
</div>
</fieldset>
</form>
<?php
}
?>
</div>
</body>
</html>
Message édité par valorix le 22-08-2008 à 18:29:18