Problème Compte Actif

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème Compte Actif

Re: Problème Compte Actif

par xTG » 08 févr. 2011, 18:19

Il ne faut pas utiliser (que) une balise A alors.
Il faut renseigner une balise meta dans la balise head ou bien utiliser une redirection javascript.

JS :
echo "<script type=\"text/javascript\">document.location.href='erreur.html';</script>";
Mais je ne te suis pas bien... Si c'est une page d'erreur pourquoi ne pas l'afficher plutôt que de rediriger l'utilisateur vers cette page?
Un simple include() de cette page suffirait.

Re: Problème Compte Actif

par TRUNCKS » 08 févr. 2011, 18:14

Merci beaucoup !!

Une dernière question, après j'arrête lol.

Comment puis je faire pour que le href soit automatique ?

En gros pour qu'il aille directement à la page.

Merci

Re: Problème Compte Actif

par xTG » 08 févr. 2011, 12:23

// href HTML ?
echo "<a href=\"erreur.html\">erreur.html</a>";

Re: Problème Compte Actif

par TRUNCKS » 08 févr. 2011, 11:55

En fait j'ai essayé, j'ai fait une page erreur.html mais je n'arrive pas à mette un href dans mon echo :(

Re: Problème Compte Actif

par xTG » 08 févr. 2011, 11:51

die() au même titre que exit() stop le script.
On les utilise en cas d'erreur d'exécution et non comme information normale à envoyer à l'utilisateur. :/

Si tu veux afficher un message il faut que tu passes par echo et donc par une redirection navigateur et non serveur.
Donc du HTML.

Re: Problème Compte Actif

par TRUNCKS » 08 févr. 2011, 11:48

J'ai utilisé:

die ("Votre compte n'est pas activé");

C'est correct ?

Re: Problème Compte Actif

par TRUNCKS » 08 févr. 2011, 10:46

Merci infiniment pour tes conseils.

Je tente cela tout de suite.

Merci encore

Re: Problème Compte Actif

par xTG » 08 févr. 2011, 10:23

Tu ne dois rien envoyer au navigateur avant d'utiliser une fonction header().
Dans un cas d'un header("Location:...") cela ne sert de toute manière à rien car tu ne verras pas le message.
Donc pas de fonction echo, print, ect.

Si tu veux absolument un message et une redirection il faut que tu fasses ta redirection en HTML (ou javascript) avec un timeout, ou bien un lien.

Re: Problème Compte Actif

par TRUNCKS » 08 févr. 2011, 09:55

C'est bon, ça marche maintenant, j'ai juste une petite erreur:

Cannot modify header information - headers already sent by (output started at /www/login.php:37) in /www/login.php on line 71

Mais mon message: " le compte n'est pas activé s'affiche correctement.

Il y a conflit justement avec ce message et le header final qui envoie sur la page une fois loggé. ( $zone_membre)

J'ai lu que cela venait des flux, comment pourrais je le présenter pour que ça ne s'affiche pas ?

Code : Tout sélectionner

<?php require("conf.php"); /*-----------------------------------------------------------------*/ /* PROGRAMME PRINCIPAL */ /*-----------------------------------------------------------------*/ // CONNEXION A LA BASE DE DONNEE $conn = mysql_pconnect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);mysql_select_db($sql_bdd, $conn); // Récupération des variables necessaires à la vérification du champ 'actif' de la BDD $login = $_POST['pseudo_membre']; // Récupération de la valeur du champ actif pour le login $login $sql = "SELECT actif FROM membre WHERE pseudo = '$login' AND actif='1'"; $result = mysql_query($sql)or die(mysql_error()); $num_rows=mysql_num_rows($result); if( $num_rows == 1 ) $actif = 1; else $actif = 0; // Il ne nous reste plus qu'à tester la valeur du champ 'actif' pour // autoriser ou non le membre à se connecter if($actif == '1') // Si $actif est égal à 1, on autorise la connexion { //... // On autorise la connexion... //... } else // Sinon la connexion est refusé... { //... echo "Erreur ! Votre compte n'est pas activé...<br>"; //... } // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM $requete="select pseudo,passe from membre where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\""; $row2 = mysql_query($requete)or die(mysql_error()); // SI AUCUN ENREGISTREMENT NE CORRESPOND if(mysql_num_rows($row2)==0) { // REDIRECTION VERS LA PAGE ERREUR header("Location:$url_erreur"); } // SI LE LOGIN ET MOT DE PASSE SONT EXACTES 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); } // MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE $requete2="update membre set id=\"$id\" where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\""; $row3 = mysql_query($requete2)or die(mysql_error()); // REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE header("Location:$zone_membre?id=$id"); } ?>

