Athentification Redirection page sécurisée

jarremix72
Invité n'ayant pas de compte PHPfrance

31 mars 2011, 08:30

Bonjour à tous !

Je viens de refaire un site pour mon client et le script d'authentification redirection ne fonctionne plus comme avant.

Voici la page concernée : http://www.coifferbiodistribution.com/espace-pro.html.

Normalement avec les identifants test "odyssey" et "sagesse", je suis redirigé vers la page http://www.coifferbiodistribution.com/espace-pro2.php

Le fichier conf.php3 doit permettre cette redirection mais il y a un blocage à pdf_connexion2.php.

Voici le code du fichier "conf.php3 :

Code : Tout sélectionner

<? // SERVEUR SQL $sql_serveur="db2475.1and1.fr"; // LOGIN SQL $sql_user="dbo327640593"; // MOT DE PASSE SQL $sql_passwd="mon mot de passe"; // NOM DE LA BASE DE DONNEES $sql_bdd="db327640593"; // REDIRECTION VERS UNE PAGE ERREUR AU CAS OU LE LOGIN ET MOT DE PASSE SONT INVALIDES $url_erreur="espace-pro.html";//page à configurer par vos soins...et à mettre dans le meme répertoire que le fichier conf.php3 // PAGE PRINCIPALE PROTEGEE PAR MOT DE PASSE $zone_membre="espace-pro2.php";//ne rien modifier (pour éviter les erreurs plus tard) ?>
Voici le fichier pdf_connexion2.php :

Code : Tout sélectionner

<? session_start(); // Pour la suite require ("conf.php3"); //Comme d'ab $pseudo = $_POST['pseudo']; //On recupère le pseudo et le pass $pass = $_POST['password']; if (!empty($pseudo) && !empty($pass)) //S'ils sont pas vident { $sql = connect_sql(); //On se connecte à MySQL $reponse = mysql_query ("SELECT * FROM pdf_membre WHERE pseudo='$pseudo'"); //On recupère les infos à partir du pseudo $donnees = mysql_fetch_array ($reponse); $verif = $donnees['pass']; $id = $donnees['id']; $pseudo_sql = $donnees['pseudo']; $confirm = $donnees['confirm']; if($pass != $verif) //On verifie que le pass entré est égale à celui de la BDD, si le passe est différent { $reponse = 'Erreur sur votre nom et/ou votre référence client.'; $redirection = 'espace-pro.html'; //On va rediriger vers le formulaire de connexion } elseif(!empty($confirm)) //Si le compte n'est pas activé { $reponse = 'Votre compte n\'est pas encore activé'; $redirection = 'espace-pro.html'; //On va rediriger vers le formulaire de connexion } else //Sinon tout est bon { $_SESSION['pseudo'] = $pseudo_sql ; //On créé une variable session avec le pseudo $redirection = 'espace-pro2.php'; //On redirige vers l'espace membre $reponse = 'Connexion réussie ! Vous allez être redirigé.'; } mysql_close($sql); //On ferme la connection } ?> <html> <head> <meta http-equiv="refresh" content="1;URL=<? echo $redirection; //La redirection ?>"> </head> <body><? echo $reponse; ?><!-- La reponse au script --> </body> </html>
Et pour être complet, voici le code en haut de la page espace-pro2.php pour la sécuriser :

Code : Tout sélectionner

