Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2006, 16h39   #1
Membre du Club
 
Inscription : mars 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 177
Points : 46
Points : 46
Par défaut pb suppression accents

Bonjour,

j'ai un probleme pour la suppression des accents. lorsque j'utilise la fonction
removeDiacritics avec mes deux variables $adresse_mess_emp e $login_emp les accents sont toujours présents a l'afichage, mais lorsque je rentre une chaine de caractère du style "éééé" cela marche.
cela doit surement venir du fait que mes 2 varialbes ne sont pas reconnus en tant que chaine de caractère.
merci pour votre aide
voicis le code


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
//fonction de suppréssion des accents, pour générer adresse mail et login
function removeDiacritics($str)
{
   return strtr($str,
   'àâäåãáÂÄÀÅÃÁæÆçÇéèêëÉÊËÈïîìíÏÎÌÍñÑöôóòõÓÔÖÒÕšùûüúÜÛÙÚýÿž',
   'aaaaaaaaaaaaaacceeeeeeeeiiiiiiiinnoooooooooosuuuuuuuuyyz');
}
 
// mise en forme  pour login et aadresse de messagerie
 
$adresse_mess_emp = (str_replace(" ", "",strtolower($prenom_emp))).".".(str_replace(" ", "",strtolower($nom_emp)))."@xxxxx.com";
$login_emp = strtolower(substr($prenom_emp, 0, 1).(str_replace(" ", "",$nom_emp)));
 
 
//suppréssion des accents du login et de l'adresse de messagerie
echo $adresse_mess_emp = removeDiacritics($adresse_mess_emp);
echo $login_emp = removeDiacritics($login_emp);
richton95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 16h44   #2
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Et comme ca cela donne quoi :

Code :
1
2
3
4
5
6
7
8
 
 
//suppréssion des accents du login et de l'adresse de messagerie
$adresse_mess_emp = removeDiacritics($adresse_mess_emp);
$login_emp = removeDiacritics($login_emp);
 
echo $adresse_mess_emp;
echo $login_emp;
les instructions sont évalués de gauche à droite
et de haut en bas

Donc quand tu affichais la valeur, la focntion n'avait pas encore retourné son résultat.

Pierre
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 16h46   #3
Membre du Club
 
Inscription : mars 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 177
Points : 46
Points : 46
même pb
richton95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 16h54   #4
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
mince je pensais tenir le bon bout. Et en plus ce que je t'ai dit n'est pas tout à fait vrai, c'est meme carrement faux. Donc autant pour moi.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 16h59   #5
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Par contre je viens de tester tout ton script et il fonctionne bien.

Donc a mon avis le problème provient de l'alimentation des variables $nom_emp et $prenom_emp

je me suis contenté de rajouter ceci pour le test :
Code :
1
2
3
 
$prenom_emp = 'frédéric';
$nom_emp = 'Ébagé';
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 17h03   #6
Membre du Club
 
Inscription : mars 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 177
Points : 46
Points : 46
oups, pardon
oui moi aussi ca marche comme cela. le pb doit venir des str_lower str replace etc... ce que je voudrais c'est transformer mes varialbles en tant que string car la elle ne doivent pas etre reconnus en tant que tel, mais je ne vois pas comment faire
richton95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 17h13   #7
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
il n'y a pour ainsi dire pas de typage des variables en php, donc ça ne vient probablment pas de là
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2006, 09h21   #8
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
En préfixant tes variable avec (string)$var, mais je doute que cela ait une incidence.
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2006, 09h33   #9
Membre du Club
 
Inscription : mars 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 177
Points : 46
Points : 46
non effectivement ca ne change rien
richton95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2006, 12h35   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Je ne vois pas le problème... Si l'extrait de code que tu as fourni fonctionne, le souci se trouve probablement en amont, comme cela a déjà été suggéré.

Tes variables sont nécessairement reconnues en tant que string si tu les indiques comme paramètre de strtolower() donc nous aurons besoin de davantage de précisions pour être en mesure de t'aider convenablement.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2006, 13h14   #11
Membre du Club
 
Inscription : mars 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 177
Points : 46
Points : 46
je vous passe le code complet de la page., c'est une page de confirmation cad que précédement une personne a rentré des infos, en validant elle attérit sur cette page qui demande si le sinfos sont correctes et genère en même temps une adresse mail et un login en fonction du nom et prénom fournis

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
 
