Comment faire!

Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005 - 1 janv. 2005 à 18:09
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 2 janv. 2005 à 12:07
Bonjour,

J' ai une page qui sert a autentifier les visiteurs (auth.php):


<?
session_start();

include("../inc/gmt.inc");

if (isset($_POST["pass"]))
{
mysql_connect($host, $user, $pass) or die("Serveur de base de donné injoignable");
@mysql_select_db($db) or die("Base de donnée introuvable sur le serveur");

$resultat=mysql_query("SELECT pass, id FROM enquetenet_membres WHERE nom ='".$_POST["login"]."'");

if($ligne = mysql_fetch_array ($resultat))
{
if(($ligne['pass']==$_POST['pass']) && ($ligne['pass']!='')){$_SESSION["uname"] = $_POST["login"];}
}
mysql_close();
}

if (!isset($_SESSION["uname"]))
{session_destroy();
die ('<meta http-equiv="refresh" content="0;url=index.php"> ');}

if(isset($_GET["log"]) && $_GET["log"]=="logout")
{session_destroy();
die ('<meta http-equiv="refresh" content="0;url=../index.php">');
}
?>



Puis une page membres.php qui est l' espace membre de site:

<?
include('auth.php'); // pour enpecher de voir sans etre authetifier
?>


Je veut afficher les preferences de l' utilistateur dans l' espace membre (membres.php)

il faut donc que je fasse un lien membres.php?idmembre=X

mais comme la page membres .php fait un include de auth.php je ne peut pas le faire sinon la page se racraichit en permanence.

Que faire!

9 réponses

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
1 janv. 2005 à 22:12
Il est bizarre ton script.

- D'une les balises PHP c'est <?php et non <?
- Deuxiement, je ne vois pas l'intérêt de faire passer l'id du membre dans l'url. Les sessions permettent d'éviter ceci.

Je te conseille de lire ceci pour réaliser ton espace membre :

http://www.webmaster-debutant.net/index.php?page=show_article&id=45

++

------
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
1 janv. 2005 à 22:32
<? ou <?php c' est exactement pareil!

Ton tuto est bien, mais il fait en 4 pages ce que je fait en 2.

et j' ai juste a mettre

include('auth.php');


en haut d' un page pour qu' elle soit protégée.

Il me faut passer l' id du membre car je m en sert pour afficher toutes les infos qui le concernet qui dans ma table MySQL.
0
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
1 janv. 2005 à 23:29
>> <? ou <?php c' est exactement pareil!

Carrément pas ! Lis ceci pour t'en convaincre :

[mailto:webdeb73@hotmail.com Webdeb]Les balises PHP

Ce que je fais en 4 pages marche très bien alors que ton deux pages ne le fais pas lol. Je te charie. ^^ C'est pas parcequ'il y a 4 pages que ca fonctionne moins vite qu'avec 2 pages. Cependant je te déconseille fortement de passer l'id de l'utilisateur dans une variable dans l'url. Si les sessions existent c'est bien pour quelque chose. Passe plutôt l'id dans une session.

Exemple : $_SESSION['id_user'] = $id;

Tu testes ça dant chaque page en même temps que la session login.

++

---
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)
0
Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
2 janv. 2005 à 00:08
Ma page d' autentification marche tres bien!

J' avoue que tu a raison pour <?php bien que tres peut d' hebergeurs le desactivent.

Sinon je me suis servi du systeme des session pour mon histoire d' id (je suis debutant je ne savait pas qu' on pouvait faire ca).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
2 janv. 2005 à 11:00
J'étais comme toi avant, je mettais <? au lieu de <?php jusqu'à ce qu'on me fasse lire cet article pour me faire réagir. Il vaut mieux commencer à programmer correctement dès le début ^^

En effet, les sessions permettent d'enregistrer plusieurs variables de sessions. Tu n'es pas contraint d'enregistrer juste ta variable Login. Tu peux donc enregistrer l'id dans une session ainsi que d'autres variables que tu pourras manipuler à ta guise dans ton espace membre.

++

--------
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
2 janv. 2005 à 11:38
Salut,

je vais juste corriger ton script en ce qui concerne les erreurs de programmation.

Pour ce qui est de la récupération des préférences, autant éviter les requêtes MySQL au maximum, c'est pourquoi tu récupères toutes les préférences via MySQL lorsque le membre se connecte, et tu stockes le tout via les sessions. Ensuite lorsque le membre met à jour ses données tu remplaces la valeur de session et tu fais une requête UPDATE.

Bref avoir le moins de SELECT possibles, c'est déjà pas mal.

Pour les erreurs de programmation remplaces ton code par ça :
<?php
ob_start();
session_start();

include '../inc/gmt.inc';

if (isset($_POST['pass']) AND isset($_POST['login']))
{
         $connexion=mysql_connect($host, $user, $pass) or die ('Serveur de base de donné injoignable');
         mysql_select_db($db) OR die("Base de donnée introuvable sur le serveur");

         $resultat=mysql_query("SELECT id FROM enquetenet_membres WHERE nom ='".$_POST['login']."' AND pass='".$_POST['pass']."'") OR die('impossible d\'effectuer la requête');
         mysql_close($connexion) OR die('erreur de fermeture de la connexion');

if(mysql_num_rows($resultat)==0)
{
         //erreur, le login n'a pas été trouvé
         header('location:index.php');
         exit;
}
else
{
        $_SESSION['uname']=$_POST['login'];
        $r=mysql_fetch_row($resultat);
        $_SESSION['id']=$r[0]; //stocke l'id du membre

}

//-----------------------------------------------------
//DE PREFERENCE SUR UNE PAGE SEPAREE
//-----------------------------------------------------
if(isset($_GET['log']) AND $_GET['log']=='logout')
{
           session_destroy();
           header('location:index.php');
           exit;
}
?>


Puis une page membres.php qui est l' espace membre de site:

<?php
include 'auth.php'; // pour enpecher de voir sans etre authetifier
?>


a ++

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
2 janv. 2005 à 11:41
j'ai pas corrigé les fautes hein ^^

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
2 janv. 2005 à 12:03
J'ai ajouté un addslashes() par ci par là ;)

<?php
ob_start();
session_start();

include '../inc/gmt.inc';

if (isset($_POST['pass']) AND isset($_POST['login']))
{
$connexion=mysql_connect($host, $user, $pass) or die ('Serveur de base de donné injoignable');
mysql_select_db($db) OR die("Base de donnée introuvable sur le serveur");

$resultat=mysql_query("SELECT id FROM enquetenet_membres WHERE nom ='".addslashes($_POST['login'])."' AND pass='".addslashes($_POST['pass'])."'") OR die('impossible d\'effectuer la requête');
mysql_close($connexion) OR die('erreur de fermeture de la connexion');

if(mysql_num_rows($resultat)==0)
{
//erreur, le login n'a pas été trouvé
header('location:index.php');
exit;
}
else
{
$_SESSION['uname']=$_POST['login'];
$r=mysql_fetch_row($resultat);
$_SESSION['id']=$r[0]; //stocke l'id du membre

}

//-----------------------------------------------------
//DE PREFERENCE SUR UNE PAGE SEPAREE
//-----------------------------------------------------
if(isset($_GET['log']) AND $_GET['log']=='logout')
{
session_destroy();
header('location:index.php');
exit;
}
?>


Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
2 janv. 2005 à 12:07
Ouais, c'est utile si t'as pas le magic_quotes_gpc à Off ;-)

a +

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
Rejoignez-nous