identification pour un site

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 : identification pour un site

Merci

par fowndi » 11 avr. 2008, 10:18

Merci, pour l'infos et je précise pour ceux ki suivent ce sujet que Session_start doit se trouver dans le header donc avant envois de l'entete. Merci encore et ke DIEU bénisse le PHP lol.

par Ryle » 10 avr. 2008, 18:10

Il te faut également faire appel à session_start() dans ta page "indexa.php" pour pouvoir accéder à la variable $_SESSION ;)
session_start();
echo $_SESSION['ide'];

oki merci

par Invité » 10 avr. 2008, 17:25

J'ai éffectuer les modifs et j'ai pu faire mes redirections comme prévus, merci encore, mais le probleme auquel je suis confronter est ke j'ouvre une Session avec l'identifiant de mon utilisateur ce ki me permettrait de le suivre tout au long de mes pages.
et cela est fais comme ceci
if ($ligne = mysql_fetch_row($result)) {
        $ide=$ligne[0];
		$droit=$ligne[6];
		session_start();
//initialisation de la session
		$_SESSION['ide']=$ide;
		if ($droit=="admin"){
//verification des droits
		    header("location:indexa.php?action=admin");
j'ai seulement copier la partie ki nous intéresse , ensuite je désire recuperer les infos sur la page indexa.php, mais lorsque je tente d'écrire la session j'ai un retour undefined variable:
echo $_SESSION['ide'];

par guilt92 » 10 avr. 2008, 13:39

Une fois que tu sais que ton utilisateur a une entrée dans la base tu peux refaire une (ou plusieures) conditions sur la redirection :
if ($ligne = mysql_fetch_row($result)) { // s'il y a un résultat, on l'affecte dans $ligne 
          if($ligne[index] == "valeur à comparer")
                {
                 //ce que tu veux faire dans ce cas
                }
          else
                {
                 //ce que tu veux faire sinon
                }
          $ide=$ligne[0];  
          echo $ide;  
} 
Ceci dit prend en compte le message de Ryle et oriente toi peut être vers le mysql_fetch_assoc() qui te permettra d'utiliser $result["nom_de_la_colonne_sql"] à la place de l'index et qui sera plus facile à maintenir et a lire

oki merci

par fowndi » 10 avr. 2008, 12:48

merci, pour les tuyeaux,
je voudrais savoir si il est possible d'imbriquer des if, car il ya deux types d'abonnés sur mon site, certain dispose de certains privileges ke d'autres n'ont pas. donc je voudrais mettre une autre conditions if à l'intérieur pour rediriger en foction des privileges, je tente maintenant mais dites moi si sè possible pour ne pas ke j'y perde trop de temps.

par Ryle » 10 avr. 2008, 12:30

Le problème est qu'à chaque fois que tu fais appel à mysql_fetch_row() tu vas lire le prochain enregistrement retourné par ta requête. Lorsque tu fais "if (!mysql_fetch_row($result)) " tu vas donc lire le premier résultat retourné (celui qui t'interesse) et lorsque tu fais "while ($ligne= mysql_fetch_row($result))" tu passes au second. Sauf qu'il n'y qu'un seul enregistrement, que tu as déjà passé à cause du if.

Tu peux donc soit suivre la proposition de guilt92, mais il n'y a amha pas vraiment d'intérêt à utiliser le mysql_num_rows() dans la mesure ou ton couple login/pass est (théoriquement) unique. Il n'est du coup pas nécessaire non plus de mettre un while :
if ($ligne = mysql_fetch_row($result)) { // s'il y a un résultat, on l'affecte dans $ligne
          $ide=$ligne[0]; 
          echo $ide; 
}
else { // au cas ou les identifiants ne sont pas correcte redirection vers cette page index.php 
         header ("Location:index.php?action=afficher&view=error");  // Location prend un "L" majuscule
         exit(); // pas obligatoire mais cela évite que php ne continue inutilement l'exécution du code alors qu'une redirection est demandée
}


Par ailleurs, évite le SELECT * si tu n'as besoin que d'un champ. Nomme le (ou les s'il t'en faut 2, 3, ... N) explicitement afin d'être sur de l'ordre dans lequel tu vas les retrouver, sinon la valeur de $ligne[0] peut être celle d'une autre colonne si la structure de la table change. Je te recommande d'ailleurs d'utiliser mysql_fetch_assoc() et de spécifier en toutes lettres le nom du champ concerné :
$requete = "SELECT champ_ide FROM .... "; 
...
if ($ligne = mysql_fetch_assoc($result)) { // s'il y a un résultat, on l'affecte dans $ligne
          $ide=$ligne['champ_ide']; // ainsi pas de doute sur le contenu de ta variable
          echo $ide; 
}
A lire : http://www.phpfrance.com/forums/voir_sujet-28093.php :)

merci mais

par fowndi » 10 avr. 2008, 12:24

Merci mais il est tout à fais difficile pour moi de voir ce dont vous parlez, sachez ke j'ai éffectuer tout les tests et ke sè seulement la partie ou il ya le while ki ne fonctionne pas.

par guilt92 » 10 avr. 2008, 12:03

Bonjour,

Dans le desordre :

As tu testé les valeurs de tes $_POST ?
As tu afficher ta requête ?
Tu pourrais aussi ajouter un or die() après le mysql_query pour éviter les problèmes avec les requetes...

Ensuite le probleme c'est que tu fais un mysql_fetch_row() dans les deux cas donc ton indice se décale entre le if(!...) et le while()... Ainsi si tu n'as qu'un seul résultat tu auras une erreur.

Utilise plutot la fonction mysql_num_rows() qui va te renvoyer le nombre de résultat trouvé.
Tu peux tester sur cette valeur : si elle est égale à 1 alors c'est bon, sinon il y a un problème.

identification pour un site

par fowndi » 10 avr. 2008, 11:43

Je désire faire une identification pour mon site, via un formulaire l'abonné du site peus entrer ses identifiants (pseudo et mot de passe) si il est reconnu dans ma base de données il est redirigés sur une page précise, dans le cas contraire il reviens sur la page d'identification avec un méssage.
je vous donne le code de ma page cheque ki recupere les infos de mon formulaire et ki est charger de faire la redirection selon les attributions.
//recupération des variables du formulaire de soumission 
$login=$_POST['login'];
$pwd=$_POST['password'];

//connexion à la base de donnée avec mes parametres contenu dans la page db ceci marche
include "../admin/db.php";
      $connexion = mysql_connect($adresse,$id,$pass)or die ('Error of connexion');
	  mysql_select_db($db)or die ('Selection de la base impossible');
//vérification des identifiants entrer par le user
   $requete = "SELECT * FROM user WHERE Us_pseudo=\"$login\" and Us_pwd=\"$pwd\"";
   $result=mysql_query($requete);
// recupération des resultats,  
   if (!mysql_fetch_row($result)) {
// au cas ou les identifiants ne sont pas correcte redirection vers cette page index.php
         header ("location:index.php?action=afficher&view=error");
   }
   else {
//sè ici ke les choses ce gate, au cas ou les données sont dans ma base je n'arrive pas à recuperer 
//les données contenu dans ma base
          while ($ligne= mysql_fetch_row($result)){
          $ide=$ligne[0];
		  echo $ide;
		  }				 
		 }     
mysql_close();
[/code]