Probleme de session!!

Signaler
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004
-
Messages postés
80
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
19 mai 2012
-
kikou a tous!!!

j'ai un problème sur les session!!

je n'arrive pas a afficher le pseudo de la personne qui est connectée!
je vous envoie le code!

ceci est ma page ou l'utilisateur entre ses initiales(pseudo) et son mot de passe



Nom






Mot de passe













ensuite la page de login.php3:

71 réponses

Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
tu dis que t'as un pb de session mais tu utilise meme pass les session ??

parce que la méthode la plus simple c'est :
formulaire ou tu saisi login pass !
vérification que quelque chose a été saisi avant de vérifier si login et pass valide !
si qqch de saisi alors on vérifie login !
si login existant on compare le pass sinon message erreur
si pass ok alors on enregistre dans session valeur login : $_SESSION["login"]=$pseudo;
(avec un session_start() au début de la page !

et ensuite sur les page protégé tu regarde si $_SESSION["login"]=="" alors redirection sinon c bon !!!

là je comprend pas trop pq tu genere un id bidule truc ?!!!

NIARF :-p
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

ben si je comprend!!!comme même je comprend ce que j'ai marqué!!

mon formulaire login.php est bon?

<form method="post" action="login.php3">

Nom






Mot de passe









</form>

</html>

jusque la ca irait!! :)
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
oui ca c bon !

mais ensuite dans ta page login

il faut que tu fasse ton select dans ta base ! ca c ok !

mais ensuite si la personne c bien identifié alors tu stock son numéro identifiant(dans la base) et son logine dans une session : $_SESSION["id"]=id de la base;
$_SESSION["login"]=login de la base !

NIARF :-p
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

euh j'ai po trop compris la...
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
si tu vois que le gars c bien identifié !
il faut alors stocké son login et son id ( enfin lenuméro identifiant dans la base de donné ( sa clé primaire ou je sais pas comment tu les identifie enfin un truc unique a cette personne quoi )) et ca tu le met dans une session ( en fait c un petit fichier que le serveur garde en mémoire et qu'y est accessible que par celui qui l'a crée donc celui qui se connecte !)
et ce petit fichier reste pendant toiut le temps que la personne est sur le site ! donc sa permet de se souvenir de son compte et de savoir si il a accès a tel ou tel page en stockant dedans la session des variables
!

le fonctionnement d'une session :

dans chaque page où tu dois les utilisé il faut mettre au tout tout début : session_start();

ensuite pour stocké une valeur dans ta session tu fais $_SESSION["nomdetavar"]=valeurdetavar;

et apres dans n'importe quel page de ton site où tu utilise les session tu peux regardé ou ajouté les variable qui sont dans ta session!

enfin là je dois plus être trop clair même si dans ma tête sa du sens moi je suis pas réveillé ... g du mal enfin t'as compris en gros j'espère parce que moi là je me comprend plus !!! bon voilà !
NIARF :-p
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

euh ouaip mais moi ce ke je voudrais c'est d'afficher l'initiale! (pseudo)
donc je met $_SESSION["pseudo"]=pseudo comme je l'ai fait!
oki ca j'ai compris mais je le met dans mon formulaire tableau.php ou dans login.php3 (attention a ne pas mélanger avec la page de login.php!!)???

si tu regarde bien j'avais mis euh, il est ou?
a oui dans tableau.php j'ai mis la même chose sauf que j'ai oublié le "=pseudo" mais ca ne marche toujours pas!!

dsl de t'importuner comme ca mais j'ai vraiment besoin de toi!!
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
ben le $_session["machin"]=truc c dans login parce que tu enregistre et apres dans tableau quand tu ecrit c bien ca tu met $_session("machin"]

en fait désolé j'avais mal regardé ta source mais c bien ca !! oui oui tu l'avait déja fait en fait !: désolé !

mais c ton histoire de id que je comprend pas ! il te sert a quoi ? sa sert a quoi de généré ce truc bizar ???

NIARF :-p
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

ca sert aux utilisateurs extérieurs a l'intranet de ne pas voir qui est en id comme par exemple l'administrateur!

en fait quand je fais ceci:

<?php
echo "Bonjour et bienvenue,".$_SESSION["pseudo"]." !";
?>

ca m'affiche Bonjour et bienvenue, pseudo! au lieu de m'afficher celui qi a rentré son login et son mot de passe!

pffff je comprends vraiment rien!!
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
ben oui mais avant dans login tu met jamais rien dans ta session !! faut mettre $_SESSION["pseudo"]=$pseudo;

mais tu l'sa pas fait ca ?
NIARF :-p
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

ben non je lé pa fais parce que je ne sais pas exactement ou le mettre!
je le met après quoi?

et dans login.php3 (faut préciser de quel login tu parle!)
je met un session_start() ou pas?
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
tu met le $_SESSION["pseudo"]=$pseudo; là où tu créais ton identifiant aléatoire et tu supprime cette identifiant aléatoire et la mise a jour de la base sa sert a rien ??!!!!!
et oui il faut mettre un session_start
NIARF :-p
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

bon maintenant j'ai mis le session_start() au tout début et j'ai remplacé ce qui me donne:

// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
{
// REDIRECTION VERS LA PAGE ERREUR
header("Location:$url_erreur");
}

// SI LE LOGIN ET MOT DE PASSE SONT EXACTS
else
{
$_SESSION["pseudo"]=pseudo;

// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
header("Location:tableau.php?id=$id");
}

// DECONNEXION MYSQL
mysql_close($db_link);

mais ca ne fonctionne pas!!il m'affiche une erreur:

Warning: Cannot add header information - headers already sent by (output started at d:\intranet\ddsv28\login.php3:5) on line 23

