Vérif avec fichier .ini

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 : Vérif avec fichier .ini

par rudyskate » 16 mars 2009, 19:05

J'ai trouvé un moyen qui fonctionne !!!!! Enfin je vais vous envoyer le code pour que vous me dites ce que vous en pensez ^^
<?php
$login=parse_ini_file("fichconfig.ini",true);

foreach($login as $cle=>$val)
{
	$ok=0;
	if(($_POST['logmail'] == $val['MAIL'])&&($_POST['logpassword'] == $val['PASS'])) {
			$ok=1;
			header("location:index.php");
		}
	if ($ok==0) {
	header("location:login.php");
	}
}
?>
voila avec ce code j'arrive à loger mes 2 utilisateurs en testant si il rentre un mauvais mot de passe ou une mauvaise adresse aussi.
Fiou sa vaut le coup de chercher (même si c'est pas grand chose, je débute quoi ^^)

par furiouslol » 16 mars 2009, 14:06

re

En fait je t'ai dit de mettre le deuxième param de parse_ini_file a true car je pensais que tu aurais plusieurs bloc possibles dans ton ini.

Je me rend compte que FALSE serait plus adéquat pour toi, en plus c'est censé ne ramener qu'un tableau a une dimension, ça ne tiens pas compte des données entre crochet dans ton ini si j'en crois la doc ... Ceci dit les deux doivent marcher.

par Ryle » 16 mars 2009, 12:09

C'est en effet à tableau à 2 dimensions. Tu peux donc soit accéder à ces informations en spécifiant les index qui vont bien :
echo $login['[email protected]']['MAIL'];
Soit, comme j'imagine que tu ne connais pas la donnée '[email protected]' puisque tu veux la récupérer, extraire de ton tableau le sous tableau dont tu as besoin. Par exemple :
$user = array_shift($login);
echo $user['MAIL'];
A noter toutefois qu'un array_shift ou _pop va retirer l'élément du tableau initial. Ce n'est donc peut être pas la meilleure solution. Tu peux dès lors aussi faire un foreach pour parcourir la première dimension du tableau, même s'il n'y a qu'une itération
foreach ($login as $cle => $user) {
  echo $user['MAIL'];
}

par rudyskate » 16 mars 2009, 10:32

voici le résultat :
Array ( [[email protected]] => Array ( [NOM] => Dupont [PRENOM] => Jean [MAIL] => [email protected] [MPD] => azerty [LANGAGE] => PHP-JAVA-HTML-C [PRESENT] => oui ) )

VOila...
C'est un tableau de tableau en fait.
Donc ce que je voudrais recup' c'est la case [MAIL] et [MDP]
Mercii

par furiouslol » 15 mars 2009, 22:39

Salut

Essaye de mettre le deuxième paramètre de parse_ini_file a TRUE et fait un
print_r($login);
derrière et donne nous le résultat

par rudyskate » 15 mars 2009, 14:02

Toujours personne n'a trouvé de réponse?
J'ai testé directement en mettant la valeur a tester et cela fonctionne mais ce que je n'arrive pas a faire c'est recupérer "[email protected]" dans mon fichier .ini

[[email protected]]
NOM=DUPONT
PRENOM=Jean
MAIL=[email protected]
MDP=azerty
[[email protected]]
NOM=....
PRENOM= ....
MAIL=....
MDP=....

Je voudrais recupérer ce qu'il y a apres 'MAIL=' afin de pouvoir tester la valeur de mon champ de formulaire avec cette section si elle sont egales...
:oops: :oops:

par rudyskate » 13 mars 2009, 18:57

Avec if ($login['MAIL'] == $_POST['logmail'])
Sa ne marche pas....
En fait sa ne rentre pas dans les conditions sa passe direct au else et quand j'essai d'afficher le contenu de ma variable $login['MAIL'] elle renvoie NULL donc rien dedans...
Je n'arrive pas a recupérer la partie de mon fichier ini.

Voila , quelqu'un a déja eut ce problème ?
Merci pour ceux qui m'aide et qui m'aideront!!!! :wink:

par stopher » 13 mars 2009, 14:17

Re ,

Je note , qu'au début tu utilisais :

Code : Tout sélectionner

if(($login['mail'])= ...
Alors que dans ton fichier .ini :
MAIL est en majuscule ...

Les tableau associatifs sont par defaut , en tout cas , sur mon poste sensible à la casse ..

par rudyskate » 13 mars 2009, 11:57

Cela ne fonction toujours pas....
Je ne rentre pas dans ma condition d'égalité...

Code : Tout sélectionner

[[email protected]] NOM=Dupont PRENOM=Jean [email protected] MPD=azerty
==> ceci est la disposition de mon fichier .ini <==

Code : Tout sélectionner

<td> <b>MAIL:</b> </td> <td> <input type="texte" name="logmail"/> </td> <td> <b>Mot de passe:</b> </td> <td> <input type="password" name="logpassword"/> </td>
==> Ceci est le nom de mes champs dans mon formulaire <==


<?php
$login=parse_ini_file("fichconfig.ini",false);

if(($login[?????])==($_POST['logmail']))
{
	if (($login[?????])==($_POST['logpassword']))
	{
		header("location:login.php");
	}		
}
else 
{
header("location:index.php");	
}	
?>
Les points d'interrogation sont là parce que je ne sais pas quoi mettre...

==> VOici ma page php pour rediriger l'internaute vers l'index si c'est OK (il se trouve dans le fichier .ini) ou vers la page de login (si il c'est trompé ou n'est pas inscrit) <==

Voila j'ai mis tout ce que j'avais d'important...
Sa m'embete un peu de ne pas trouver mon erreur ou mes erreurs....

Thanks ^^

par stopher » 13 mars 2009, 09:06

Salut , je pense que tu as un souci avec ta fonction parse_ini_file.

En effet dans ton code , le deuxième argument est $_POST.

Or , si ta variable $_POST est dfferent de NULL elle sera interprété comme TRUE dans ta fonction parse_ini_file.

Donc si tu veux lire la propriété "mail" tu vas devoir aussi spécifier la catégorie supérieur ['[email protected]']

Car le tableau retourné est alors associatif .

Par contre , si ta variable $_POST est vide , elle sera interprété comme false .. et là ca fonctionne .

Plus facile à faire qu'à expliquer , voici le code pour illustrer ce que je viens de dire :-)


$T_ini	=	parse_ini_file("toto.ini",false);

var_dump($T_ini['mail']);

//retourne : string(17) "[email protected]" 

echo '<br>';


$T_ini	=	parse_ini_file("toto.ini",true);

var_dump($T_ini['[email protected]']['mail']);

//retourne : string(17) "[email protected]" 


echo '<br>';


$post="ma variable post";

$T_ini	=	parse_ini_file("toto.ini",$post);

var_dump($T_ini['mail']);

//retourne : NULL" 


echo '<br>';


$post="ma variable post";

$T_ini	=	parse_ini_file("toto.ini",$post);

var_dump($T_ini['[email protected]']['mail']);

//retourne : string(17) "[email protected]"

Bon continuation ,

Ch.

par rudyskate » 12 mars 2009, 22:52

Et c'est pas un peu bizarre cette écriture

Code : Tout sélectionner

<FORM method="POST" action=\'recuplogin.php\'>
SI c'est pour les anti-slash que c'est bizarre c'est parce que ma page est en PHP j'ai donc un echo'................'; et donc pour supprimer la fin de l'echo j'utilise l'antislash.


ps :
même avec true comme second paramètre celui-ci ne resoud pas le parcour de ma condition :

Code : Tout sélectionner

if(($login['mail'])==($_POST['logmail'])) { if (($login['password'])==($_POST['logpassword'])) {
Je reflechi toujours...
Pas facile grrrrr

par furiouslol » 12 mars 2009, 22:51

C'est de là ou vient mon erreur mais je ne sais pas comment la résoudre, enfait faudrais que j'arrive a récupérer mes champs (sections) dans mon fichier .ini.
Ce a quoi j'ai répondu
En jetant un œil dans la doc sur parse_ini_file je vois que le deuxième paramètre doit être TRUE ou FALSE, avec FALSE par défaut, dans ton cas il te faut true
:)

par furiouslol » 12 mars 2009, 22:50

Et c'est pas un peu bizarre cette écriture

Code : Tout sélectionner

<FORM method="POST" action=\'recuplogin.php\'>
oui c'est curieux ^^

par rudyskate » 12 mars 2009, 22:49

alors $_POST['logmail'] prend comme valeur : [email protected]
et $login['mail'] j'arrive pas a l'afficher.... je ne sais pas pourquoi,
lorsque j'écri print_r ($login['mail']) rien ne s'affiche.

C'est de là ou vient mon erreur mais je ne sais pas comment la résoudre, enfait faudrais que j'arrive a récupérer mes champs (sections) dans mon fichier .ini.

VOila

par furiouslol » 12 mars 2009, 22:48

En jetant un œil dans la doc sur parse_ini_file je vois que le deuxième paramètre doit être TRUE ou FALSE, avec FALSE par défaut, dans ton cas il te faut true