<?PHP
session_start();
//VERIFICATION DES IDENTIFIANTS UTILISATEUR
if(!isset($_SESSION['login_util']) OR !isset($_SESSION['mdp_util']))
{
	header('Location: echec_ident2.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
 
       <title>Gestion du parc informatique </title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <link rel="stylesheet" media="screen" type="text/css" title="format" href="styles/format.css" />
   </head>
<?
//CONNEXION A LA BDD
$connexion = mysql_connect("localhost", $_SESSION['login_util'], $_SESSION['mdp_util']);
mysql_select_db("keinfor");
 
if($connexion == false)
 
    {
        ?><H3 ALIGN="center"><?exit("ERREUR DE CONNEXION A LA BASE");?></H3><?
    }
 
 
 
// PAGE DE CONFIRMATION  AVANT INSERTION DANS LA BASE
// AVEC CERTAINS CHAMPS PRE REMPLIS
 
$mat_emp = htmlentities ($_POST['mat_emp']);
$nom_emp = htmlentities ($_POST['nom_emp']);
$prenom_emp = htmlentities ($_POST['prenom_emp']);
$mdp_session_emp = htmlentities ($_POST['mdp_session_emp']);
$mdp_crypto_emp = htmlentities ($_POST['mdp_crypto_emp']);
$mdp_mess_emp = htmlentities ($_POST['mdp_mess_emp']);
$mdp_bios_emp = htmlentities ($_POST['mdp_bios_emp']);
 
 
Function removeaccents($string) 
{  
 $string= strtr($string,  
"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", 
"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");    
return $string;  
}
 
// génération login et adresse messagerie
$adresse_mess_emp = (str_replace(" ", "",strtolower($prenom_emp))).".".(str_replace(" ", "",strtolower($nom_emp)))."@kea-partners.com";
$login_emp = strtolower(substr($prenom_emp, 0, 1).(str_replace(" ", "",$nom_emp)));
 
//suppréssion des accents
$adresse_mess_emp = removeaccents($adresse_mess_emp); 
$login_emp = removeaccents($login_emp) ;
 
 
	//recupération du  matricule employé pour verif doublon dans la table
	$tmp = mysql_query("SELECT mat_emp FROM employe WHERE mat_emp = '$mat_emp'");
	$verif_emp = mysql_fetch_array($tmp);
 
	// Vérification de non doublon dans la table
 
	if ($verif_emp['mat_emp'] == $mat_emp )
	{
 
	?><H3 ALIGN="center"><?exit("LE MATRICULE EXISTE DEJA DANS LA BASE");?></H3><?
 
	}
	else
	{
 
	//affichage de la page pour confirmation
?>
	<script language="JavaScript" src="veriform.js"></script>
		<BODY>
		<div style="width:600px;margin-left:100px;">
		<fieldset>
			<legend><b>Confirez-vous ces informations ?</b></legend> <!-- Titre du fieldset -->
 
		<?
			// si les opération d'insertions se sont bienp passées, affichage récapitulatif
 
		?>
				<table border=0 align="center">
				<form name="ajout" enctype="multipart/form-data" action="insertion_crea_emp.php" method="post">
 
				<INPUT TYPE=HIDDEN NAME="type_ins" value="emp">
					<tr>
						<td class="field">Matricule:</td>
						<td class="value"><input type="texte" name="mat_emp" maxlength="6" size="7" value="<? echo $mat_emp; ?>"></td>
					</tr>
					<tr>
						<td class="field">Nom :</td>
						<td class="value"><input type="texte" name="nom_emp" value="<? echo $nom_emp; ?>">
					</tr>
					<tr>
						<td class="field"> Prénom:</td>
						<td class="value"><input type="texte" name="prenom_emp" value="<? echo $prenom_emp; ?>">
					</tr>
					<tr>
						<td class="field">Login:</td>
						<td class="calcule"><input type="texte" name="login_emp" value="<? echo $login_emp; ?>">
					</tr>
					<tr>
						<td class="field">Mot de passe session :</td>
						<td class="value"><input type="texte" name="mdp_session_emp" value="<? echo $mdp_session_emp; ?>">
					</tr>
					<tr>
						<td class="field">Adresse de messagerie:</td>
						<td class="calcule"><input type="texte" name="adresse_mess_emp" value="<? echo $adresse_mess_emp; ?>">
					</tr>
					<tr>
						<td class="field">Mot de passe d adresse de messagerie :</td>
						<td class="value"><input type="texte" name="mdp_mess_emp" value="<? echo $mdp_mess_emp; ?>">
					</tr>
					<tr>
						<td class="field">Mot de passe Bios:</td>
						<td class="value"><input type="texte" name="mdp_bios_emp" value="<? echo $mdp_bios_emp; ?>">
					</tr>
					<tr>
						<td class="field">Mot de passe CRYPTO:</td>
						<td class="value"><input type="texte" name="mdp_crypto_emp" value="<? echo $mdp_crypto_emp; ?>">
					</tr>
				</table>
 
	</fieldset>
	</div>
	<h2><INPUT type="button" value="Confirmer" onclick="javascript:confirmutil();"></h2>
	</body>
</html>
<?
	}
richton95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2006, 13h51   #12
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Alors, plusieurs remarques avant de commencer...

Ajoute un appel à exit; après l'appel à header(), sans quoi tu auras certainement des soucis (notamment, tu enverras des données alors que tu auras demandé au navigateur d'aller sur une autre page : il pourrait mal comprendre).

Ta fonction removeaccents() est incomplète. Certes, elle enlève les accents mais, de mon point de vue, quitte à effectuer un traitement d'épuration, autant aller jusqu'au bout et supprimer tous les caractères qui ne correspondent pas à une liste précise que tu attends.
L'appel à strtr() est sympatique pour te permettre de remplacer des caractères par des équivalents autorisés (ne pas les supprimer complètement) mais je pense que tu devrais le compléter avec preg_replace().

Après avoir jeté un oeil à ton code (testé en local après adaptation), je ne pige pas trop pourquoi cela ne fonctionne pas...
Comme solution, je te propose une adaptation de la fonction que j'utilise dans mon URL Rewriting :
Code :
1
2
3
4
5
6
7
8
9
10
function clean($string){
	$string = html_entity_decode($string);
 
	$search	= 'çñÄÂÀÁäâàáËÊÈÉéèëêÏÎÌÍïîìíÖÔÒÓöôòóÜÛÙÚüûùúµ';
	$replace	= 'cnaaaaaaaeeeeeeeeeiiiiiiiioooooooouuuuuuuuu';
	$string = strtr(trim(strtolower($string)), $search, $replace);
	$string = preg_replace('/[^a-z0-9.@-]/', '', $string);
 
	return $string;
}
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2006, 14h58   #13
Membre du Club
 
Inscription : mars 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 177
Points : 46
Points : 46
éffectivement, merci pour le conseil sur l'éxit
Et puis merci également pour ta fonction, ça marche nikel.
richton95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h17.


 
 
 
 
Partenaires

Hébergement Web