voici la ligne 23:

// REDIRECTION VERS LA PAGE ERREUR
header("Location:$url_erreur");

je ne vois vraiment pas ou il y a une erreur c'est pourtant bien écrit!!
Messages postés
80
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
19 mai 2012

il ne doit rien y avoir apres ton header !
Messages postés
80
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
19 mai 2012

voici une partie de mon code pour tester les login et pass en session

<?php
// connexion au serveur 
include("connexion.php3");
$table = "admin"; 
$id = MYSQL_CONNECT($serveur,$login,$pass); 
mysql_select_db("$base");
$query = "SELECT * FROM USERS WHERE nomusers='$login2' and password= '$password2'";

$result = mysql_query($query, $id);
$a = mysql_affected_rows();
while($row = mysql_fetch_row($result))
{
$nomusers = $row[1];
$email = $row[3];
$prenom = $row[2];
$nbvisite = $row[5];
        }
if ($a == 0 )
{
Header("Location: http://www.cfp29.org/test/login.php3?resultat=bad&login2=$login2");
}
else

{ $nbvisite++ ?>
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

ben j'ai ceci:

// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
{
// REDIRECTION VERS LA PAGE ERREUR
header("Location:$url_erreur");
}

// SI LE LOGIN ET MOT DE PASSE SONT EXACTS
else
{
$_SESSION["pseudo"]=pseudo;

// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
header("Location:tableau.php?id=$id");
}

// DECONNEXION MYSQL
mysql_close($db_link);

mais a la ligne 34 c'est a dire:

header("Location:tableau.php?id=$id");

il m'affiche aussi une erreur:

Parse error: parse error, unexpected T_STRING

je comprend vraiment rien!!pffff
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
parse error c que t'as oublié un ; ou une parenthèse mais c pas foecémént a la ligne qu'il t'indique !
ensuite pour le header il faut pas qu'il y ai de html d'écrit sur la page sinon sa marche pas !
pour le session start il faut que se soit la première instruction de la page !
ps : pour $_SESSION["pseudo"]=pseudo; pseudo est une variable donc $pseudo !
NIARF :-p
Messages postés
80
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
19 mai 2012

ah non tu peux avoir du html dans ta page avec un header

si tu fais comme ça

<code>
<?php
// connexion au serveur
include("connexion.php3");
$table = "admin";
$id = MYSQL_CONNECT($serveur,$login,$pass);
mysql_select_db("$base");
$query = "SELECT * FROM USERS WHERE nomusers='$login2' and password= '$password2'";

$result = mysql_query($query, $id);
$a = mysql_affected_rows();
while($row = mysql_fetch_row($result))
{
$nomusers = $row[1];
$email = $row[3];
$prenom = $row[2];
$nbvisite = $row[5];
}
if ($a == 0 )
{
Header("Location: http://www.cfp29.org/test/login.php3?resultat=bad&login2=$login2");
}
else

{ $nbvisite++ ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>C.F.P BREST</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">

<META content="Namo WebEditor v4.0(Trial)" name=GENERATOR></HEAD>

<?php include "top.php3"; ?>

<TABLE cellSpacing=0 width=750 align=center border="1" bordercolordark="white" bordercolorlight="black">

----,
<?php include \"menutop.php3\"; ?>

</TD>

<?php include "menu.php3"; ?>,

<TABLE cellSpacing=1 cellPadding=0 width="100%" border=0>

----,
Bienvenue
<?php echo $prenom; ?> <?php echo $nomusers; ?></TD>

Date d'enregistrement : 04/04/2001
Votre
Adresse Email : [mailto:<? echo "><? echo "$email" ?>]
Nombre de news
postées : 3
Vous êtes venu ici 5
fois


Ajout
de news



<form name="form1" method="post" action="newsp.php3">
Titre
:

<textarea name="textnews" rows="10" cols="73"></textarea>



</form>


Quitter



</TD>
</TR></TBODY></TABLE>
<?php include "bas.php3"; ?>



<?php } ?>
</td></tr></table>
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
ouai je suis d'accord mais avant ton header tu n'a pa écrit de html ! t'as pas fait de echo ou de truc comme ca parce que sinon sa marche pas !
NIARF :-p
Messages postés
111
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
4 mars 2004

kikou!!!
franchement quand je regarde bien ma page il n'y a pas de html!!!

regardez vous même!!!!

<?
session_start();
?>

<?
require("conf.php3");

/*-----------------------------------------------------------------*/
/* PROGRAMME PRINCIPAL */
/*-----------------------------------------------------------------*/

// CONNEXION A LA BASE DE DONNEE
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
// MOT DE PASSE SAISIS A LA PAGE LOGIN.HTM
$requete=mysql_db_query($sql_bdd,"select pseudo,passe from membre where pseudo="$pseudo" and passe="$passe"",$db_link);

// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
{
// REDIRECTION VERS LA PAGE ERREUR
header("Location:$url_erreur");
}

// SI LE LOGIN ET MOT DE PASSE SONT EXACTS
else
{
$_SESSION["pseudo"]=$pseudo;

/*
// CREATION D'UN IDENTIFIANT ALEATOIRE
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres))),1);
}
*/
// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE
$requete=mysql_db_query($sql_bdd,"update membre set id="$id" where pseudo="$pseudo" and passe="$passe"",$db_link);

// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
header("Location:tableau.php?id=$id");
}

// DECONNEXION MYSQL
mysql_close($db_link);
?>

et le premier header il ne l'accepte pas!!
Messages postés
80
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
19 mai 2012

fait un echo de $url_erreur pour voir ce qu'il y a dedans !