Je développe une application disposant d'un back office avec PHP/MySQL mon
application fonctionne normalement en local (EasyPHP 1.6).
Un utilisateur s'authentifie via un formulaire traité en php qui hashe son
mot de passe en md5 pour le comparer à celui stocké dans la table des
utilisateurs (également stocké sous sa forme hashée).
Le script de traitement du formulaire d'authentification appelle lui même un
script de connexion à la bdd par un include().
Si les login et mot de passe correpondent, l'accès est autorisé.
Tout cela fonctionne à merveille en local.
Puis :
Je transfère mon appli chez mon hébergeur (l'accès à PHPMyAdmin est sécurisé
via HTTPS/SSL son adresse est du type
https://secure.monhebergeur/fr/mysql/).
lorsque je me connecte au site www.mondomaine.fr/test/ je tombe bien sur mon
index (le formulaire d'authentification) mais quand je m'authentifie ou si
je laisse le formulaire vide j'obtient systématiquement "vous n'êtes pas
autorisé à afficher la page", je n'ai même pas l'affichage du controle
d'erreur que j'ai mis en place et qui oblige l'utilisateur à remplir les
champs obligatoires...
--------
voici mon script de connexion (mon fichier s'appelle "connexion.inc.php") :
<?
$host = "localhost";
$user = "login";
$password = "motdepasse";
$db = "mabase";
$connexion = mysql_connect($host,$user,$password);
if (!$connexion) {
echo "Impossible d'effectuer la connexion";
exit;
} else {
echo "connexion établie<br>";
}//endif;
$bdd = mysql_select_db($db,$connexion);
if (!bdd) {
echo "Impossible de sélectionner cette BDD<br>";
exit;
}//endif;
?>
--------------
Voici maintenant mon script de traitement du formulaire (mon fichier
s'appelle "traitement.inc.php") :
<?
session_start();
require("functions/connexion.inc.php");
$hpw = md5($pw);//hash du mot de passe saisi dans le formulaire
//comparaison login et pw hashé par md5
$sql = "SELECT id,login,password,nomuser,prenomuser, FROM matable WHERE
login = '$log' AND userpassword = '$hpw' ";
$query = mysql_query($sql);
$result = mysql_num_rows($query);
if (!$result) {
header("Location: form.php?error=login");
echo "Les paramètres de connexion sont invalides";
//exit();
} ELSE {
$rs = mysql_fetch_array ($query);
session_register("id");
$iduser = $rs["id"];//attribution session
}//EndIF;
//vérification remplissage des champs obligatoires
mysql_close();
?>
-------------------
Par acquis de conscience, je me dis "je vais faire une copie du fichier et
je vais essayer de frapper directement l'addresse du script dans mon
navigateur", je crée donc un fichier du nom de "connexion.inc_new.php" avec
extactement le même contenu que le premier script figurant dans mon post et
dans mon navigateur je frappe
www.mondomaine.fr/test/functions/connexion.inc_new.php et bingo : connexion
établie !!!
J'y perd mon latin...
Pourquoi ça ne fonctionne pas en cliquant dans le formulaire?
le script de traitement ne fonctionne pas non plus en ligne alors qu'il
fonctionne en local...
toutes les manips effectuées dans le formulaire html se soldent par "vous
n'êtes pas autorisé à afficher la page" !
alors que si je frappe l'adresse complète :
www.mondomaine.fr/test/functions/connexion.inc_new.php j'obtiens connexion
établie !!!
par contre www.mondomaine.fr/test/functions/traitement.inc.php donne "vous
n'êtes pas autorisé à afficher la page" !
Avez vous déjà rencontré ce type de problème ? est-ce du au tandem https/ssl
? avez-vous une solution à me proposer ? une idée ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thibaut Allender
Avez vous déjà rencontré ce type de problème ? est-ce du au tandem https/ssl ? avez-vous une solution à me proposer ? une idée ?
euh, j'ai vraiment lu en diagonale, mais c'est pas simplement un probleme de register globals off sur ton hebergeur est on en local ?
parce que dans le traitement du formulaire, $pw, ca sort d'ou ? c'est la variable postee en GET ou POST ? auquel cas il faut utiliser $_REQUEST['pw'] pour etre sur de recuperer une valeur quelle que soit la config de l'hebergeur
idem pour $log
et puis il y a une coquille :
$bdd = mysql_select_db($db,$connexion); if (!bdd) { echo "Impossible de sélectionner cette BDD<br>"; exit;
il manque un $ dans if (!bdd)
de même, ta gestion des sessions est obsolète : session_register("id"); est à remplacer par $_SESSION['id'] = value;
en plus, tu registres 'id' en session, mais tu attribues la valeur à une autre variable ???
Avez vous déjà rencontré ce type de problème ? est-ce du au tandem https/ssl
? avez-vous une solution à me proposer ? une idée ?
euh, j'ai vraiment lu en diagonale, mais c'est pas simplement un
probleme de register globals off sur ton hebergeur est on en local ?
parce que dans le traitement du formulaire, $pw, ca sort d'ou ? c'est la
variable postee en GET ou POST ?
auquel cas il faut utiliser $_REQUEST['pw'] pour etre sur de recuperer
une valeur quelle que soit la config de l'hebergeur
idem pour $log
et puis il y a une coquille :
$bdd = mysql_select_db($db,$connexion);
if (!bdd) {
echo "Impossible de sélectionner cette BDD<br>";
exit;
il manque un $ dans if (!bdd)
de même, ta gestion des sessions est obsolète :
session_register("id"); est à remplacer par $_SESSION['id'] = value;
en plus, tu registres 'id' en session, mais tu attribues la valeur à une
autre variable ???
Avez vous déjà rencontré ce type de problème ? est-ce du au tandem https/ssl ? avez-vous une solution à me proposer ? une idée ?
euh, j'ai vraiment lu en diagonale, mais c'est pas simplement un probleme de register globals off sur ton hebergeur est on en local ?
parce que dans le traitement du formulaire, $pw, ca sort d'ou ? c'est la variable postee en GET ou POST ? auquel cas il faut utiliser $_REQUEST['pw'] pour etre sur de recuperer une valeur quelle que soit la config de l'hebergeur
idem pour $log
et puis il y a une coquille :
$bdd = mysql_select_db($db,$connexion); if (!bdd) { echo "Impossible de sélectionner cette BDD<br>"; exit;
il manque un $ dans if (!bdd)
de même, ta gestion des sessions est obsolète : session_register("id"); est à remplacer par $_SESSION['id'] = value;
en plus, tu registres 'id' en session, mais tu attribues la valeur à une autre variable ???