<?php session_start(); require("conf.php3"); if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe { die('Vous n\'&ecirc;tes pas autoris&eacute; &agrave; acc&eacute;der &agrave; cette page.'); //Si non, on arrete le script } ?>
J'avoue ne pas comprendre pourquoi ce blocage.
Merci par avance pour votre aide car le php n'est pas une évidence pour moi.

Mammouth du PHP | 672 Messages

31 mars 2011, 10:57

Bonjour à tous !

Je viens de refaire un site pour mon client et le script d'authentification redirection ne fonctionne plus comme avant.
[...]
Le fichier conf.php3 doit permettre cette redirection mais il y a un blocage à pdf_connexion2.php.
Bonjour.

- Tu peux préciser ce que tu as modifié ?
- Qu'entends-tu exactement par il y a un blocage à pdf_connexion2.php ?
- Tu peux déjà commencer par afficher les variables, histoire de vérifier s'il n'y a pas un problème...

Sinon, ren à voir mais :
- Il vaut mieux stocker le mot de passe chiffré dansl a BDD, c'est plus sûr.
Par exemple, tu stockes le MD5 et tu compares le MD5($pass) à ta table...
- Pourquoi n'utilises-tu pas les variables définies dans conf.php (je pense entre autres à ta ligne $redirection = 'espace-pro.html';) ?
- Pense à utiliser les balises <?php et pas <?. Ca peut générer des erreurs...

jarremix72
Invité n'ayant pas de compte PHPfrance

01 avr. 2011, 09:31

Bonjour et merci Macgawel pour ta réponse,

j'ai modifié <?php.

Pour être plus précis, lorsque je rentre mes identifiants et que je valide, le lien "pdf_connexion2.php" s'affiche dans la barre d'adresse et clignote mais la page reste blanche.

Peut-être que je me trompe, mais je pense que c'est le fichier "conf.php3" qui ne doit pas être bien configurer.
Pourtant, il me semble avoir bien intégrer les éléments de la base de donnée de 1&1.

Mammouth du PHP | 672 Messages

01 avr. 2011, 10:19

Pour être plus précis, lorsque je rentre mes identifiants et que je valide, le lien "pdf_connexion2.php" s'affiche dans la barre d'adresse et clignote mais la page reste blanche.
A priori le problème doit venir de pdf_connexion2.php ou (plus probablement) d'un fichier appelé par un include.
Pour débugger, tu peux utiliser des echo "step#"; :
<?php
session_start(); // Pour la suite
echo 'step 1</br>'; // debug
require ("conf.php3"); //Comme d'ab
echo 'step 2</br>'; // debug
Ca devrait t'afficher :

Code : Tout sélectionner

step1 step2
Si ça ne t'affiche que step1, le problème vient de conf.php3.
Tu peux procéder comme ça, par étapes successives pour trouver l'endroit où ça plante.


Concernant le conf.php3 je ne suis pas certain que l'extension .php3 soit encore d'actualité. Pour le reste, je ne vois pas d'erreur flagrante...
Par contre, dans pdf_connexion2.php, que se passe-t-il si tu ne remplis pas ton formulaire ? :roll:

-

jarremix72
Invité n'ayant pas de compte PHPfrance

01 avr. 2011, 11:52

Merci !

Je viens de faire le test avec 'echo' et j'ai bien les step1 et 2 affichés...

Mammouth du PHP | 672 Messages

01 avr. 2011, 12:06

Merci !

Je viens de faire le test avec 'echo' et j'ai bien les step1 et 2 affichés...
Tu peux procéder comme ça, par étapes successives pour trouver l'endroit où ça plante.

jarremix72
Invité n'ayant pas de compte PHPfrance

04 avr. 2011, 10:34

Bonjour,

Après avoir continué les étapes et lorsque je me connecte, seules les étapes 1 à 4 s'affichent à l'écran.
Que dois-je en déduire?

merci par avance !

Code : Tout sélectionner

<?php session_start(); // Pour la suite echo 'step 1</br>'; // debug require ("conf.php3"); //Comme d'ab echo 'step 2</br>'; // debug $pseudo = $_POST['pseudo']; //On recupère le pseudo et le pass echo 'step 3</br>'; // debug $pass = $_POST['password']; echo 'step 4</br>'; // debug if (!empty($pseudo) && !empty($pass)) //S'ils sont pas vident { $sql = connect_sql(); //On se connecte à MySQL echo 'step 5</br>'; // debug $reponse = mysql_query ("SELECT * FROM pdf_membre WHERE pseudo='$pseudo'"); //On recupère les infos à partir du pseudo echo 'step 6</br>'; // debug $donnees = mysql_fetch_array ($reponse); echo 'step 7</br>'; // debug $verif = $donnees['pass']; echo 'step 8</br>'; // debug $id = $donnees['id']; echo 'step 9</br>'; // debug $pseudo_sql = $donnees['pseudo']; echo 'step 10</br>'; // debug $confirm = $donnees['confirm']; echo 'step 11</br>'; // debug

jarremix72
Invité n'ayant pas de compte PHPfrance

13 avr. 2011, 12:04

Bonjour,

J'ai beau chercher l'erreur je ne la trouve toujours pas.

L'étape 5 ne s'affiche pas...que dois-je en déduire ?

Merci pour votre aide !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 avr. 2011, 12:34

a tu afficher $pseudo et $pass ?

pourquoi ne pas utilise directement le tableau $_POST ? quitte a refaire le code autant que ce soit au gout du jour ;)

bon ensuite mettre des echo step dans tous les sens sans autre test c'est inutile, c'est bon pour savoir si l'on entre ou pas dans une boucle et ensuite on debug en affichant les variables.

je commencerais par faire cela
<?php
session_start(); // Pour la suite
require ("conf.php3"); //Comme d'ab  <== y a quoi la dedans ? ça peut arreter le script ?
echo 'avant le if<br />';
if (!empty($_POST['pseudo']) && !empty($_POST['pass'])) {
	echo 'dans le if<br />'
	// Y a quoi dans connect_sql() ? cette fonction utilise une variable globale ? elle retourne quoi ?
	$sql = connect_sql(); //On se connecte à MySQL
	// il faut tester le retour de cette fonction s'il y en a un !
	$reponse = mysql_query ("SELECT * FROM pdf_membre WHERE pseudo='".mysql_real_escape_string($_POST['pseudo'])."'"); //On recupère les infos à partir du pseudo
	if ($reponse === false ) {
		echo 'Erreur SQL : '.mysql_error().'<br />';
	}
	else {
		$donnees = mysql_fetch_assoc($reponse);
		var_dump($donnees); // debug pour savoir si on a bien les bonnes infos de retournées par la requete. 
		$verif = $donnees['pass'];
		$id = $donnees['id'];
		$pseudo_sql = $donnees['pseudo'];
		$confirm = $donnees['confirm'];
	}
}
?>
@+
Il en faut peu pour être heureux ......