Espace membre

Répondre
silver
le 13/01/2006 à 13:13
silver
Salut à tous.

Je viens de créer le script espace_membre démontré dans "le comment faire", mais voilà que j'ai un souci malgrès des explication très bien faites.
En faite j'ai un probléme dans la session je penses, en effet quand je me logue il me met bien le nom de la personne logué dans la page membre. Mais si je vais dans une page contenu dans un repertoire par exemple : "http://127.0.0.1/logiciel/repert/" ben quand je revient sur la page membre qui se situ dans : " http://127.0.0.1/logiciel/" il me mais en nom de login "root".
Je n'arrive pas à savoir de ou vient l'erreur.

Voici le code :

page index :
<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login'])
&& !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('espace_membre', $base);

$sql = 'SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$data = mysql_fetch_array($req);

mysql_free_result($req);
mysql_close();

if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}

elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données :
plusieurs membres ont les mêmes identifiants
de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
<h3><p style="text-align: center; font-family: 'times new roman">
Connexion à
votre compte de gestion<p></h3>
<hr width="50%"><br>
<center>
<table width="400">
<tr>
<td>
<form action="index.php" method="post">
Login :
</td>
<td>
<input type="text" name="login" value="
<?php if (isset($_POST['login']))
echo stripslashes(htmlentities(trim($_POST['login']))); ?>">
</td>
</tr>
<tr>
<td>
Mot de passe :
</td>
<td>
<input type="password" name="pass" value="
<?php if (isset($_POST['pass']))
echo stripslashes(htmlentities(trim($_POST['pass']))); ?>">
</td>
</tr>
<tr>
<td colspan="2">
<center><br><input type="submit" name="connexion"
value="Connexion"></center>
</form>
</td>
</tr>
</table>
</center>
<hr width="50%">
<center><a href="inscription.php">Vous inscrire</a></center>
<?php
if (isset($erreur)) echo '',$erreur;
?>
</body>
</html>


page membre :

<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>

<html>
<head>
<title>Espace membre</title>
</head>

<body>
<h3><p style="text-align: center; font-family: 'times new roman">Bienvenue
<?php echo htmlentities(stripslashes(trim($_SESSION['login']))); ?><p></h3>

<p>Accéder aux outils : </p>
<a href="repertoire_tel/index.php">Annuaire téléphonnique</a>
<br>
<a href="deconnexion.php">Déconnexion</a>
</body>
</html>


Et sur les page contenu dasn un repertoire je met ce code-ci en debut de page :

<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: /logiciel/index.php');
exit();
}
?>


Merci
LA GLOBULE
le 13/01/2006 à 14:36
LA GLOBULE
Tu n'utiliserais pas firefox ? Et tu n'aurais pas enregistré le login 'root' dans le gestionnaire de formulaires de firefox ?
zebden
le 13/01/2006 à 15:05
zebden
Je vois pas ou peut se trouver l'erreur (j'ai pas vraiment lu le code), mais tu dois définir dans un de tes scripts $_SESSION['login'] en root.

Donc je te suggère de faire un echo $_SESSION['login'] au debut et fin de chaques pages pour definir quel script initialise en root ta var de session.
zebdinou pour les intimes / Blog : http://www.zebden.fr
silver
le 13/01/2006 à 15:14
silver
Ce qui est étonnant est que si je créé une page dans le répertoire racine ou se trouve totues les pages du script espace_membre la ca marche. Mais des que je vais dansun autre répertoire ca ne marche plus !!!
jackbocar
le 13/01/2006 à 15:21
jackbocar
Bonjour,

As-tu regardé dans ta base de données le login qui est inscrit ?

Si root apparait, c'est que tu as du l'enregister !!!
silver
le 13/01/2006 à 15:24
silver
C'est bon j'ai trouvé l'erreur je susi bête. C'est parceque dans le repertoire ou ca ne fonctionne pas c'est un script et j'ai pas fait gaffe mais j'ai nommé dans mon fichier config la variable pour la connexion à la base $login. Ce qui généré un conflit avec la variable session déclarer dans le script espace_membre.
Un vulgaire erreur d'inatention de ma part. Cela vient du fait que j'ai pas programmé les dux script au même moment donc plus les variable en tête.

Conlusion : conflit de variable entre deux script.

Merci à vous tous
jackbocar
le 13/01/2006 à 15:32
jackbocar
Est-ce que tu travail avec Easyphp ?

Si oui, tu créais un utilisateur, et tu lui donnes tous les privilèges et un mot de passe, ce qui t'évite de te servire du login root.

A mon avis ça limite les erreurs, et ça t'oblige à remplir tous les champs de connexion à la base de données.
zebden
le 13/01/2006 à 15:38
zebden
C'est bon j'ai trouvé l'erreur je susi bête. C'est parceque dans le repertoire ou ca ne fonctionne pas c'est un script et j'ai pas fait gaffe mais j'ai nommé dans mon fichier config la variable pour la connexion à la base $login. Ce qui généré un conflit avec la variable session déclarer dans le script espace_membre.
Un vulgaire erreur d'inatention de ma part. Cela vient du fait que j'ai pas programmé les dux script au même moment donc plus les variable en tête.


Bin c'est pas exactement ce que je te disais ?!

jackobar on parle pas des droits au niveau de la base proprement dite mais d'un espace membre ou root est aussi valable que que machin.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours