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

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme création nouveau membre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme création nouveau membre

n°1687705
philrou71
Posté le 18-02-2008 à 10:56:55  profilanswer
 

bonjour à tous
J'ai un souci avec un script que j'utilise depuis 5 ans et qui marchait sans souci, mais j'ai changé d'hébergeur et peut être de version de phpmyadmin je ne sais pas si le problème vient de la.
En tout cas je n'arrive plus à enregistrer de nouveaux membres grâce a code suivant:

Citation :

<html>
<head>
<title>WebJeff - Espace membre</title>
</head>
<body>
<font face="Verdana" size="2">
<center>
<?
require("conf.php" );
 
switch($action) {
/*-----------------------------------------------------------------*/
/* AJOUT DANS MySQL   */
/*-----------------------------------------------------------------*/
 
case "add";
 
// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
 
// TEST SUR LES VALEURS SAISIES
if($pseudo_membre=="" ){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($passe_membre=="" ){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
// CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
//if($email=="" ){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
//if($ville=="" ){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
 
// ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
$num=mysql_num_rows($requete);
if($num!=0)
 {
 echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
 }
else
 {
 // CREATION D'UN IDENTIFIANT ALEATOIRE
 $taille = 20;
 $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
 srand(time());
 for ($i=0;$i<$taille;$i++)
  {
  $id.=substr($lettres,(rand()%(strlen($lettres))),1);
  }
   
 // ON RECHERCHE L'ID MAXIMUM DE LA TABLE
 $requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
 $idmax=mysql_result($requete,0,"max(id_membre)" );
 
 // INSERTION DANS LA TABLE  
 $idnew=$idmax+1;
 $requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\" )",$db_link) or die(mysql_error());
 // CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
 // insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\" )
 
 // REDIRECTION VERS LA PAGE D'ENTREE DE L'ESPACE MEMBRE
 echo "Merci, vous êtes bien enregistré. Cliquez <a href=\"$zone_membre?id=$id\">ici</a> pour entrer dans votre espace privé.";
 }
 
// DECONNEXION MYSQL
mysql_close($db_link);
 
break;
 
 
/*-----------------------------------------------------------------*/
/* AFFICHAGE DU FORMULAIRE   */
/*-----------------------------------------------------------------*/
 
default;
echo " <h2>Nouveau membre</h2>
 <form action=\"adduser.php\" method=\"post\">
 <input type=\"hidden\" name=\"action\" value=\"add\">
 Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
 Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
 <! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
 <!-- Votre email<br><input type=\"text\" name=\"email\"><br> -->
 <!-- Ville<br><input type=\"text\" name=\"ville\"><br> -->
 <input type=\"submit\" value=\"Envoyer\">
 </form>
 <font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
break;
}
?>
</center>
</font>
</body>
</html>


Aucun message d'erreur ne s'affiche. La page en question ne fait que se réafficher une fois que j'ai validé le formulaire et par la suite en tentant de me connecter il me met la page d'erreur. J'ai remarquer que tout ne s'exécute pas puisque si je ne rentre rien dans les 2 cases la page se réaffiche toujours sans rien de plus alors que d'après ce que j'ai compris du code il devrait s'afficher :Vous devez choisir un pseudo.
Je remercie par avance celui qui me donnera la solution.

mood
Publicité
Posté le 18-02-2008 à 10:56:55  profilanswer
 

n°1687709
babasss
Posté le 18-02-2008 à 11:02:42  profilanswer
 

Il faudrait que tu mettes le code suivant en début de ton script pour détecter d'où vient l'erreur :  

Code :
  1. <?php error_reporting(E_ALL); ?>


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1687713
philrou71
Posté le 18-02-2008 à 11:20:05  profilanswer
 

Y a cette ligne qui est apparue:
Notice: Undefined variable: action in /var/www/hbg.fr/m/a/maitrise/Partiemembre/adduser.php on line 17
dans l'adresse y 'a m/a au milieu je ne sais pas ce que ça vient faire là, ça ne correspond pas du tout à la véritable adresse mais je ne sais pas comment résoudre ce problème.


Message édité par philrou71 le 18-02-2008 à 11:26:48
n°1687723
soulmanto
Chat Noir replica
Posté le 18-02-2008 à 11:31:03  profilanswer
 

ben en gros ta variable action n'existe pas donc tu ne peux pas tester dans le switch (c'est marqué la ligne et le fichier dans lequel l'erreur se situe, tu peux pas faire plus clair pourtant? [:petrus75] )
A noter aussi que tu utilises encore les register globals à ON, et que ton nouvel hébergeur ne les a probablement pas activées

n°1687724
philrou71
Posté le 18-02-2008 à 11:35:24  profilanswer
 

euh alors même si je comprend une partie du script je ne suis pas assez bon pour comprendre tout ce que tu m'a dis. la ligne 17 c'est dans le fichier adduser nen? (c'est le fichier que j'ai mis en citation) et c'est quoi le test dans le switch? et c'est quoi cette histoire de register globals à ON??
En gros concrètement faut que je fasse quoi pour régler ce problème?
Merci de tes réponses


Message édité par philrou71 le 18-02-2008 à 11:44:17
n°1687743
soulmanto
Chat Noir replica
Posté le 18-02-2008 à 11:51:02  profilanswer
 

bah en gros pour régler le problème, contacte le type / l'équipe qui a créé le script si tu utilises un script tout fait... Je sais pas si ça vaut le coup que je t'explique les register_globals si tu connais pas PHP...

n°1687760
philrou71
Posté le 18-02-2008 à 12:00:02  profilanswer
 

ben en fait le site du type qui a fait le script n'existe plus et le script marchait nikel avant...
et je ne trouve pas cette ligne 17 dans adduser... je tombe en effet sur cette ligne si je compte bien:
if($passe_membre=="" ){echo "Vous devez choisir un mot de passe<br><br><a
Et pour les registers globals si tu pouvais m'expliquer vite fait ce que ça peut avoir comme conséquence sur l'exécution du script stp...

n°1687776
soulmanto
Chat Noir replica
Posté le 18-02-2008 à 12:44:28  profilanswer
 

alors pour la ligne qui pose problème, je serais tenté de dire que c'est plutôt celle là:

 
Code :
  1. switch($action) {
 

C'est la seule qui contient la variable $action

 

Les register_globals, c'est une configuration de PHP qui permet d'accéder aux variables des formulaires directement par le nom du formulaire, par exemple:

 
Code :
  1. <form action='ta_page.php' method='post'>
  2. <input type='text' name='login' />
  3. [...]
  4. </form>
 

sera vu du côté de PHP par "$login".

 

Aujourd'hui, à cause des problèmes de sécurité de ce mode de fonctionnement, on utilise plutot les superglobales $_GET et $_POST selon le mode de soumission du formulaire. Pour l'exemple ci-dessus, tu récupère la variable du formulaire par $_POST["login"]


Message édité par soulmanto le 18-02-2008 à 12:45:42
n°1687865
Xav_
The only one...
Posté le 18-02-2008 à 14:59:40  profilanswer
 

voilà,  
donc en résumé de ce que t'a expliqué soulmanto, il te faut utiliser switch($_POST['action']) dans le switch du début, et puis le même genre de syntaxe pour utiliser: 'pseudo_membre' 'passe_membre' ...etc...
 
Et sinon, je vois pas l'intéret de faire un traitement pour le calcul de l'Id dans la BDD, il suffisait de déclarer le champs "id" de type "autoinc" dans la table et mysql se débrouille tout seul...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World

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

  Probleme création nouveau membre

 

Sujets relatifs
Problème de passage de variables[SQL server] Transferer une base SQL sharepoint sur un nouveau serveur
Problème avec Qt4Concaténation de chaînes, problème avec langues sens d'écriture ≠
Interface de création 3DProblème PHP/MySQL
problème avec JScrollpaneproblème avec l'ouverture de deux Iframes avec un lien
Problème, 2 colonnes de texte en CSS[?PHP,HTML,JAVA?] problème avec une redirection
Plus de sujets relatifs à : Probleme création nouveau membre


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