interdire les carractere spéciaux php - PHP - Programmation
Marsh Posté le 31-12-2010 à 11:29:50
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.
Marsh Posté le 02-01-2011 à 12:30:06
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!
Marsh Posté le 02-01-2011 à 19:55:13
esox_ch a écrit : Arrêtez de conseiller mysql_escape_string à tort et à travers! On est en 2011, pas en 1990! |
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.
Marsh Posté le 02-01-2011 à 20:05:42
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?
Marsh Posté le 02-01-2011 à 21:18:06
ReplyMarsh Posté le 03-01-2011 à 11:53:12
esox_ch a écrit : Joue pas au con ... |
J'aurai du effectivement lui proposer mysql_real_escape_string()
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é
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
Marsh Posté le 03-01-2011 à 12:05:06
En faite j'avais fais cela en javascript mais cétait pas formidable
Marsh Posté le 03-01-2011 à 13:10:48
@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é
Marsh Posté le 03-01-2011 à 14:15:28
Enfaite je demande pas un truc super compliquer cest pour une utilisation en intranet.
Juste un petit script me sufirait.
Marsh Posté le 03-01-2011 à 14:19:43
Va falloir que tu te fasses à l'idée que programmer en PHP, c'est compliqué
La première réponse est la plus simple et contenait déjà tout ce qu'il te faut.
Marsh Posté le 03-01-2011 à 14:19:45
Voir mon 1er message
Marsh Posté le 03-01-2011 à 14:25:32
J'ai essayé mais ça ne marche pas
Enfin je mis prend peut etre mal aussi
voila mon code
Code :
|
Marsh Posté le 03-01-2011 à 14:27:55
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
Marsh Posté le 03-01-2011 à 14:32:26
<font color="#00CC00"> |
Oh putain le vieux html du XXème siècle
Marsh Posté le 03-01-2011 à 14:40:24
Y a que ça qui te frappe ?
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
Marsh Posté le 03-01-2011 à 14:44:44
Non les mot de passe ne sont pas stocker en claire dans la base
Code :
|
Marsh Posté le 03-01-2011 à 14:46:04
Et je ne parle pas des fautes d'orthographe
Attention, vous navez pas remplit touts les champs |
Marsh Posté le 03-01-2011 à 14:46:13
Après pour le font color j'aurais pu faire du CSS mais jsuis pas sur la partie graphique pour le moment
Marsh Posté le 03-01-2011 à 14:48:55
duffman39 a écrit : Non les mot de passe ne sont pas stocker en claire dans la base
|
Toutes mes excuses, tu as raison
(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
Marsh Posté le 03-01-2011 à 14:49:08
bah justement, si t'es pas sur la partie graphique, pourquoi t'as mis des font color ?
Marsh Posté le 03-01-2011 à 14:55:42
Oui jpensais faire un md5+graindesel mais bon, sa va encore alourdir le code
Marsh Posté le 03-01-2011 à 14:57:18
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
Marsh Posté le 03-01-2011 à 15:02:01
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
Marsh Posté le 03-01-2011 à 21:59:39
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
Marsh Posté le 04-01-2011 à 09:45:58
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
Marsh Posté le 04-01-2011 à 10:01:33
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 ..
Marsh Posté le 04-01-2011 à 12:07:57
non pas vraiment, j'ai que le site du zéro comme aide, mais bon c'est vraiment la base
Marsh Posté le 04-01-2011 à 12:55:37
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/
Marsh Posté le 04-01-2011 à 14:39:42
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
Marsh Posté le 04-01-2011 à 14:41:33
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
Marsh Posté le 05-01-2011 à 21:24:31
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 :
|
Après y a le PDO, les requêtes préparées etc qui sont plus propres aussi
Marsh Posté le 05-01-2011 à 21:27:53
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). |
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.
Marsh Posté le 05-01-2011 à 21:36:01
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
Marsh Posté le 05-01-2011 à 22:05:32
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
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 ...
Marsh Posté le 06-01-2011 à 08:52:19
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
Marsh Posté le 06-01-2011 à 09:39:33
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.
Marsh Posté le 06-01-2011 à 09:46:49
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 )
Marsh Posté le 06-01-2011 à 11:46:43
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 ... |
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
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+
Marsh Posté le 06-01-2011 à 12:09:17
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+
Marsh Posté le 31-12-2010 à 11:22:51
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