Plusieurs login pour redirection différentes

Plusieurs login pour redirection différentes - PHP - Programmation

Marsh Posté le 11-05-2005 à 01:23:57    

Bonjour à tous,
 
J'essaye de faire en sorte que dans mon formulaire, chaque login redirige l'utilisateur vers une page propre à ce login, à la connexion.
Voici le code que j'utilise:

Code :
  1. if ($utilisateur) {
  2.     session_register("authentif" );
  3.  $_SESSION['login'] = $row_verif['login'];
  4.   if ($login='test1' || $pass='test1')
  5.   {
  6.   header("Location:test1.php" );
  7.   }
  8.   else if ($login='test2' || $pass='test2')
  9.   {
  10.   header("Location:test2.php" );
  11.   }
  12.   else if($login='test3' || $pass='test3')
  13.   {
  14.   header("Location:test3.php" );
  15.   }
  16.  }
  17. else {
  18.  header("Location:index.php?page=log" );
  19.           }


 
quoi que je mette comme login/mdp, ça me redirige toujours vers test1.php. Dois utiliser un switch()? si oui comment?
 
Autre question, pour faire un bouton de déconnexion une fois sur la page voulue, est ce qu'un input nommé "destroy" est suffisant et si oui, que dois je mettre dans "action"?

Code :
  1. <form action='' method='post'>
  2. <input type='submit' VALUE='Se deconnecter' NAME='DESTROY'>
  3. </form>


 
Merci beaucoup d'avance!

Reply

Marsh Posté le 11-05-2005 à 01:23:57   

Reply

Marsh Posté le 11-05-2005 à 02:05:45    

1. Forcément, il n'y a pas de tests dans ta condition, juste 2 affectations (répète après moi : = est une affectation == une comparaison simple === une comparaison sur les valeurs et les types). De plus, mettre chaque condition entre parenthèses toujours utile :)
 
Bref :

