Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2953 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  interdire les carractere spéciaux php

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

interdire les carractere spéciaux php

n°2045339
duffman39
Posté le 31-12-2010 à 11:22:51  profilanswer
 

Bonjour
J'ai fais des formulaires et je voulais savoir si vous aviez des fonctions qui permet d'interdire l'envoi des carractère spéciaux et une autre fonction pour interdire d'entré deux fois le meme utilisateur dans la base de donnée.  
Merci d'avance

mood
Publicité
Posté le 31-12-2010 à 11:22:51  profilanswer
 

n°2045340
hinomura
Posté le 31-12-2010 à 11:29:50  profilanswer
 

Pour les caractères spéciaux, dans ton code php qui reçoit les infos de formulaire, tu fais un mysql_escape_string($_POST['ta_variable'])
 
Pour éviter d'utiliser deux fois le même utilisateur, tu dois faire une pré-requête SELECT où tu cherches si un utilisateur portes le même nom / login / autres infos.

n°2045571
esox_ch
Posté le 02-01-2011 à 12:30:06  profilanswer
 

Arrêtez de conseiller mysql_escape_string à tort et à travers! On est en 2011, pas en 1990!
Duffman39: De nos jours, il y a 2 solutions faciles, fiable, rapides et qui t'offrent plein d'autres avantages que tu réaliseras par la suite :
- Les requêtes préparées ( http://www.php.net/manual/en/mysqli.prepare.php )
- L'utilisation d'une interface comme PDO ( http://www.php.net/manual/fr/book.pdo.php )  
 
Il est bon de lire la 1ere solution rapidement mais je te conseille d'utiliser la 2ème car c'est là que ça devient vraiment intéressant!


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045664
hinomura
Posté le 02-01-2011 à 19:55:13  profilanswer
 

esox_ch a écrit :

Arrêtez de conseiller mysql_escape_string à tort et à travers! On est en 2011, pas en 1990!
Duffman39: De nos jours, il y a 2 solutions faciles, fiable, rapides et qui t'offrent plein d'autres avantages que tu réaliseras par la suite :
- Les requêtes préparées ( http://www.php.net/manual/en/mysqli.prepare.php )
- L'utilisation d'une interface comme PDO ( http://www.php.net/manual/fr/book.pdo.php )  
 
Il est bon de lire la 1ere solution rapidement mais je te conseille d'utiliser la 2ème car c'est là que ça devient vraiment intéressant!


A la question " Y a t'il une fonction", la réponse était parfaitement adaptée.
 
Maintenant s'il avait posé la question " Y a t'il moyen de repisser tout mon code d'une autre manière" alors ta réponse l'aurait était.
 

n°2045669
esox_ch
Posté le 02-01-2011 à 20:05:42  profilanswer
 

Joue pas au con ...  
- Tu peux faire des prep. statements avec la fonction prepare (et vient pas me dire que tu l'as pas proposé parce que c'est une methode et non pas une fonction)
- Il est manifestement paumé s'il vient poser une question du genre, ça te semble la bonne occasion de lui sortir la pire des solutions juste pour être sûr de ne pas sortir de 1mm du scope de sa question?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045692
CyberDenix
Posté le 02-01-2011 à 21:18:06  profilanswer
 

On peut même faire des requêtes préparées avec PDO.  :love:


---------------
Directeur Technique (CTO)
n°2045806
hinomura
Posté le 03-01-2011 à 11:53:12  profilanswer
 

esox_ch a écrit :

Joue pas au con ...  
- Tu peux faire des prep. statements avec la fonction prepare (et vient pas me dire que tu l'as pas proposé parce que c'est une methode et non pas une fonction)
- Il est manifestement paumé s'il vient poser une question du genre, ça te semble la bonne occasion de lui sortir la pire des solutions juste pour être sûr de ne pas sortir de 1mm du scope de sa question?


J'aurai du effectivement lui proposer mysql_real_escape_string()  :jap:  
 
Désolé, ça ne me semble pas "la pire" des solutions, je ne suis pas encore super au fait de PHP 5, et donc proposer une fonction simple me paraissait un conseil adapté :jap:
 
Maintenant, il est évident que si le but est de ramener sa science de manière désagréable, alors je m'inscris en faux, et toi en vrai.
 
Ceci dit, ça ne m’empêchera pas de regarder / appliquer les conseils que tu as donné, je ne t'en attribuerai juste pas le mérite.
 
Cordialement, touSSa

n°2045813
duffman39
Posté le 03-01-2011 à 12:05:06  profilanswer
 

En faite j'avais fais cela en javascript mais cétait pas formidable

n°2045824
esox_ch
Posté le 03-01-2011 à 13:10:48  profilanswer
 

@hinomura: Peut-être que je suis allé un peu fort sur mon 2ème message.. Par contre mysqli_prepare() est aussi une fonction (bien que PHP5).
@duffman30: Le faire en JS c'est totalement inutile parce que ça peut être facilement contourné


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045844
duffman39
Posté le 03-01-2011 à 14:15:28  profilanswer
 

Enfaite je demande pas un truc super compliquer cest pour une utilisation en intranet.
Juste un petit script me sufirait.

mood
Publicité
Posté le 03-01-2011 à 14:15:28  profilanswer
 

n°2045848
smaragdus
whores, drugs & J.S. Bach
Posté le 03-01-2011 à 14:19:43  profilanswer
 

Va falloir que tu te fasses à l'idée que programmer en PHP, c'est compliqué [:dawa]
 
La première réponse est la plus simple et contenait déjà tout ce qu'il te faut.

n°2045849
esox_ch
Posté le 03-01-2011 à 14:19:45  profilanswer
 

Voir mon 1er message


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045852
duffman39
Posté le 03-01-2011 à 14:25:32  profilanswer
 

J'ai essayé mais ça ne marche pas  
Enfin je mis prend peut etre mal aussi
voila mon code
 
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Admin</title>
  6. </head>
  7. <body>
  8. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
  9.   <p>
  10.   Login :
  11.   <input type="text" name="login" size="20" maxlength="45" id="login"  />
  12.   </p>
  13.   <p>Mot de passe :
  14.     <input type="password" name="mdp" size="20" maxlength="45" id="mdp" />
  15.   </p>
  16.   <p>Dossier :
  17.     <input type="text" name="dossier" size="20" maxlength="45" id="dossier" />
  18.     <br><br>
  19.     <input type="submit" value="Envoyer" name="envoyer" />
  20.   </p>
  21. </form>
  22. </body>
  23. </html>
  24. <?php
  25. mysql_escape_string($_POST['login'],$_POST['dossier']) ;
  26. $login_af=$_POST['login'];
  27. $mdp_af=$_POST['mdp'];
  28. ////////////////////////////////////////
  29. //           //
  30. //           //
  31. //    Envoi des données formulaire    //
  32. //           //
  33. //           //
  34. ////////////////////////////////////////
  35. // On récupère les champs
  36. mysql_escape_string($_POST['login']) ;
  37. mysql_escape_string($_POST['dossier']) ;
  38. $login=$_POST['login'];
  39. $mdp=md5($_POST['mdp']);
  40. $dossier=$_POST['dossier'];
  41. // On vérifie si les champs sont vides
  42. if(empty($login) OR empty($mdp) OR empty($dossier))
  43.     {
  44.     echo '<font color="red"><b>Attention, vous navez pas remplit touts les champs !</b></font><br />';
  45.     }
  46. // Aucun champ n'est vide, on peut enregistrer dans la table
  47. else   
  48.     {
  49.     $db = mysql_connect('localhost', 'root', 'root');  // connexion à la base
  50.     mysql_select_db('base',$db);                  // sélection de la base
  51.    
  52.  
  53.         $sql = "INSERT INTO acces(login,mdp,dossier) VALUES('$login','$mdp','$dossier')";
  54.         mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  55.  mkdir($dossier);
  56.        
  57.         // on affiche le résultat pour le visiteur
  58. echo '<font color="#00CC00"><b>Vos infos ont été ajoutées.</b></font><br />';
  59. echo '<table border="1" cellpadding="0" cellspacing="0">
  60.   <tr>
  61.     <td valign="middle">Le login du nouvelle utilisateur est <b>';
  62. echo $login_af;
  63. echo '</b><br />';
  64. echo 'Son mot de passe est <b>';
  65. echo $mdp_af;
  66. echo '</b></td>
  67.   </tr>
  68. </table><br />';
  69.        
  70.        
  71.     mysql_close();  // on ferme la connexion
  72.     }

n°2045854
esox_ch
Posté le 03-01-2011 à 14:27:55  profilanswer
 

Et voilà ce qui arrive quand on conseille n'importe quoi à un débutant sous prétexte que c'est "plus simple" => Il fait n'importe quoi...  
Bravo la pédagogie [:pingouino]


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045856
smaragdus
whores, drugs & J.S. Bach
Posté le 03-01-2011 à 14:32:26  profilanswer
 

<font color="#00CC00">


Oh putain le vieux html du XXème siècle  [:zytrasnif]

n°2045861
esox_ch
Posté le 03-01-2011 à 14:40:24  profilanswer
 

Y a que ça qui te frappe ? :D
Son truc doit déjà être compromis dans tous les sens vu qu'il stocke les mdp en clair dans sa base ...
 
Edit: Voilà, vous avez fait les malins en lui donnant une solution "rafistolé vite fait", maintenant vous nettoyez les conneries :D


Message édité par esox_ch le 03-01-2011 à 14:41:20

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045867
duffman39
Posté le 03-01-2011 à 14:44:44  profilanswer
 

Non les mot de passe ne sont pas stocker en claire dans la base

Code :
  1. $mdp=md5($_POST['mdp']);


n°2045868
smaragdus
whores, drugs & J.S. Bach
Posté le 03-01-2011 à 14:46:04  profilanswer
 

Et je ne parle pas des fautes d'orthographe  [:zytrahusathome]  

Attention, vous navez pas remplit touts les champs


n°2045869
duffman39
Posté le 03-01-2011 à 14:46:13  profilanswer
 

Après pour le font color j'aurais pu faire du CSS mais jsuis pas sur la partie graphique pour le moment

n°2045871
esox_ch
Posté le 03-01-2011 à 14:48:55  profilanswer
 

duffman39 a écrit :

Non les mot de passe ne sont pas stocker en claire dans la base

Code :
  1. $mdp=md5($_POST['mdp']);




 
Toutes mes excuses, tu as raison :jap:
 
(Par contre quand même ... le md5 ça fait un moment qu'on arrive à le "casser" (j'entends par là, créer des collisions). Utilise au moins du sha1  :bounce:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045872
smaragdus
whores, drugs & J.S. Bach
Posté le 03-01-2011 à 14:49:08  profilanswer
 

bah justement, si t'es pas sur la partie graphique, pourquoi t'as mis des font color ?  [:mister_k@]

n°2045875
duffman39
Posté le 03-01-2011 à 14:55:42  profilanswer
 

Oui jpensais faire un md5+graindesel mais bon, sa va encore alourdir le code

n°2045876
duffman39
Posté le 03-01-2011 à 14:57:18  profilanswer
 

oui pas faux enfin jsuis pas sur la partie graphique dans mon post.
Après je sais bien que c'est pas super pro ce que j'ai fais c'est pour cela que je demande de l'aide


Message édité par duffman39 le 03-01-2011 à 14:57:41
n°2045877
esox_ch
Posté le 03-01-2011 à 15:02:01  profilanswer
 

Le soucis de ton code c'est qu'on voit qu'il a été fait un peu "à l'arrache", sans trop savoir dans quel sens tu pars, et du coup y manque de la structure ...
Tu as regardé les 2 liens que je t'ai donnés? ça te semblera peut-être un peu compliqué au départ, mais le soucis c'est que faire un code PHP "vite fait" ça rime souvent avec "mal fait - pas sécurisé". Une fois que t'auras bien assimilé les concepts, tu pourras écrire un truc qui tient la route.

 

Edit: Te préoccupe pas d'avoir un code "lourd", c'est pas avec un script de 15 lignes que tu vas y arriver ... Essaie d'avoir un code propre, logique et qui fait ce que tu veux. Le jour où t'auras des problèmes de performances, tu auras probablement acquis assez de compétences entre temps pour améliorer là où il faut


Message édité par esox_ch le 03-01-2011 à 15:03:18

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2045974
CyberDenix
Posté le 03-01-2011 à 21:59:39  profilanswer
 

Ils sont méchants mais c'est pour ton bien.
 
T'es le premier débutant qui s'acharne en php sur le forum depuis très longtemps. Continues comme ça, c'est en forgeant qu'on devient forgeron ;)


Message édité par CyberDenix le 03-01-2011 à 22:00:19

---------------
Directeur Technique (CTO)
n°2046029
duffman39
Posté le 04-01-2011 à 09:45:58  profilanswer
 

enfaite j'en avais fais il y a 5ans et j'ai laissé tomber et cette année, j'essai de mis remettre, surtout qu'on me demande d'en faire dans ma boite mais je galère pas mal et c'est aussi pour ça que je m'acharne un peu


Message édité par duffman39 le 04-01-2011 à 09:46:55
n°2046037
esox_ch
Posté le 04-01-2011 à 10:01:33  profilanswer
 

Est-ce que tu as un bon bouquin de référence? Parce que c'est quand même bien utile pour se mettre dans le bain ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2046087
duffman39
Posté le 04-01-2011 à 12:07:57  profilanswer
 

non pas vraiment, j'ai que le site du zéro comme aide, mais bon c'est vraiment la base

n°2046093
esox_ch
Posté le 04-01-2011 à 12:55:37  profilanswer
 

Oui et même comme base c'est pas tout à fait glop ...  
Voilà un bon livre : http://ptgmedia.pearsoncmg.com/ima [...] X_book.pdf  
Si tu veux la version papier, elle existe sur Amazon
 
Sinon en français : http://g-rossolini.developpez.com/tutoriels/php/cours/


Message édité par esox_ch le 04-01-2011 à 12:56:26

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2046127
duffman39
Posté le 04-01-2011 à 14:39:42  profilanswer
 

Merci bien pour le coup de pouce, je pense que ça me fera progresser surtout quand je suis pas du tout ce domaine d'activité, je suis dans une imprimerie :-S

n°2046128
esox_ch
Posté le 04-01-2011 à 14:41:33  profilanswer
 

De rien, tu verras que si tu arrives à rester croché et à tout bien lire et apprendre, ça prendra du temps mais tu pourras faire des trucs pas mal à la fin :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2046639
hinomura
Posté le 05-01-2011 à 21:24:31  profilanswer
 

Et pour l'usage, même si la fonction pue du bout pour certains, mysql_escape_string ( ou mysql_real_escape_string ) s'utilise comme ça

 
Code :
  1. $pwd = mysql_real_escape_string($_POST['password']);
  2. $login = mysql_real_escape_string($_POST['login']);
  3. // tests conditions touSSa
  4. $query = "INSERT INTO ma_table (login,password) VALUES ('" , $login , "','", $pwd , "')";
  5. // puis executer la requete touSSa
 

Après y a le PDO, les requêtes préparées etc qui sont plus propres aussi :jap:


Message édité par hinomura le 05-01-2011 à 21:30:35
n°2046640
hinomura
Posté le 05-01-2011 à 21:27:53  profilanswer
 

esox_ch a écrit :

@hinomura: Peut-être que je suis allé un peu fort sur mon 2ème message.. Par contre mysqli_prepare() est aussi une fonction (bien que PHP5).
@duffman30: Le faire en JS c'est totalement inutile parce que ça peut être facilement contourné


Le problème n'est pas tant que tu ais raison, c'est surtout que je bosse principalement sur un intranet PHP4, et je développe sur une infra existante, sans pdo, sans php5, donc je suis assez peu coutumier des technos PHP5 et des classes / méthodes qui ne sont pas utilisés dans le code sur lequel je dois m'adapter, mais je te concède que ça reste la manière la plus propre. ;)

n°2046643
esox_ch
Posté le 05-01-2011 à 21:36:01  profilanswer
 

Non mais d'accord mais la question n'est pas là, la question est surtout de savoir à quel point vous êtes d'accord que l'application se pète la gueule un jour où l'autre... C'est pas le côté "propre" du code qui me fait utiliser des requêtes préparées (franchement c'est 3x plus long qu'écrire la requête à la main). Par contre le fait que ça te permette d'augmenter les perf des requêtes en utilisant le cache MySQL c'est vachement intéressant ... suffi de lire la doc pour se rendre compte qu'il n'y a AUCUNE excuse à ne pas l'utiliser


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2046650
hinomura
Posté le 05-01-2011 à 22:05:32  profilanswer
 

esox_ch a écrit :

Non mais d'accord mais la question n'est pas là, la question est surtout de savoir à quel point vous êtes d'accord que l'application se pète la gueule un jour où l'autre... C'est pas le côté "propre" du code qui me fait utiliser des requêtes préparées (franchement c'est 3x plus long qu'écrire la requête à la main). Par contre le fait que ça te permette d'augmenter les perf des requêtes en utilisant le cache MySQL c'est vachement intéressant ... suffi de lire la doc pour se rendre compte qu'il n'y a AUCUNE excuse à ne pas l'utiliser


Ca y est tu t'emballes encore, prends tes medocs, on a le temps :jap:
 
La question n'est pas de savoir si on doit le faire, c'est si on peut.
 
Si on te fout sur un dev de module d'un truc existant avec 2000 pages, des requêtes partout, et qu'on te dit juste de développer un module, tu vas pas leur re-pondre tout leur code pour que ça soit clean, surtout si c'est pas spécifié par le CDC hein, donc tu fais ton taf avec les outils dispos et les fonctions déjà utilisés pour que le code reste cohérent.
 
Dans le cas d'un nouveau dev, oui, tu consultes ce qu'il se fait de nouveau ...

n°2046692
esox_ch
Posté le 06-01-2011 à 08:52:19  profilanswer
 

Belle mentalité ... avec une optique aussi volontaire et avanguardiste ne t'étonne pas si on ne te proposera jamais de boulot plus intéressant ...
Tes décideurs ils en savent foutre rien de comment marche le site (et ils s'en foutent, et ils ont bien raison parce que c'est pas leur taf, c'est le tien). Donc c'est à toi de leur dire "Si on investi un peu pour reprendre la merde qui a été faite avant, vous gagnerez X% de productivité, et Y € en investissement serveur". C'est clair que si t'arrives avec tes propos du "Faudrait passer le code en PDO parce que c'est plus propre" ils vont te botter le cul, et là encore ils ont raison


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2046707
smaragdus
whores, drugs & J.S. Bach
Posté le 06-01-2011 à 09:39:33  profilanswer
 

C'est pas une "mentalité", c'est la réalité du marché : à partir du moment où tu commences une phrase par "si on investit un peu", t'as une réponse négative.

n°2046710
esox_ch
Posté le 06-01-2011 à 09:46:49  profilanswer
 

Bah vous avez pas de bol alors avec vos clients ... Ou alors vous savez pas les prendre ...
Si tu leur montre un lien direct (et avec peu de risque) entre un petit investissement aujourd'hui et une épargne le mois prochain (pas dans 10 ans), en général ça passe ...
Après le tout est de parler "financier" et non pas "troll poilu" .. sinon c'est clair que tu te fais botter le cul (bon en même temps en tant que consultant c'est un peu mon rôle de pousser les gens qui ont des thunes à investir dans des trucs qu'ils comprennent pas :D )


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2046785
hinomura
Posté le 06-01-2011 à 11:46:43  profilanswer
 

esox_ch a écrit :

Belle mentalité ... avec une optique aussi volontaire et avanguardiste ne t'étonne pas si on ne te proposera jamais de boulot plus intéressant ...
Tes décideurs ils en savent foutre rien de comment marche le site (et ils s'en foutent, et ils ont bien raison parce que c'est pas leur taf, c'est le tien). Donc c'est à toi de leur dire "Si on investi un peu pour reprendre la merde qui a été faite avant, vous gagnerez X% de productivité, et Y € en investissement serveur". C'est clair que si t'arrives avec tes propos du "Faudrait passer le code en PDO parce que c'est plus propre" ils vont te botter le cul, et là encore ils ont raison


Mais mon pauvre petit gars, c'est toi qui ne vis pas sur la même planète :)
 
Si ta mission n'est pas de re-développer un outil fonctionnel, tu peux proposer autant que tu veux, ce sont les objectifs prioritaires qui priment.
 
Et si un intranet / erp est codé sans tes mysql_prepare, ça n'en fait pas un mauvais outil pour autant.
 
Sors de ta bulle, parce que du boulot on m'en propose, et je sais m'adapter aux outils ET aux missions.
 
Si toi lorsque tu arrives tu proposes de refaire tout cash à ta sauce, c'est là qu'ils doivent rigoler :lol:
 
Bref, c'est pas grave, t'es dans ta bulle, si t'avances professionnellement en étant aussi obtus, tant mieux pour toi ;)
 
Je ne vais pas m'attarder avec toi, parce que ta prose sort du contexte originel et que je sens que ça va être très vite lassant.
 
A+

n°2046813
esox_ch
Posté le 06-01-2011 à 12:09:17  profilanswer
 

Très bien :) Le jour où tu devras intervenir sur un projet plus gros que les news de la boucherie du coin tu comprendras :)
 
A+


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  interdire les carractere spéciaux php

 

Sujets relatifs
[Mysql/phpmyadmin] Extraction csv et les caractères spéciaux.Interdire hotlinking d'image & URL Directe
[Résolu] Fonction supp petit mot et supp caractères spéciauxCaractères spéciaux
Comment interdire le double clic sur un bouton dans une anim flash ?[iText] interdire l'impression d'un pdf
Caractères spéciaux dans l'urlInterdire saisie de doublons dans Access
[Résolu]Caractères spéciaux et blancs à retirer 
Plus de sujets relatifs à : interdire les carractere spéciaux php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR