Inscription/confirmation

besoin_daidee
Invité n'ayant pas de compte PHPfrance

23 oct. 2011, 16:50

a part ca mon script sur la page d'inscription fonctionne parfaitement le mail est envoyé etc... :) mais pb sur la page de confirmation,quand je recois le mail et je clique sur le lien d'activation, il affiche le message d'erreur:
Un problème est survenu, il est possible que vous ne soyez pas inscrit ou que l\'adresse est fausse ou que vous êtes déjà validé !.</p>';

Eléphant du PHP | 343 Messages

23 oct. 2011, 17:09

conf.php3 c'est le nom de la page que tu "requires".
Si tu as le message, c'est que $data['nb'] est différent de 1.
Tente un
echo '<p>Un problème est survenu, il est possible que vous ne soyez pas inscrit ou que l\'adresse est fausse ou que vous êtes déjà validé !.</p>';
echo $data['nb'];
Développeur web

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 17:26

ok ais c'est quoi l'utilité e mettre conf?je dois le mttre sur toutes mes pages?
je test echo

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 17:28

il affiche 0

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 17:56

je ne comprend meme pas a quoi sert ce nb, peux tu m'expliquer stp? si c'est le nombre de membres qu'il existe dans ma table (sr mon site) ca n'a auune utilité non?

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 17:57

il faut que je crée un champs nb dans ma table aussi non? désolé pour les 4 post daffilés

Eléphant du PHP | 343 Messages

23 oct. 2011, 18:59

Normalement 1 config.php contient les connexions et/ou identifications à la bdd donc login, pass, nom de la bdd etc...
Si c'est le cas, il faudra l'indiquer sur toutes les pages où tu demandes de faire des req sql.
Après s'il fait 0 c'est que ta requête:
SELECT COUNT(*) as nb FROM pdf_membre WHERE login = "'.addslashes($_GET['login']).'" AND confirm = "'.addslashes($_GET['confirm']).'"';
ne retourne aucun résultat.

PS: Utilise le bouton edit à la place de poster 5 messages à la suite ;)

Edit: On dirait une erreur de conception, la confirmation de la création du compte est à faire quand nb=0. J'ai d'ailleurs du mal à comprendre ce que tu fais.
Peux-tu expliquer?
Développeur web

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 19:21

donc si a chaque fois j'écrit manuellement la requete pour se connecter a la bdd je nai pas besoin de le mettre dans une page?
je suis débutant en php donc je ne peux pas t'expliquer clairement :
je ne suis meme pas sur de la raison pur laquelle une page de confirmation est necessaire puisque lors de l'insription les données du visiteur sont censées etre enregistrées dans la bdd, mais elles ne sont pas enregistrées dedanss, c'est pour ca que j'ai besoin d'aide por savoir ce qu'il faut vraiment mettre dans ma page de confirmation, c'est pourquoi je ne vois pas l'interet de faires es requetes avec nb, d'ailleurs je ne sais meme pas e que représene ce nb...

Eléphant du PHP | 343 Messages

23 oct. 2011, 19:37

Si tu mets ce que contient ton require sur toutes les pages (où ton require est nécessaire bien entendu), tu peux retirer cette ligne. Mais après au moindre changement, tu devras tout rechanger manuellement (d'où l'utilité d'un require).

Déjà il faudrait comprendre d'où sort ce script surtout si tu ne peux pas l'expliquer. Comment comptes-tu le debugger si tu ne sais même pas à quoi sert la page? :?
Si je comprends bien ta page d'inscription est buguée mais tu veux réparer la page de confirmation avant?
Si tu ne peux pas expliquer d'où sort nb, moi non plus, je ne suis pas magicien ;)

Essaye de revenir avec un plan précis de ce que tu veux faire et un code pour pouvoir corriger tes problèmes.
Exemple: A l'inscription, j'ai X champs que je remplis avec les données du formulaire etc...
Si l'inscription ne marche pas, tu ne pourras pas debugger la page de confirmation.
Développeur web

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 20:01

comment ca debugguer??
sinon je voulais savoir aussi, quand est-ce qu'il faut mettre le session_start(); en debut de script,sur toutes mes pages?

l'inscription fonctionne mais la base dedonnée est sensé enregistrer les données du visiteur une fois l'inscription effectuée ou après avoir validé son inscription?tu voi ce que je veux dire? :)

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 20:37

Voici ce qu'il me met lorsque le code d'en dessous est éxécuté:
Fatal error: Call to a member function prepare() on a non-object in /homez.466/.../www/confirm.php on line 22 une idée pour y remédier?
<?php
//on verifie si les variables ne sont pas vides
if (!isset($_GET['login']))
{
 echo 'erreur: pas de login fourni';
 exit();
}
if ( !isset($_GET['confirm']) )
{
 echo 'erreur: pas de code de confirmation';
 exit();
} 

$base = mysql_connect ('') or die('Erreur de connexion '.mysql_error());
mysql_select_db('',$base)  or die('Erreur de selection '.mysql_error()); 

// Récupération des variables nécessaires à l'activation
$login = $_GET['login'];
$cle = $_GET['confirm'];
		
// Récupération de la clé correspondant au $login dans la base de données
$stmt = $base->prepare("SELECT confirm,actif FROM pdf_membre WHERE login like :login ");

if($stmt->execute(array(':login' => $login)) && $row = $stmt->fetch())
  {
    $clebdd = $row['confirm'];	// Récupération de la clé
    $actif = $row['actif']; // $actif contiendra alors 0 ou 1
  }
		
		
// On teste la valeur de la variable $actif récupéré dans la BDD
if($actif == '1') // Si le compte est déjà actif on prévient
  {
     echo "Votre compte est déjà actif !";
  }
else // Si ce n'est pas le cas on passe aux comparaisons
  {
     if($cle == $clebdd) // On compare nos deux clés	
       {
          // Si elles correspondent on active le compte !	
          echo "Votre compte a bien été activé !";
								
          // La requête qui va passer notre champ actif de 0 à 1
          $stmt = $base->prepare("UPDATE pdf_membre SET actif = 1 WHERE login like :login ");
          $stmt->bindParam(':login', $login);
          $stmt->execute();
       }
     else // Si les deux clés sont différentes on provoque une erreur...
       {
          echo "Erreur ! Votre compte ne peut être activé...";
       }
  }
  mysql_close($base);
  ?>

Eléphant du PHP | 343 Messages

23 oct. 2011, 20:52

Selon ton script, le insert into se fait à l'inscription. Comme je t'ai dit, avant de debugger ta page de confirmation, corrige déjà celle de l'inscription (c'est déjà plus logique).
Mais tu les sors d'où ces bouts de script? Tu les récupères comme ça sans réfléchir, sans les adapter?
Tu utilises un mysql_connect pour te connecter et tu passes un coup de PDO pour tes requêtes, il n'y a rien qui te choque là dedans?
Développeur web

Eléphanteau du PHP | 39 Messages

23 oct. 2011, 22:06

Désolé, je suis débutant en php
J'avais posé la question tout à l'heure , tu n'as pas du voir, donc le insert to se met bien dans la page de confirmation...

oui j'ai trouvé ce script sur le net, et comme je le comprend grace aux commentaires(pas complètement,c'est pourquoi je ne comprend pas pourquoi tu me parles de PDO, peut etre a cause de la fonction prepare qui ne marche que si on utilise pdo pour se connecter a la bdd ?)je le garde.

Eléphant du PHP | 343 Messages

24 oct. 2011, 01:14

A ce que je vois ton insert into:
mysql_query("INSERT INTO pdf_membre VALUES ('','$login', '$passwd', '$mail', '$confirm', '$ville')");
a lieu sur ta page d'inscription et c'est logique. Comment récupères-tu le pass sinon?
Voici la syntaxe d'un insert into:
INSERT INTO "nom de table" ("colonne 1", "colonne 2", ...)
VALUES ("valeur 1", "valeur 2", ...)
PDO: http://www.siteduzero.com/tutoriel-3-34 ... x-bdd.html

Le probleme est que ton code ne marche pas donc soit tu m'écoutes et t'essayes de comprendre ce que tu fais, soit tu continues à prendre des bouts de code un peu de partout et qui marcheront jamais ensemble si tu ne les adaptes pas un minimum ;)
Développeur web

Eléphanteau du PHP | 39 Messages

25 oct. 2011, 19:51

ok ca marche :) .
Je me posais la question,comment,en utilisant le insert to,le truk pouvait savoir dans quel champs il fallait mettre les valeurs,maintenant je comprend que c'est grace aux champs que j'ai oublié de précisé après le insert,merci.
a mon avis dans la page de confirmation il faudrait inserer les identifiants de l'utilisateur dans ma base, et verifier si elles ont bien été insérées et si oui alors le membre est inscrit c'est ca?