Vous n'êtes pas identifié(e).
ok !
mais alors testé sur quel navigateur ?
Hors ligne
Un truc qui m'échappe c'est la logique de ça
if((strtolower(trim($l)) == strtolower($login))
&& (strtolower(trim($p)) == strtolower($pass))
&& ($tmp == false)){
echo "bienvenue";
$tmp=true;
$_SESSION['isPassValid'] = true; // initialisation de la variable de session
}Pourquoi y tester ($tmp == false) ???
Dans le cas de doublons dans le fichier texte.
Même s'il n'est pas censé y en avoir. Je préfère coder proprement pour ma part et tout prévoir. ^^
Hors ligne
ok !
mais alors testé sur quel navigateur ?
Quelle importance, le navigateur, en l'occurrence ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Dans le cas de doublons dans le fichier texte.
Même s'il n'est pas censé y en avoir. Je préfère coder proprement pour ma part et tout prévoir. ^^
Et en quoi ce code détecte-t'il un doublon ?
La logique est plutôt absconse.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je n'ai jamais dit qu'il en détectait...
J'ai dis "en cas de doublon", cela stipule qu'on ne fait rien quand on tombera sur un doublon. ^^'
Car si jamais un doublon se trouve dans le fichier on aurait deux fois l'affichage sans mon ajout.
C'est de la logique par abstraction.
Hors ligne
l'importance du navigateur c'est qu'en l'occurence cela ne marche pas chez moi !!!
merci quand même:)
Hors ligne
Le navigateur n'a aucune importance en fait tanja pour ton problème.
Car le PHP est géré par le serveur Apache. Ce n'est pas un code qui s'exécute sur le navigateur comme le html.
Sinon je serai curieux de savoir si quand tu dis que seul la première ligne s'affiche tu parles du fait qu'on voit deux autres avec "=> et" (donc sans valeurs) ou bien si on ne les voient pas du tout.
Si c'est le second cas je ne vois franchement pas ce qui pourrait faire sortir de la boucle, il n'y a pas de break ou autre.
Es-tu sûr que le script s'exécute jusqu'au bout ? Un echo après l'appel de la fonction s'affiche-t-il ?
Niveau affiche d'erreur, qu'en est-il de la configuration de ton php.ini ? (error_reporting)
Hors ligne
Bonjour,
c'est bien la 2nde solution malheureusement : il n'y a rien juste le 1er couple inscrit. En revanche je pense que le script s'éxécute jusqu'au bout puisqu'il m'affiche le message d'erreur "mot de passe et/ou login incorrects".
pour les messages d'erreurs : j'en ai un qui s'affiche sur toutes les pages et qui concerne le session start()
pour le error reporting voilà ma configuration : ; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
Merci
Hors ligne
Dans le php.ini les ; indiquent un commentaire, c'est donc la ligne error_reporting = .... qui est intéressante. ^_-
Mais si tu as une erreur d'affichée concernant le session_start() (sans doute appelé deux fois, ou bien il ne se trouve pas en première instruction de la page) tes erreurs sont bien activées.
Je n'ai malheureusement pas d'idées quant à ton problème... Essayes de le tester en dehors de tout script (car je suppose que tu testes via ton site qui contient déjà autre chose) comme l'a fait Kris.
Hors ligne
Yop,
Pour le test ($tmp == false), plusieurs remarque d'optimisation :
Le mettre en debut de test if, en effet, cela permet d'éviter deux tests si $tmp = true (vu qu'il y a un &&, il ne cherche pas plus loin, normalement)
Voir optimiser un peu plus, quand on passe $tmp = true, faire un break qui va sortir de la bouche foreach, puisqu'on a plus besoin de la parcourir (vu que c'est une fonction, un return true ferait aussi bien l'affaire en fait).
Par contre le bug du nombre de lignes est assez mystique sur ce coup là faut avouer.
@+
la v2, c'est tabou, on en viendra tous a bout
Hors ligne
Tu veux dire si tmp est false, j'imagine, ou alors tu confonds le ET avec le OU logique.
Il n'en demeure pas moins que, si l'on sort de la boucle dès que l'on a trouvé dans le fichier un couple login mot de passe équivalent au couple saisi, je ne vois pas l'intérêt de compliquer en testant $tmp.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
ça y'est j'ai réussi : ça marche !!!!! merci à tous
en revanche une petite question subsiste : comment faire pour que le echo"bienvenue...." s'affiche sur la même page que le formulaire et non sur une nouvelle page ?
merci,merci
Hors ligne
Quel intérêt de rester sur le formulaire d'identification ?
Techniquement tu peux faire le contrôle en PHP via AJAX, par exemple, mais si Javascript est désactivé dans le navigateur ...
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
mon souci est que le visiteur, une fois authentifié ou non, doit alors retourner sur la page index pour continuer sa visite du site.
Enfin c'est pas grave je ne vais pas me lancer dans ajax j'ai déjà du mal avec PHP !
merci
Hors ligne
Pas forcement !! Il te suffit de stocker la dernière page sur lequel il était avant d'avoir à se connecter pour faire le lien vers cette page après l'identification... --> utilise les sessions et nul besoin de passer à ajax
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
ouhhhh les sessions qui à première vue semblent simple mais se révèlent difficile à l'application !
la solution est toutefois intéressante je vais essayer de plancher dessus, reste à ce sujet une petite question (après j'arrête !) : j'essaye justement d'intialiser une session[isPassValid'] à true une fois le visiteur authentifié.
Je passe sur le fait que cette session ne fonctionne pas ; ce que je ne comprends pas c'est que le navigateur me dit à chaque page :
Notice: A session had already been started - ignoring session_start() in C:\wamp\www\examen_juin_2006\addMatch.php on line 3
Pourtant il faut bien que je démarre le session_start() sur toutes les pages pour que la variable de session puisse être transmise, non ?
Ah ces débutants.....
Hors ligne
Information : Une session a déjà été démarrée - on ignore la commande session_start() dans le fichier C:\........ à la ligne 3
^_-
Le fait est que tu dois imbriquer des pages les unes dans les autres et que tu mets un session_start() dans tous tes fichiers.
@Kris : un OR ? Pourquoi donc, je ne comprend vraiment pas. La variable $tmp n'a besoin d'être visionné que si on détecte un identifiant correct.
Donc mon raisonnement est :
Si id ok && tmp jamais modifié
On se log
Si id ok && tmp modifié
On a déjà été logué
Si id pas ok && ????
Bah on s'en fiche...
Cependant il est vrai que mettre le test du $tmp en début est mieux optimisé. Je ne l'avais pas fait car je ne savais pas que le && PHP correspondait à celui que j'avais appris en Java.
Je me coucherai moins bête ce soir. ^^
Hors ligne
Bonjour,
je crois qu'avant toute chose, il faudra que tu fasses le ménage dans ta session car :
1. "se révèlent difficile à l'application" : faux, c'est très simple, et surtout invisible !
2. "j'essaye d'initialiser une session[isPassValid" : tu ne peux pas essayer ! Si tu l'as défini, alors elle adopte la valeur.
Et non, ton session_start() doit être là où tu en as besoin donc :
- vérifie qu'il n'y en est pas un avant !
- au pire, mets le dans une conditionnelle (si elle existe pas.. alors on la déclare)
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne