biloutte33
Messages postés140Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention18 décembre 2010
-
29 oct. 2005 à 16:08
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
30 oct. 2005 à 14:26
voilà j'aimrais savoir comment faire pour que quand je clique sur valider au moment de l'inscription, ça m'enregistre dans la base de donnée
car j'ai créer tous mes champs, autant dans la base de données que dans la page d'inscription, mais quand je clique sur valider, rien ne se passe puisqu'aucune fonction n'est sélectionnée
comment faire pour que ça m'enregistre dans la table que j'ai créer dans phpmyadmin?
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 29 oct. 2005 à 16:20
Ben faut faire un formulaire, récupérer les données, après soumission
de ce dernier, dans un script, les vérifier, les traiter et envoyer une
requête MySQL pour insérer les données.
Cherche dans les tuto et les codes c'est bourré de scripts dans ce genre..
djangoboy
Messages postés54Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention25 septembre 2007 29 oct. 2005 à 17:03
Salut,
Alors tout d'abord je te conseil de (re)lire les différents cours sur le php sur internet car c'est qqch des très impotant les formulaires, c'est la seule maniere d'obtenir des informations précise sur la personne derriere l'écran. Et aussi la l'écriture dans la base de donné
// ON SIMPLIFIE LES VARIBALES POUR PLUS DE SECURITE;
$pseudo= $_POST['pseudo'];
$pseudo= addslashes($pseudo);
$pseudo= htmlentities($pseudo);
$pseudo= nl2br($pseudo);
$pseudo= ucfirst($pseudo);
// ON SE CONNECTE A LA BASE DE DONNE.
// LA PLUS PART DU TEMPS C'EST CA POUR SE CONNECTER SUR TA BASE DE DONNEE
$sql_serveur = 'localhost';
$sql_user = 'root';
$sql_mdp = '';
$connexion = mysql_connect($sql_serveur,$sql_user,$sql_mdp) or die('Erreur : '.mysql_error());
$bdd = mysql_select_db($sql_bdd);
$requete = mysql_query("INSERT INTO nom_de_ta_base (id, pseudo, motdepasse) values ('', '$pseudo', '$motdepasse')") or die('Erreur : '.mysql_error());
echo "ENREGISTRE";
//PUIS ON REDIRIGE VERS UNE AUTRE PAGE.
<meta http-equiv="Refresh" content="20;URL=page2.php">
------------------------------------.
Voila j'espère que ce code tu comprendras, si c'est pas le cas tu peux me le demander sinon relie tout des même certain cour car c'est les bases.
Allez tchao
PS : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...
.: Dj.Ango :.
Vous n’avez pas trouvé la réponse que vous recherchez ?
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 29 oct. 2005 à 17:24
djangoboy, sur le principe je te suis, mais sur le code que tu as mis moins :
- Mettre des addslashes non
Parce que pas mal de serveur ont le paramètre magic_quotes_gpc activé
et ils le font donc déjà. Si tu met un addslashes là dessus, il va se
retrouver avec des caractères échappés deux fois... Tu imagines donc le
résultat.
- htmlentities et nl2br je déconseille
Parce que ça rajoute des caractères, donc ça grossit la place prise dans la base de données inutillement.
Par exemple, si tu as un champ `pseudo` VARCHAR(15) et que tu as mis
dans l'input text du pseudo un maxlength 15 (logique quoi). Si un
client entre comme pseudo "épée-tranchante" (plie 15 caractère... je
viens de l'inventer... je suis trop fort :p), le htmlentities va
transformer ça en "épée-tranchante" soit 29
caractères... tu comprend alors le problème :)
- ucfirst.... bon mettre des majuscules au début de tes valeurs...
"c'est ton choix!" <_< mais pour le mot de passe, ça craint!
Parce que si le client entre "toto" et que tu sauvegarde "Toto" (en
sachant que tu le cryptera surement) il faudrait que tu convertisse à
chaque foit le mot de passe entré par ton client avec ucfirst()... En
gros c'est inutile!
$connexion = mysql_connect($sql_serveur,$sql_user,$sql_mdp) or die('Erreur : '.mysql_error());
$bdd = mysql_select_db($sql_bdd);
$ pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : '' ; //faut éviter que php retourne une erreur si $_POST['pseudo'] n'est pas défini
$pseudo=
(get_magic_quotes_gpc()) ? stripslashes($pseudo) : $pseudo
; //je vire carrément tous les caractères
d'échappement rajoutés
$pseudo= (fonction_exists("mysql_real_escape_string")) ? mysql_real_escape_string($pseudo, $connexion )
: mysql_escape_string($pseudo); //la j'échappe les
caractères avec la fonction qui les prépare au mieux à une requête
MySQL (car elle est prévue pour :p)
$requete = mysql_query("INSERT
INTO nom_de_ta_ table (id, pseudo, motdepasse) values ('', '$pseudo',
'$motdepasse')") or die('Erreur : '.mysql_error());
header("Location:page2.php"); //php sait le faire, mais
tous les navigateurs ne savent pas interpréter la balise meta
http-equiv ="Refresh" et il n'est pas utile d'afficher le message de
confirmation ici puisque la redirection ne se fera que si la requête
est bien executée.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 29 oct. 2005 à 18:03
Salut,
"Mettre des addslashes non
Parce que pas mal de serveur ont
le paramètre magic_quotes_gpc activé et ils le font donc déjà. Si tu
met un addslashes là dessus, il va se retrouver avec des caractères
échappés deux fois... Tu imagines donc le résultat."
idem, faut tester si magic_quotes_gpc() vaut 1 ou zéro et faire un addslashes en conséquence.
"htmlentities et nl2br je déconseille
Parce que ça rajoute des caractères, donc ça grossit la place prise dans la base de données inutillement.
Par exemple, si tu as un champ `pseudo` VARCHAR(15) et que tu as mis
dans l'input text du pseudo un maxlength 15 (logique quoi). Si un
client entre comme pseudo "épée-tranchante" (plie 15 caractère... je
viens de l'inventer... je suis trop fort :p), le htmlentities va
transformer ça en "épée-tranchante" soit 29
caractères... tu comprend alors le problème :)"
Et donc tu parses à l'affichage ? ce qui est un gâchis de temps en
soit. Gâchis de place ou de temps, perso j'ai choisi (de place) lol ^^
Après chaque solution a ses avantages et ses inconvénients, tout dépend
du trafic du site, de l'hébergement (rapide ou lent) etc...
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 29 oct. 2005 à 18:11
oui je parse à l'affichage :p mais seulement parce que j'ai pas trois tonnes de texte =)
Sinon je choisirais carrément la solution de dotclear qui enregistre à
la fois la version parsée et l'autre, car pour faire des modifications
c'est galère sinon!
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 29 oct. 2005 à 18:36
Mais sérieux, dans le cas de mon exemple :
"Par exemple, si tu as un champ `pseudo` VARCHAR(15) et que tu as mis
dans l'input text du pseudo un maxlength 15 (logique quoi). Si un
client entre comme pseudo "épée-tranchante" (pile 15 caractères... je
viens de l'inventer... je suis trop fort :p), le htmlentities va
transformer ça en "épée-tranchante" soit 29
caractères..."
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 29 oct. 2005 à 18:42
bah de n'autoriser que 30 caractères tout en prévoyant un champ varchar
de 100 par exemple. Tu t'en fiches car de toute façon ça ne prendra
comme place que le nombre de caractères html. Donc même si ça en prend
50 c'est pas grave, ça te prendra pas 100 octets pour tous les pseudos
(même ceux faisant 30 caractères)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 30 oct. 2005 à 14:23
utiliser addslashes() alors que mysql_real_escape_string() existe.
Je trouve toujours la solution aussi bof.
En même temps, autant virer magic_quote_gpc() dans le PHP.ini si tu y
as accès. Parce que j'imagine pas la gueule du script quand tu dois
vérifier la fonction à chaque page visité :o (surtout quand ton site
est visité par un bon paquet de visiteur !)
Alors oui, c'est bien de faire des scripts qui soit compatible, mais
tant que ca reste un script personnel, autant faire un phpinfo();
histoire d'être sur une bonne fois pour toute, après on en parle plus !
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 30 oct. 2005 à 14:26
"
utiliser addslashes() alors que mysql_real_escape_string() existe.
Je trouve toujours la solution aussi bof."
pourtant ça fonctionne très bien ;-) mais c'est vrai que tu as raison
dans l'absolu, il faudrait utiliser mysql_real_escape_string() ;-)
"En même temps, autant virer magic_quote_gpc() dans le PHP.ini si tu y
as accès. Parce que j'imagine pas la gueule du script quand tu dois
vérifier la fonction à chaque page visité :o (surtout quand ton site
est visité par un bon paquet de visiteur !)
Alors oui, c'est
bien de faire des scripts qui soit compatible, mais tant que ca reste
un script personnel, autant faire un phpinfo(); histoire d'être sur une
bonne fois pour toute, après on en parle plus !"
si t'as possibilité ok, mais autant faire une vérif, avec ta fonction
perso genre ajouter_slashes() je fais ça sur mon site c'est pas
contraignant ;-)