Soucis avec un espace membres

Signaler
Messages postés
140
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
18 décembre 2010
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
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?

14 réponses

Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

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..
Messages postés
140
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
18 décembre 2010

ok merci je vais chercher alors :p
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

La meilleure façon d'apprendre!
Messages postés
54
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
25 septembre 2007

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é

Alors pour commencer tu as te premiere page.

----------------------------------
formulaire.php
----------------------------------
<html>

<form id="form1" method="post" action="envoi.php">
Pseudo :

Mot de Passe :



</form>

</html>
----------------------------------------.
----------------------------------------.
envoi.php
----------------------------------------.

// ON SIMPLIFIE LES VARIBALES POUR PLUS DE SECURITE;
$pseudo= $_POST['pseudo'];
$pseudo= addslashes($pseudo);
$pseudo= htmlentities($pseudo);
$pseudo= nl2br($pseudo);
$pseudo= ucfirst($pseudo);

$motdepasse= $_POST['motdepasse'];
$motdepasse= addslashes($motdepasse);
$motdepasse= htmlentities($motdepasse);
$motdepasse= nl2br($motdepasse);
$motdepasse= ucfirst($motdepasse);

// 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 :.
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

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 "&eacute;p&eacute;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!



Ce que je ferais (et fais) :

$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);



$ 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.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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 "&eacute;p&eacute;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...


<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

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!
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
oulà c'est la solution bourrin ça... enregistrer deux versions du texte... (les CMS ne sont décidément pas faits pour moi)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

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 "&eacute;p&eacute;e-tranchante" soit 29
caractères..."

Quel serait ta solution?
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

Moué bien joué!
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
non enfin j'ai toujours fait comme ça j'ai jamais eu de problème ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
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 !
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
"

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 ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>