Probleme création nouveau membre

Probleme création nouveau membre - PHP - Programmation

Marsh Posté le 18-02-2008 à 10:56:55    

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.

Reply

Marsh Posté le 18-02-2008 à 10:56:55   

Reply

Marsh Posté le 18-02-2008 à 11:02:42    

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
Reply

Marsh Posté le 18-02-2008 à 11:20:05    

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
Reply

Marsh Posté le 18-02-2008 à 11:31:03    

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

Reply

Marsh Posté le 18-02-2008 à 11:35:24    

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
Reply

Marsh Posté le 18-02-2008 à 11:51:02    

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

Reply

Marsh Posté le 18-02-2008 à 12:00:02    

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

Reply

Marsh Posté le 18-02-2008 à 12:44:28    

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
Reply

Marsh Posté le 18-02-2008 à 14:59:40    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed