Identification avec tableau-->page blanche [Résolu/Fermé]

Signaler
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011
-
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011
-
Bonjour,

Avec l'aide généreuse de ktm620enduro que je remercie encore nous avons créer ce script PHP pour une identification avec redirection. Sur la machine de ktm620enduro le code fonctionne cependant pour ma part celle-ci affiche une page blanche. Je ne vois pas pourquoi quelqu'un à une idée?

<?

$login='bureau_sushiba';
$pass='troc';
$identifiants=array('','bureau_sushiba','standard_sushiba','responsable_sushiba','cuisine_sushiba');
$passwords=array('','756b25da610ecf7fe6f751ccc9947f6a','pass-2','pass-3','pass-4');
$headers=array('','FAQ-bureau.php','FAQ-standard.php','FAQ-responsable.php','FAQ-cuisine.php');
if (!preg_match('#[a-z0-9]+#i',$pass) or !preg_match('#[a-z_]+#i',$login))
die('mot de passe ou login inexistant ou invalide');
$pass=md5($pass);
if ($key = array_search($login, $identifiants))
{
if ($passwords[$key]==$pass)
{
$header=$headers[$key];
$_SESSION['_login'] = $login;
$_SESSION['_pass'] =$pass;
header('location: '.$header);
exit();

}
else die ('mauvais mot de passe');
}
else die('mauvais login');

?>

12 réponses

Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
Bonjour,


euh Waou.....

je copie-colle ce script, page blanche.
je met en commentaire successivement les lignes, page blanche
j'arrive a la dernière ligne a mettre en commentaire, page blanche
je met tout en commentaire et met un echo "coucou" en 1ere ligne, page blanche.

juste Waou ^^
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

qu'est ce que ca veut dire?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
la réponse est en dessous ^^
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
trouvé^^

ca vient des balises php

remplace <? par <?php et ca ira tout seul

je dois avouer que ca fait peur au début ^^

ca marche chez ktm620enduro parce que son serveur web/php doit etre configurer pour reconnaitre ces balises et pas le tien ; ) (ni le mien d'ailleurs^^)

RISE OF THE GEEK IS COMMING SOON!!! BWAHAHAHAHA
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

c'est vrai que ça m'a fait peur ! merci beaucoup ca marche ! Niveau sécurité c'est comment?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
je dois avouer que j'ai pas trop regarder le code mais ca me parait très correct =)
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

par contre quand je clique sur envoyer meme si je remplit pas le formulaire il m'affiche la page
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
j'ai copié le code, modifié la balise et ca m'as redirigé direct aussi. le reste je sais pas trop, je connais pas ton appli ;)
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

c'est juste un formulaire qui redirige selon ton login et mot de passe
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
euh ben oui c'est normal

if ($key = array_search($login, $identifiants))
cherche $login dans le tableau $identifiants et dans le tableau il y a '' donc si tu mets rien ca valide les tests et donc redirige

Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

je ne vois pas très bien ce que tu veut dire
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

parce que sans ce vide pour la premiere ligne du tableau ca ne marche pas
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
if ($key = array_search($login, $identifiants))

ce test regarde si dans le tableau $identifiants que tu as définit plus haut avec cette ligne:

$identifiants=array('','bureau_sushiba','standard_sushiba','responsable_sushiba','cuisine_sushiba');

si tu ne remplit pas ton formulaire $login va valoir '' (vide).
ce vide EST dans ton tableau, la première valeur.

donc le test va être validé, pareil pour le mot de passe et si l'on valide les 2 tests on est a la redirection.

donc c'est normal que si tu ne remplis pas ton formulaire et que tu valides ca te rediriges

compris?
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

oui mais quand j'enlève ce vide il me met mauvais login tout le temp
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

Pas de solution?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
*fais des tests* ^^
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
Bon je viens de tester tout ce plus en détail. la version de départ était bonne. il faut bien laisser la chaine vide en 1ere valeur car array_search renvoi la position de la chaine et vu que le tableau commence a 0 la valeur de retour sera 0 et le test ne sera pas validé.

je viens de tester en remettant la chaine vide et en mettant un login mdp vide aussi, et ça me jette correctement. je ne vois pas pourquoi toi ça t'acceptais.
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

j'ai mi comme ca en ca me renvoi bien login ou mdp invalide ou inexistant mais faut bien que je lui donne une valeur au variable $login et $pass n'est ce pas?
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

<?php

$login='';
$pass='';
$identifiants=array('','bureau_sushiba','standard_sushiba','responsable_sushiba','cuisine_sushiba');
$passwords=array('','756b25da610ecf7fe6f751ccc9947f6a','pass-2','pass-3','pass-4');
$headers=array('','FAQ-bureau.php','FAQ-standard.php','FAQ-responsable.php','FAQ-cuisine.php');
if (!preg_match('#[a-z0-9]+#i',$pass) or !preg_match('#[a-z_]+#i',$login))
die('mot de passe ou login inexistant ou invalide');
$pass=md5($pass);
if ($key = array_search($login, $identifiants))
{
if ($passwords[$key]==$pass)
{
$header=$headers[$key];
$_SESSION['_login'] = $login;
$_SESSION['_pass'] =$pass;
header('location: '.$header);
exit();

}
else die ('mauvais mot de passe');
}
else die('mauvais login');

?>
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
et bien ta valeur vient bien de ton formulaire. c'est bien en fait un $_POST['login'] et $_POST['pass'], non?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
if(!isset($_POST))
{
$login=''
$pass=''
}

si on ne vient pas du formulaire, on met les champs a vide et ca refusera l identification
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

je le met ou ca sur toute les pages ?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
non sur la page ou tu vérifie le mdp et le login, ou il y a le code que tu as posté
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

ca ne marche pas
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

J'ai pas meilleur temp de faire ca sur chaque page :

<?php
if (! (isset( $_SESSION['_login'] && (isset( $_SESSION['_pass'])))
die ('Invalide');
}
?>


Cependant j'ai une erreur de syntaxe je ne sai pa pk
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
<?php
if (!isset( $_SESSION['_login']) && isset( $_SESSION['_pass']))
die ('Invalide');
}
?>
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

salut,
je viens d'essayer j'ai plus d'erreur de syntaxe mais j'ai quand même accès à toutes les pages en tapant l'url
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

voila l'erreur qu'il m'affiche

Notice: Undefined index: login in C:\Program Files\EasyPHP-5.3.1\www\INTRANET\templates\identification2.php on line 3

Notice: Undefined index: mdp in C:\Program Files\EasyPHP-5.3.1\www\INTRANET\templates\identification2.php on line 4
mot de passe ou login inexistant ou invalide
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
Bonjour,

vérifie l'état de tes variables $_SESSION['_login'] et $_SESSION['_pass'] avec un print_r($_SESSION) et cherche pourquoi elles ont ces valeurs.

tu verra quelle page les leur a donnée
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

je le met ou ca?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
sur une page que tu appel via son adresse, la ou tu ne voudrais pas avoir accès en fait
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

je l'ai mis sur une des pages comme tu viens de me dire et voila ce que j'ai :
Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-5.3.1\www\INTRANET\templates\identification2.php on line 5
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
t'as du oublie le session_start() tout en haut de la page, non?
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

excuse moi encore mais sur quel page?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
lol, bon je t'explique le fonctionnement des session parce que la t'as l'air perdu...


pour que les sessions soient pris en comptes sur n'importe quelle page il faut que tout au debut, vraiment tout au debut, tu mette un
<?php
session-start();
?>

a partir de la tu peux utiliser un tableau associatif qui s'appel $_SESSION[]

donc pour pouvoir utiliser ce $_SESSION tu dois avoir mis le session_start()

donc la met le session start tout en haut de la page ou tu as mis ca : print_r($_SESSION)
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

Ok merci, bon maintenant il m'affiche en haut de la page Array()
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
ok ça ça veut dire que tes variables de session n'existent pas donc

<?php
if (isset( $_SESSION['_login']) && isset( $_SESSION['_pass']))
{
}
else
{
echo "Vous n'etes pas identifié";
}
?>

a la place du print_r($_SESSION)

devrait te dire que tu n'est pas identifié.

si ensuite tu redirige directement vers ta page d'identification, ca ira =)
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

Merci, par contre il ne manque pas quelque chose entre les deux accolade?
<?php
if (isset( $_SESSION['_login']) && isset( $_SESSION['_pass']))
{
}
Parce que quand je met ca à la place de print_r($_SESSION) il m'interdit meme quand je me logue correctement
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

non c bon ca marche ! juste un petit détail j'ai mi ca dans mes pages

<?php
session_start();
if (isset( $_SESSION['_login']) && isset( $_SESSION['_pass']))
{
}
else
{
echo "Vous n'etes pas identifié";
header("location: accueil.php") ;
}


?>


Niveau secu ca marche par contre j'ai pa le message echo "Vous n'etes pas identifié"; qui s'affiche
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
Quand tu te log correctement tu mets des valeurs a tes variables de session $_SESSION['_login'] et $_SESSION['_pass'].

ensuite en haut de TOUTES les pages que tu ne veux pas avoir accès sans être identifié tu mets

<?php
session_start();
if (isset( $_SESSION['_login']) && isset( $_SESSION['_pass']))
{
}
else
{
header("location:tapage_didentification.php");
}
?>
//tout le code HTML de ta page


si tu est identifié rien ne se passe et ta page s'affiche, si tu ne l'est pas tu est redirigé vers tapage_didentification.php

ok?
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

ok pour ca mais par contre il n'y a pas de msg qui s'affiche informant l'utilisateur qu'il n'est pas connecté
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

c bon j'ai mis ca et ca marche bien !
<?php
session_start();
if (isset( $_SESSION['_login']) && isset( $_SESSION['_pass']))
{
}
else
{
echo '<p><b style="color:red">espace sécurisé</b><br />Connecté vous pour accéder à cette page</p>';
include("accueil.php") ;
exit();
}
?>
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

Je te remercie ! Sans toi j'aurais mis 23 mois pour y arriver! Merci et surement à bientot sur le forum. Pettie question on sait jamais tu sais comment on installe phpBB en local?
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
http://www.phpbb-fr.com/

t'as tous les tutos qu'il faut.

de rien
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
37
pour ca dans ton header(location:....) tu rajoutes une variable GET

exemple:
header("location:tapage_didentification.php?nonident=true");

et dans ta page d'identification ( celle-ci tapage_didentification.php )

tu mets:

if (isset($_GET['nonident']))
{
echo "<p>Vous n'estes pas identifié</p>";
}
Messages postés
66
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011

Encore merci à bientôt !