bsh34 Posté(e) le 13 janvier 2006 Partager Posté(e) le 13 janvier 2006 Voila, j'ai besoin de convertir des majuscules en minuscules et caractères spéciaux en rien "" qui sont rentrer dans un formulaire. Pour ça, j'utilise une fonction faites maison pour tout convertir. Avant j'utilisais strtolower pour les majuscules mais finalement j'ai tout regrouper la dedans, voila tout le début du code avec l'ancien strlolower en commentaire ( au cas où ) <? $name=$_POST["nom"]; $mdp=$_POST["password"]; $opt=$_POST["option"]; #$name= strtolower($name); #$mdp= strtolower($mdp); #$opt= strtolower($opt); function suppaccents($name) { $accents = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y", "Z","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","È","É","Ê","Ë","è", "é","ê","ë","Ç","ç","Ì","Í","Î","Ï","ì","í","î","ï","Ù","Ú","Û","Ü","ù","ú","û","ü","ÿ","Ñ","ñ",":",",",".",";","?","!","~","'","´" ,"(",")","/","&","%","*","\\","\"","$","[","]","{","}","|"); # passage à la ligne rajouter sur le forum pour pas mettre toute la mise en page du site en l'air $ssaccents = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","a","a","a","a", "a","a","a","a","a","a","a","a","o","o","o","o","o","o","o","o","o","o","o","o","e","e","e","e","e","e","e","e","c","c","i", "i","i","i","i","i","i","i","u","u","u","u","u","u","u","u","y","n","n","","","","","","","","","","","","","","","","","","","","","", "","" ); # passage à la ligne rajouter sur le forum pour pas mettre toute la mise en page du site en l'air $name = str_replace($accents,$ssaccents,$name); return($name); } $name = suppaccents($name); echo $name $enreg=fopen(". ... etc Le problème est que les caractères éèêëà etc sont affcher a�leve sous firefox et a?la?ves sous ie (en plus que mon code HTML ne soient plus compatibles IE, mais c'est une autre histroire CSS) Alors voila, je ne comprends pas pourquoi les les caractères majuscules sont bien converti, les spéciaux aussi mais pas les accents (alors que c'est le but premier, les majuscules je peux utiliser strlolower pour le faire ) Et si qq'un a mieux en plus court et qui marche surtout, je suis preneur Merci d'avance ps : ah oui j'oubliais, suis un noob en programmation, c'est mes premiers pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 14 janvier 2006 Partager Posté(e) le 14 janvier 2006 ... hey msieur l'admin, j'ai rien contre vous mais heuu bon, vous fermez le topic avec les réponses et vous laissez ouvert celui avez 0 (zéro) post Je sais pas mais moi j'aurais fait l'inverse EDIT : oops, ""mdame"" l'admin. mea culpa Lien vers le commentaire Partager sur d’autres sites More sharing options...
kmlz Posté(e) le 15 janvier 2006 Partager Posté(e) le 15 janvier 2006 La page est-elle encodée en UTF-8 ? Si non, dans la balise <head></head> de la page de ton formulaire: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 16 janvier 2006 Auteur Partager Posté(e) le 16 janvier 2006 pour l'instant j'avais mis charset=iso-8859-15 dans mon html, j'ai essayé avec le utf-8 mais ça ne change rien. Toujours la même erreur ps : pas là du weekend, dsl de pas avoir répondu avant et arg, j'avais pas vu que le post s'était doublé, il a pas dû aimer le EDIT que j'ai fais du post principale, désolé et j'essaie les solutions données dans l'autre topic que je viens voir Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 16 janvier 2006 Auteur Partager Posté(e) le 16 janvier 2006 heuu bêtement : function suppaccents($text){ $text= strtr($text, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"); return $text; } Je viens d'essayer ce que m'a donnée SyGEN, ça me retourne la même chose, a�la�va�s au lieu de eleve (élèvës) J'ai juste remplacer $text par le $name que j'utilise Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 16 janvier 2006 Auteur Partager Posté(e) le 16 janvier 2006 Je viens de voir un truc bizarre, c'est que quand je met ça ça marche impec $name = "élèvës"; $name= strtr($name, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"); echo $name; ça affiche eleves Si je donne la valeur élèvës à $name, ça marche mais si on garde la valeur donnée par le formulaire (qui est la meme valeur) ça marche pas. Je vais devenir fou avec ce truc Lien vers le commentaire Partager sur d’autres sites More sharing options...
Helfima Posté(e) le 16 janvier 2006 Partager Posté(e) le 16 janvier 2006 petite question tu cherche a faire quoi exactement? car sinon tu peux simplement interdire des caractères c'est bcp plus simple à gérer. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 16 janvier 2006 Auteur Partager Posté(e) le 16 janvier 2006 En passant par un formulaire simple (option, nom et password), un client crée un compte sur le serveur. La, je ne veux pas qu'il y est de majuscule ni de caractère spéciaux pour éviter tout problème de création de compte entre l'utilisateur linux qui est créé, la bdd mysql, le compte ftp etc ... Je vais mettre qq truc de plus car je commence à me poser des questions sur les doctype, enctype et co qu'il faut mettre dans le html Le soucis que j'ai, c'est que je n'ai eu qu'une initiation au html (donc tout ce qui est doctype, validation w3c et co je ne connais pas) et que je n'ai fais qu'un site web perso jusqu'à présent qui été largement plus simple et qui me suffisait par rapport à ce que j'ai voulu appronfondir à l'époque. (sachant que le gars qui nous fesait l'initiation ne voulait pas attendre parler de w3c, compatibité avec firefox et compagnie Déjà que le w3c validator me met plein d'erreur et que j'ai pas la moindre idée d'où ça vient Quand au php, je connais rien et j'apprend en bossant maintenant dessus et avec l'aide de nexen.net, google.fr et pci maintenant index.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <meta http-equiv="content-type" content="text/html"; charset="iso-8859-1"> <meta http-equiv="content-language" content="fr-FR"> <TITLE>création du compte</TITLE> <link type="text/css" href="css.css" rel="stylesheet"> </HEAD> <BODY lang="fr" width="100%" height="100%" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" bgcolor="#FFFFFF" background="image/backrground.jpg"> <TABLE width="750" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#F2F2F2" align="center"> <tr width="100%" height="100%"> <form method="post" action="creation.php"> <td height="100%" class="textebrute"> Choix de votre option :<br> Gratuit : <INPUT name="option" type=radio checked value="g"><br> Payant : <INPUT name="option" type=radio value="p"><br> <br> Entrez votre nom : <INPUT name="nom" size="15"><br> <br> Entrez votre mot de passe de compte : <INPUT name="password" size="15"><br> <br> <INPUT type="submit" value="Envoyer"> </td> </form> </tr> </table> </BODY> </HTML> et le creation.php <? $name=$_POST["nom"]; $mdp=$_POST["password"]; $opt=$_POST["option"]; #echo qui affiche le résultat avant modif echo $name; #il y a un double quote entre la virgule après $name et le début de l'alphabet en masjuscule sauf que le fourm (malgré la balise code) affiche & #34; $name= strtr($name, "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "abcdefghijklmnopqrstuvwxyzaaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"); #echo qui affiche le résultat après modif echo $name; ... etc ... #création des pages, comptes ... etc ... ?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 16 janvier 2006 Auteur Partager Posté(e) le 16 janvier 2006 Je viens de voir qqchose de bizarre. Je suis passé de la method POST à GET pour voir ce que transmet le navigateur. Et là, c'est le drame. Je rentre ËLEVES dans mon formulaire, ça passe dans l'url sous forme ?option=g&nom=%C3%8BLEVES&password=test et affiche a�leves alors que si je remplace dans l'url %C3%8B par Ë, il m'affiche ?option=g&nom=%CBLEVES&password=test et résultat eleves Alors pourquoi IE et Firefox remplace Ë par %C3%8B au lieu de %CB Je commence activement à préparer une corde ou à devenir dingo Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 16 janvier 2006 Partager Posté(e) le 16 janvier 2006 Alors pourquoi IE et Firefox remplace Ë par %C3%8B au lieu de %CB Ben non c'est logique, dans l'url les accentués sont codés de cette facon, mais bon, passer le mdp en GET c'est du n'importe quoi aussi. Je viens de tester tes 2 phps (en get et post) et franchement ca roule. Donc comme dit plus haut, je vois qu'une mauvaise interprétation soit de ton browser, soit de ton serveur web (iso ou utf). Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 16 janvier 2006 Auteur Partager Posté(e) le 16 janvier 2006 non non, qu'on ne se trompe pas, le get s'était pour faire un test, j'utiliserai jamais la method get pour passer un des informations de mon html à mon php, suis peut etre pas bon, mais suis pas fou Le truc sur le codage des caractères, c'est que quand je met Ë à la main, il met un autre codage que celui que le nav met d'origine. Il met %C3%8B alors que quand je met Ë il le retranscrit en %CB Par contre, ça doit peut etre venir du serveur lui même, dans ce cas je vais regardé. Le serveur apache étant sur une fedora Core 4 installé d'origine par les packages fedora, j'y jete un oeil direct. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 16 janvier 2006 Auteur Partager Posté(e) le 16 janvier 2006 Donc comme dit plus haut, je vois qu'une mauvaise interprétation soit de ton browser, soit de ton serveur web (iso ou utf). En quelques mots, je t'aime à la foliiiiiiiiiiiiiie Le fichier de conf de apache avait comme charset par défaut utf-8, j'ai misISO-8859-1à la place et magique, ça marche Pour le navigateur, je vois pas comment étant donner que je sais pas où on modifirait ça. J'ai par contre réglé un mal pour un autre, c'est que maintenant j'ai la plupart des accents de mon code HTML qui sont affiché zarb, et c'est parti pour les é et co, mais ça c'est facile ^^ EDIT : Fait pour le résolu Et je préfére tout faire en iso vu qu'en ce qui concerne l'UTF, j'ai tout essayé pour que ça marche en UTF sans pour autant réussir, si l'iso marche, alors je ferais tout en iso Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 16 janvier 2006 Partager Posté(e) le 16 janvier 2006 En quelques mots, je t'aime à la foliiiiiiiiiiiiiie Du calme du calme Le fichier de conf de apache avait comme charset par défaut utf-8, j'ai misISO-8859-1à la place et magique, ça marche En tout logique c'est pas bien de faire ca normalement tu dois pouvoir t'adapter au codage du serveur et donc le mieux c'est de passer par un fichier de config pour ton php qui code en utf ou en iso tes pages. Mais bon soit, si c'est ton serveur et que tu bosses qu'en iso, alors oui, c'était la soluce la plus simple. P.S. tu peux éditer et mettre [résolu] dans le titre du msg ;p Lien vers le commentaire Partager sur d’autres sites More sharing options...
Helfima Posté(e) le 17 janvier 2006 Partager Posté(e) le 17 janvier 2006 moi perso pour ce qui est des pass login je ferai un test sur la validité de la chaine au niveau des caractères plutot que de les remplacer et si pas bon ben tu préviens l'utilisateur que seul les carateres normaux et les chiffres sont autorisés. une bonne expression régulière et ton truc tien en 2 lignes. j'ai plus la syntaxe exact vu que je suis au taff mais ca doit se trouver facilement. ca donne un truc du genre $exp = "[a-zA-Z0-9]*"; // masque pour les caractères minuscules, majuscules et chiffres uniquement et n fois ereg($exp,$chaine); // retourne false si la chaine ne correspond pas au masque $exp, sensible à la case avec une tell méthode tu peux vérifier n'importe quelle validité de chaine en changeant le masque genre la forme d'une adresse mail ect.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.