[RESOLU] PHP $_POST UTF8

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] PHP $_POST UTF8

Re: PHP $_POST UTF8

par levince107 » 11 janv. 2014, 12:54

Merci à Xtg

Je le savais en plus ...

Merciiiiiiiiiiiiiiiiiii !

Re: PHP $_POST UTF8

par xTG » 11 janv. 2014, 12:35

L'opérateur de concaténation de strings en PHP n'est pas le '&' mais le '.'
Actuellement tu fais donc un ET binaire sur tes données ce qui résulte à ce que tu vois.

PHP $_POST UTF8

par levince107 » 11 janv. 2014, 12:30

Bonjour

Voici mon formulaire encodé sur une page en UTF-8 (avec dreamweaver)

Tout est en UTF-8,

Je récupère les infos de mon formulaire avec la commande php suivante :

$variable = $_POST ['matiere'] (qui est ègal à comptabilité) pour construire ma requeête qui devrait être

SELECT `titre` FROM `tfe` WHERE matiere = 'comptabilité'

il me renvoit du code incompréhensible comme

"AADAAP 4 $Be` D@BI `tB!@D"

Tout ce qui se fait avant le $_POST ou $_request est bon. idem si j'utilise GET

utf8_decode ou encode ou inconv ne change rien

MA question : comment afficher ma variable ?

Merci

Mon code php

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>IT-coaching - Dossier client</title> </head> <body> <?php header('Content-type: text/html; charset=utf-8'); ?> <?php //// On récupère les request pour savoir ce qu'il faut afficher $sql= "SELECT `titre` FROM `tfe` WHERE éàé"; if ($_REQUEST['matiere']){ $var_matiere = $_REQUEST['matiere']; $sql = $sql & "matiere = '" .$var_matiere. "AND '"; } if ($_REQUEST['section']){ $var_section = $_REQUEST['section']; $sql = $sql & "section = '" .$var_section. " AND'"; } if ($_REQUEST['niveau']){ $var_niveau= $_REQUEST['niveau']; $sql = $sql & "niveau = '" .$var_niveau. "'"; } echo $sql; ?> <form name="form1" method="post" action="tfe.php" > <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <select name="matiere" id="select1"> <?php require_once("connexion.php"); $sql = "SELECT DISTINCT`matiere` AS id, `matiere` AS libelle FROM `tfe` ORDER BY `matiere` ASC;";// Création de la requête //$var_selected = 0; // Option <selected> OUI = 1 / NON = 0 //$var_id_to_select = $var_liv_auteur ; // l'id à sélectionner $resultat = mysql_query("set names utf8"); $resultat = mysql_query ($sql);//(On evoie la requete au serveur) //$requete = mysql_fetch_array ($resultat);//On construit un tableau avec le resultat de la requete echo '<option value="0">Choisissez</option>'; echo '<option value="*">*</option>'; while ($requete = mysql_fetch_array ($resultat)) { //$var_id = $requete->id; // L'id dans l'array de la requête $var_id = $requete['id']; //$var_id = utf8_decode($var_id); $var_name = $requete['libelle']; //$var_name = utf8_decode($var_name); $var_name = stripslashes($var_name); if ($var_selected == 1 ) { // Si il faut travailler avec selected if ($var_id == $var_id_to_select) { $_select = '" selected="selected">'; } else { $_select = '">'; } } else { $_select = '">'; } echo '<option value="'.$var_id.$_select.$var_name.'</option>';// Création des lignes de choix } //mysql_close(); ?> </select> </td> <td> <select name="section" id="select2"> <?php $sql = "SELECT DISTINCT`section` AS id, `section` AS libelle FROM `tfe` ORDER BY `matiere` ASC;";// Création de la requête //$var_selected = 0; // Option <selected> OUI = 1 / NON = 0 //$var_id_to_select = $var_liv_auteur ; // l'id à sélectionner $resultat = mysql_query("set names utf8"); $resultat = mysql_query ($sql);//(On evoie la requete au serveur) //$requete = mysql_fetch_array ($resultat);//On construit un tableau avec le resultat de la requete echo '<option value="0">Choisissez</option>'; echo '<option value="*">*</option>'; while ($requete = mysql_fetch_array ($resultat)) { //$var_id = $requete->id; // L'id dans l'array de la requête $var_id = $requete['id']; //$var_id = utf8_decode($var_id); $var_name = $requete['libelle']; //$var_name = utf8_decode($var_name); $var_name = stripslashes($var_name); if ($var_selected == 1 ) { // Si il faut travailler avec selected if ($var_id == $var_id_to_select) { $_select = '" selected="selected">'; } else { $_select = '">'; } } else { $_select = '">'; } echo '<option value="'.$var_id.$_select.$var_name.'</option>';// Création des lignes de choix } ?> </select> </td> <td> <select name="niveau" id="select3"> <?php $sql = "SELECT DISTINCT`niveau` AS id, `niveau` AS libelle FROM `tfe` ORDER BY `matiere` ASC;";// Création de la requête //$var_selected = 0; // Option <selected> OUI = 1 / NON = 0 //$var_id_to_select = $var_liv_auteur ; // l'id à sélectionner $resultat = mysql_query("set names utf8"); $resultat = mysql_query ($sql);//(On evoie la requete au serveur) //$requete = mysql_fetch_array ($resultat);//On construit un tableau avec le resultat de la requete echo '<option value="0">Choisissez</option>'; echo '<option value="*">*</option>'; while ($requete = mysql_fetch_array ($resultat)) { //$var_id = $requete->id; // L'id dans l'array de la requête $var_id = $requete['id']; //$var_id = utf8_decode($var_id); $var_name = $requete['libelle']; //$var_name = utf8_decode($var_name); $var_name = stripslashes($var_name); if ($var_selected == 1 ) { // Si il faut travailler avec selected if ($var_id == $var_id_to_select) { $_select = '" selected="selected">'; } else { $_select = '">'; } } else { $_select = '">'; } echo '<option value="'.$var_id.$_select.$var_name.'</option>';// Création des lignes de choix } ?> </select> </td> <td><input name="" type="submit" value="Afficher" /></td> </tr> </table> </form> </body> </html>
qui me génère le code html suivant :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>IT-coaching - Dossier client</title> </head> <body> La requete à contruire est : SELECT `titre` FROM `tfe` WHERE éàé <form name="form1" method="post" action="tfe.php" > <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <select name="matiere" id="select1"> <option value="0">Choisissez</option><option value="*">*</option><option value="Comptabilité">Comptabilité</option> </select> </td> <td> <select name="section" id="select2"> <option value="0">Choisissez</option><option value="*">*</option><option value="Comptabilité générale">Comptabilité générale</option><option value="Métier comptable et fiscal">Métier comptable et fiscal</option> </select> </td> <td> <select name="niveau" id="select3"> <option value="0">Choisissez</option><option value="*">*</option><option value="Secondaires">Secondaires</option><option value="Bachelor">Bachelor</option> </select> </td> <td><input name="" type="submit" value="Afficher" /></td> </tr> </table> </form> </body> </html>