Re: Problème Compte Actif

par xTG » 07 févr. 2011, 22:19

J'avais pas fait gaffe...
Changes le like en =
Sinon c'est normal qu'on trouve des résultats bizarres...
Et si tu avais mis cela pour cause de majuscules/minuscules regardes du côté de strtolower() et strtoupper().

Re: Problème Compte Actif

par TRUNCKS » 07 févr. 2011, 22:00

Merci pour ta réponse :)

Mallheureusement le pseudo encore inactif passe toujours.

J'ai bien vérifié dans la base, il est toujours à 0 dans le champ " actif ", il ne devrait pas encore pouvoir se logger.

Re: Problème Compte Actif

par xTG » 07 févr. 2011, 21:46

$sql = "SELECT actif FROM membre WHERE pseudo like '%$login%'";
$result = mysql_query($sql)or die(mysql_error()); 
$row= mysql_fetch_assoc($result);
$num_rows=mysql_num_rows($result); 

if($num_rows!=1)

{ 
     $actif = $row['actif'];  // $actif contiendra alors 0 ou 1
}
  else
 
{
    $actif = ''; // $actif contiendra alors 0 ou 1
} /**/
A remplacer par :
$sql = "SELECT actif FROM membre WHERE pseudo like '%$login%' AND actif=1";
$result = mysql_query($sql)or die(mysql_error()); 
$num_rows=mysql_num_rows($result); 
if( $num_rows == 1 )
  $actif = 1;
else
 $actif = 0;
;)

Problème Compte Actif

par TRUNCKS » 07 févr. 2011, 21:22

Bonjour,

J'ai réussi ( avec des cheveux en moins et beaucoup d'aide lol ) à réaliser une confirmation par mail d'inscription à un site quelconque.
J'ai un champ " actif " dans ma base à zero et qui passe à 1 quand le compte et actif et qui permet de se logger ensuite.

Mon problème est que même si le compte est inactif, mon fichier de log laisse passer l'utilisateur.
Je dois avoir pas mal d'erreurs là dedans:

Merci par avance:

Code : Tout sélectionner

<? require("conf.php"); /*-----------------------------------------------------------------*/ /* PROGRAMME PRINCIPAL */ /*-----------------------------------------------------------------*/ // CONNEXION A LA BASE DE DONNEE $conn = mysql_pconnect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);mysql_select_db($sql_bdd, $conn); // Récupération des variables necessaires à la vérification du champ 'actif' de la BDD $login = $_POST['pseudo_membre']; // Récupération de la valeur du champ actif pour le login $login $sql = "SELECT actif FROM membre WHERE pseudo like '%$login%'"; $result = mysql_query($sql)or die(mysql_error()); $row= mysql_fetch_assoc($result); $num_rows=mysql_num_rows($result); if($num_rows!=1) { $actif = $row['actif']; // $actif contiendra alors 0 ou 1 } else { $actif = ''; // $actif contiendra alors 0 ou 1 } /**/ // Il ne nous reste plus qu'à tester la valeur du champ 'actif' pour // autoriser ou non le membre à se connecter if($actif == '1') // Si $actif est égal à 1, on autorise la connexion { //... // On autorise la connexion... //... } else // Sinon la connexion est refusé... { //... header("Location:$url_erreur"); //... } // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM $requete="select pseudo,passe from membre where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\""; $row2 = mysql_query($requete)or die(mysql_error()); // SI AUCUN ENREGISTREMENT NE CORRESPOND if(mysql_num_rows($row2)==0) { // REDIRECTION VERS LA PAGE ERREUR header("Location:$url_erreur"); } // SI LE LOGIN ET MOT DE PASSE SONT EXACTES 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); } // MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE $requete2="update membre set id=\"$id\" where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\""; $row3 = mysql_query($requete2)or die(mysql_error()); // REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE header("Location:agenda.php?id=$id"); } ?>