Soucis avec un espace membres

biloutte33 Messages postés 140 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 18 décembre 2010 - 29 oct. 2005 à 16:08
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 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?

14 réponses

monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 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..
biloutte33 Messages postés 140 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 18 décembre 2010
29 oct. 2005 à 16:36
ok merci je vais chercher alors :p
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
29 oct. 2005 à 16:45
La meilleure façon d'apprendre!
djangoboy Messages postés 54 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 25 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é

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 :.

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 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 "&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.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
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 "&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>
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 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!
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 oct. 2005 à 18:19
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>
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 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 "&eacute;p&eacute;e-tranchante" soit 29
caractères..."

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

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
29 oct. 2005 à 18:45
Moué bien joué!
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 oct. 2005 à 18:47
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>
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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és 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
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 ;-)

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