Code :
  1. if (($login == 'machin') && ($login == 'truc')){...


 
(en passant, pourquoi un ou dans cette condition, c'est pas un et logiquement ?)
 
2. Oui, mais je mettrais un input hidden avec le sid en plus, histoire d'être sûr que le gars n'atterit pas sur la page de déconnection par accident. Et pour l'action, ben, la page qui va déconnecter :)

Reply

Marsh Posté le 11-05-2005 à 02:27:13    

touik's a écrit :


J'essaye de faire en sorte que dans mon formulaire, chaque login redirige l'utilisateur vers une page propre à ce login, à la connexion.
Voici le code que j'utilise:


 
En plus des corrections apportées ci-dessus (oui c'est un && et non un || qu'il faut utiliser), j'ajoute que ce code pue la mort : en effet, si tu as 50 users, tu ne vas pas t'amuser à faire 50 if imbriqués (l'horreur).
 
=> Utilise donc un tableau ou mieux, utilise ta table user (login, pass) pour ajouter un champ contenant la page d'arrivée, tu n'auras plus qu'une requete SELECT pagelogin FROM user WHERE login='$login' AND pass='$pass'

Reply

Marsh Posté le 11-05-2005 à 07:28:23    

Array() +1  
DB -1
 
Si c'est pour stoquer 3 login de ses potes il va pas mettre une base de donnée ... ça rajoutera des failles et vu son niveau vaut mieux rester simple


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 11-05-2005 à 15:19:55    

Merci Naceroth, j'avais occulté ces histoires de égal, et j'ai confondu le || et le && ...
ça marche impec maintenant!
 

esox_ch a écrit :

Array() +1  
DB -1
 
Si c'est pour stoquer 3 login de ses potes il va pas mettre une base de donnée ... ça rajoutera des failles et vu son niveau vaut mieux rester simple


 
ben non justement, ya que 3 login et c'est pas pour mes potes, mais pour la municipalité de mon lieu de résidence, pour qu'ils se connectent à leur page de mise à jour  :sarcastic:  
 

Friday Monday a écrit :

En plus des corrections apportées ci-dessus (oui c'est un && et non un || qu'il faut utiliser), j'ajoute que ce code pue la mort : en effet, si tu as 50 users, tu ne vas pas t'amuser à faire 50 if imbriqués (l'horreur).


 
Bien sûr que je me serais pas amusée à faire ça si j'avais pas eu que 3 utilisateurs, puis vu mon niveau, moi je le trouve très bien  :p  

Reply

Marsh Posté le 11-05-2005 à 15:34:27    

touik's a écrit :

Merci Naceroth, j'avais occulté ces histoires de égal, et j'ai confondu le || et le && ...
ça marche impec maintenant!
 
 
 
ben non justement, ya que 3 login et c'est pas pour mes potes, mais pour la municipalité de mon lieu de résidence, pour qu'ils se connectent à leur page de mise à jour  :sarcastic:  
 
 
 
Bien sûr que je me serais pas amusée à faire ça si j'avais pas eu que 3 utilisateurs, puis vu mon niveau, moi je le trouve très bien  :p


 
 
 :heink:  
 

Reply

Marsh Posté le 11-05-2005 à 15:34:46    

Y'en a qui ont du mal à s'exprimer

Reply

Marsh Posté le 11-05-2005 à 15:38:17    

cesarr89 a écrit :

Y'en a qui ont du mal à s'exprimer


Pourquoi? c'est clair ce que j'ai mis ...  :??:

Reply

Marsh Posté le 11-05-2005 à 15:39:22    

Pas pour moi...peut être alors j'ai du mal à comprendre

Reply

Marsh Posté le 13-05-2005 à 17:56:48    

Et j'hallucine. Ya personne qui propose les "switch case"pour un cas pareil???

Reply

Marsh Posté le 13-05-2005 à 17:56:48   

Reply

Marsh Posté le 13-05-2005 à 17:59:19    

h4cker a écrit :

Et j'hallucine. Ya personne qui propose les "switch case"pour un cas pareil???


 
 
Pour 3 trucs ca marche aussi bien que avec les if, else if...

Reply

Marsh Posté le 13-05-2005 à 18:00:28    

h4cker a écrit :

Et j'hallucine. Ya personne qui propose les "switch case"pour un cas pareil???


 
Non et heureusement d'ailleurs


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-05-2005 à 18:01:13    

esox_ch a écrit :

Non et heureusement d'ailleurs


 
Pourquoi?
 

Reply

Marsh Posté le 13-05-2005 à 18:09:18    

Pask c'est stupide, avec un array on peut faire 10x plus leger et plus dynamique


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-05-2005 à 18:10:04    

Ah ok, je pensais que c'était pour autre chose.

Reply

Marsh Posté le 13-05-2005 à 18:18:49    

eh s'il vous plait les grands, vous pouvez me montrer un exemple avec un array?  :)  
je sais comment ça marche mais j'aimerai beneficier d'un exemple, avec votre aimable concourt, histoire de voir comment ça se presente et comment c'est structuré. J'entend beaucoup parler de l'alternative "array()" par rapports aux db, ça me permettrai de me faire une idée...
 
merci. :hello:

Reply

Marsh Posté le 14-05-2005 à 07:48:56    

$meslogins = array('login1'=>'mdp1',...);
 
Ou (plus "sale" a mon avi, mais plus facile a mettre a jour) tu peux faire ça avec $meslogins[] = valeurs ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 14-05-2005 à 10:25:40    

oui oui, ça je sais chef, mais comment fais-t-on pour COMPARER ce que l'utilisateur a entré dans les champs de saisis pour s'identifier (login + pass) et les données dans l'array?
 
array_key_exists  ??
 
je vois pas comment proceder.
 
ou peut-être:

Code :
  1. foreach($meslogins as $clef=>$valeur){
  2. if($_POST['login']==$clef && $_POST['pass']==$valeur){
  3. echo "vous êtes connecté";
  4. // etc...
  5. }


 
merci de m'aider.


Message édité par pmusa le 14-05-2005 à 10:29:01
Reply

Marsh Posté le 14-05-2005 à 10:27:22    

Perso je ferais un in_array() avec le login comme clef et le mdp comme valeur


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 14-05-2005 à 10:33:18    

if (in_array($_POST['login'], $_POST['pass'])){
echo "vous etes identifié.";}
 
ça marche ça?
 :??:  :??:
 
edit:
euh... nan. quel con. si je precise pas dans quel array chercher ça marchera pas hein?  :D  
 
help.


Message édité par pmusa le 14-05-2005 à 10:34:21
Reply

Marsh Posté le 14-05-2005 à 10:37:14    

....
 
Tu dois lui dire de regarder si le login existe dans l'array, et apres regarder si le mdp y est associer ... reflechi un peu c'est pas si complex


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 14-05-2005 à 10:58:04    

:o  
 

Code :
  1. <?php
  2.   $membres = array("login1"=>"mdp1", "login2"=>"mdp2", "login3"=>"mdp3" );
  3.   if (in_array("$_POST['pass']", $membres)) {
  4.    echo "pass ok";
  5. if(array_key_exists("$_POST['login']", $membres)){
  6. echo "login ok";
  7.   }
  8. }
  9. ?>


 
je sais que ce code est relativement... mauvais.  :whistle:  
 
pliz help.  :)
 
edit:
mauvais, car il n'y a pas la notion d'ASSOCIATION. :/


Message édité par pmusa le 14-05-2005 à 10:59:39
Reply

Marsh Posté le 14-05-2005 à 14:36:47    

:bounce:

Reply

Marsh Posté le 14-05-2005 à 14:51:26    

Reply

Marsh Posté le 15-05-2005 à 10:50:35    

pti up en douce.  :whistle:

Reply

Marsh Posté le 15-05-2005 à 10:53:57    

C'est stupide ton truc ... La tu controles que le mdp X existe et que l'utilisateur Y existe.
 
Admettons :
 
Login : Jean , Mdp : Claude
Login : Paul, Mdp : Jaques
 
Je me log :  
 
login : Jean  , mdp : Jaques.
Ton systeme va me laisser passer....
 
Ce que tu dois faire est de controler qu'un login existe, puis regarder quel est le mdp qui s'y ratache (a la limite fait un array_flip)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-05-2005 à 14:07:48    

pitié j'y arriverai jamais.  :D  
 
fais pas le salaud esox, balance le! balance le, le code!...  balance leeeeeeeee!

Reply

Marsh Posté le 15-05-2005 à 14:30:58    

Si t'as pas les connaissances/la volonté de coder un truc du genre qui tiens sur 5 lignes je crois qu'il vaut mieux que t'en reste la avec le php, parceque si t'arrive pas a mettre 2 briques l'une sur l'autre, je te vois mal devoir construire un immeuble de 50 etages :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-05-2005 à 14:57:40    

bah j'ai tenté 2-3 trucs comme tu peux le voir.  :D  
array_flip() je veux bien mais keskonanariennafoutre?  :??: il interverti clé et valeur ok, et bah?  :whistle:  
 
allez siouplé chré sage.  :)

Reply

Marsh Posté le 15-05-2005 à 15:24:41    

Alors soit sage et reflechi


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-05-2005 à 15:31:57    

esox_ch a écrit :

Alors soit sage et reflechi


 
J'avoue que sur le coup, je serais curieux de savoir aussi ce que ça vient foutre là :D
 
Pmusa : c'est même plus un problème de php là, c'est une question de logique, ton premier test est bon, le deuxième doit vérifier que le mdp associé au login (dont tu viens de vérifier l'existence) est bien le bon. Question à 5 cents : comment accède-t'on à la valeur d'un tableau dont on connait l'indice ? :)

Reply

Marsh Posté le 15-05-2005 à 15:32:59    

http://www.designlaboratory.net/smileyyyy/areu.gif

Reply

Marsh Posté le 15-05-2005 à 15:40:54    

naceroth a écrit :

J'avoue que sur le coup, je serais curieux de savoir aussi ce que ça vient foutre là :D
 
Pmusa : c'est même plus un problème de php là, c'est une question de logique, ton premier test est bon, le deuxième doit vérifier que le mdp associé au login (dont tu viens de vérifier l'existence) est bien le bon. Question à 5 cents : comment accède-t'on à la valeur d'un tableau dont on connait l'indice ? :)


 
Zut, apres reflection je me rend compte que je cherchais midi a 14h  :pt1cable:  
 
Autant pour moi , un petit controle si un key existe (le login) et apres on recupere le mdp correspondant.
 
Merci naceroth  :bounce:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-05-2005 à 16:27:43    

bande de sadiques. http://www.designlaboratory.net/smileyyyy/areu.gif
 
j'ai trouveÿÿÿÿ: array_search().
 :sol:  
 
esox_ch pas copain.  :o
 
edit:
 
en gros:
 

Code :
  1. if($_POST['login'] == array_search("$_POST['pass']", $membres))


 
 [:aras qui rit]


Message édité par pmusa le 15-05-2005 à 16:35:28
Reply

Marsh Posté le 15-05-2005 à 16:40:34    

Et maintenant tu dis quoi si 2 personnes choisissent le meme mot de passe ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-05-2005 à 16:46:35    

ben je te repond que ce problème n'a pas lieu de se poser avec array_search.  [:airforceone]  
 
array_search retourne la clé relative a une valeur. donc ma structure de contrôle va bien.
 
 
et si j'ai faux, je te repondrai que maintenant... esox t'arrête de me faire chier!  :D

Reply

Marsh Posté le 15-05-2005 à 16:53:50    

lol ;) . Perso voila ce que j'aurais fait (a part que je traite les input pour des questions de secu avant de faire joujou avec):
 

Code :
  1. $tab = array('login1'=>'mdp1','login2'=>'mdp2');
  2. if(array_key_exists($tab[$_POST['monlogin']]) AND ($tab[$_POST['monlogin']] == $_POST['monpassword']))
  3. {
  4.   echo 'Vous etes loggé';
  5. }
  6. else
  7. {
  8. die('Espece de méchant, je ne me laisserai pas feinter comme ça!');
  9. }


 
Et pour ton script, voila ce que ça peut donner :
 
Login : hal , mdp : fred
login : micro , mdp : fred
 
Maintenant, Je me log avec login micro et mdp fred :
 
array_search retournera la 1ere valeur retrouvée : hal  
hal != micro =>> J'entre pas meme avec le bon mdp.
 
Avec ta methode tu dois faire un array_find + un in_array ... Ce qui te fais 2 fonctions a utiliser au lieu qu'une pour moi  :sol:  
 
Edit : Loupé une parentese a la redaction ... + Oublié de te remonter les bretelles :p


Message édité par esox_ch le 15-05-2005 à 16:58:47

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-05-2005 à 17:11:19    

[:aloy]  
 
yesssss j'ai reussi à lui faire pondre le code.  :D
 
ouais j'ai compris où tu voulais en venir. merci chef.  :jap:  
 
finalement c'est bien complet les array.

Reply

Marsh Posté le 15-05-2005 à 17:15:42    

Il t'a juste fallu 20 posts et 3 personnes ... t'es un rapide :p ... si tu passais plus de temps a lire la doc et moins de temps a supplier, c'est toi qui nous expliquerais le php :p


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-05-2005 à 17:31:03    

j'ai cherché.  :non: C'est juste que les array je connaissais pas du tout de chez pas du tout et que je debute. j'ai pas besoin de ce code, c'était pas curiosité: ça me permettra de progresser.
 
ça m'a toujours fait peur les array et les boucles... surtout les array. http://www.designlaboratory.net/smileyyyy/areu.gif
 
en tout cas merci pour ta collaboration, ton soutien, tes demarches pour me venir en aide, ton concourt, l'interêt que tu as temoigné, et tes invitations aux modules de recherche sur php.net et/ou google.  :o  
 
 :D  
 
en tout cas...
 
 
http://www.designlaboratory.net/smileyyyy/thx.jpg

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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