Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2011, 00h49   #1
Invité de passage
 
Homme khaled mehdi hammou
Étudiant
Inscription : avril 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme khaled mehdi hammou
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2011
Messages : 40
Points : 4
Points : 4
Par défaut probleme declanchement session pour plusieur page !

Salut

voila j'ai 4 pages php chacune dans un fichier.php :

index.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<<?php session_start(); ?>
 
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<?php
//Si le titre est indiqué, on l'affiche entre les balises <title>
echo (!empty($titre))?'<title>'.$titre.'</title>':'<title> Forum </title>';
?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
</head>
<body>
 
 
 
 
       <div id="en_tete">
	   <?php
 
 
 
 
 
	  if (isset($_POST['pseudo']))
      {
      $_SESSION['pseudo'] = $_POST['pseudo'];
	  echo'<p>'.$_SESSION['pseudo'].'</p><a href="deconnexion.php">deconnexion</a>';
	  echo'<a href="momo.php">momo</a>';
      }
      else
	  {
       include("formulaire.php"); 
 
       	   }
 
       ?>
 
 
 
</div>
</body>
</html>
formulaire.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if (!isset($_POST['pseudo'])) 
 
 
{
	echo '<form method="post" action="./index.php" >
	<fieldset>
	<legend>Connexion</legend>
	<p>
	<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
	<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
	</p>
	</fieldset>
	<p><input type="submit" value="Connexion" /></p></form>
	<a href="./register.php">Pas encore inscrit ?</a>
 
	';
 
 
 
}
?>
deconnexion.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start();
session_destroy();
 
$titre="Déconnexion";
 
echo '<p>Vous êtes à présent déconnecté <br />
Cliquez <a href="./index.php">ici</a> 
pour revenir à la page d\'acceuil.<br />';
 
 
 
 
?>
momo.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php session_start()?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insertion et lecture de la table client</title>
</head>
<body>
<?php
if (isset($_POST['pseudo']))
      {
      $_SESSION['pseudo'] = $_POST['pseudo'];
	  echo'<p>'.$_SESSION['pseudo'].'</p><a href="deconnexion.php">deconnexion</a>';
 
      }
      else
	  {
       include("formulaire.php"); 
      }
?>
</body>
</html>
mon probleme c'est que quand je clic sur "momo" dans la page d'index pour y aller ben la page momo.php ca session ne s'active pas je veux dire par la que dans la page d'index la session est activée car dans la page du formulaire j'ai mis action="index.php" est ce que y aurai t'il un moyen pour que toutes mes pages wab que je vais creer leur session s'active car dans les autres pages j'ai le panneau du formulaire qui s'affiche et pas le contenu de la session d'activation sauf pour la page d'index car elle st en cordiantion avec la page du formulaire vous comprenez j'espere ? enfin voila dans chacune de mes pages que je veux creer je vais metre un teste avec un else pour quand la session est activée le panneau ne s'affiche pas mais plutot le contenue de chaque page respectivement et aussi c'est pour pouvoir me connecter de n'importe quelle page comme dans un forum

enfin voila si vous pouviez m'aider ca serai simpa

Cordialement
montis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 00h58   #2
Membre du Club
 
Inscription : juin 2004
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 30
Points : 43
Points : 43
salut,

la session n'est pas active sur l'index, si tu met ton report d'erreur à E_ALL|E_STRICT tu verras ton erreur.
qui est : le < avant le session_start(); tu faitu ne sortie html donc impossible d'envoyer le cookie de session.

donc enlève le et ajoute le < pour commencer le doctype correctement


@+
moogli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 01h28   #3
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Je vois vaguement ce que tu veux dire, peut-être que si tu faisais plusieurs phrases simples je comprendrais mieux.

Une erreur repérée :

1/ dans "index.php"
Code :
<<?php session_start(); ?>
il y a un "<" en trop.

Pour le reste tu as un pb de méthode.

Où il est ton code qui vérifie si l'utilisateur est enregistré ?

Tu enregistre les login/mots de passe où ? dans une bdd ?

Pourquoi ton formulaire renvoie sur la page index.php ?

N'ayant pas trouvé l'équivalent sur ce forum je te propose ce tuto (avec exemple de code complet et fonctionnel):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
 
<?php
// Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
header('Content-type: text/html; charset=UTF-8');
 
/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
 
return $chaine;
}
 
// Initialisation du message de réponse
$message = null;
 
 
// Si le formulaire est envoyé
if (isset($_POST['pseudo']))
{
 
    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
 
 
    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass))
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "localhost";
         $database = "nom_de_votre_base";
         $username = "root";
         $password = "";
 
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());
 
         // Connexion à la base
         mysql_select_db($database, $connection);
 
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
         mysql_query("SET NAMES 'utf8'");
 
         // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
 
 
         // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire
         $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."'";
 
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
 
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec);
 
 
         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat;
         if ($resultat['nb'] == 0)
         // Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer
         {
             // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
             $insertion = "INSERT INTO membres(pseudo,pass,date_enregistrement) VALUES('".$nom."', '".$password."', NOW())";
 
             // Exécution de la requête d'insertion
             $inser_exec = mysql_query($insertion) or die(mysql_error());
 
             /* Si l'insertion s'est faite correctement (une requête d'insertion retourne "true" en cas de succès, je peux donc utiliser
             l'opérateur de comparaison strict '==='  c.f. http://fr.php.net/manual/fr/language.op ... arison.php) */
             if ($inser_exec === true)
             {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
 
                 // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.
                 $message = 'Votre inscription est enregistrée. <a href = "#">Cliquez ici pour vous connecter</a>';
             }    
         }
         else
         {   // Le pseudo est déjà utilisé
             $message = 'Ce pseudo est déjà utilisé, changez-le.';
         }
    }
    else
    {    // Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
         $message = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
}
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Formulaire d'inscription - tutoriel PHP France</title>
 
<style type="text/css">
<!--
body, p, h1,form, input {
margin:0;
padding:0;
}
body {
background-color:#FFFFFF
}
#inscription {
width:380px;
background:#FFFFFF;
margin:20px auto;
font-family: Arial, Helvetica, sans-serif;
font-size:1em;
border:2px solid #333333;
}
#inscription h1 {
text-align:center;
font-size:1.2em;
background:#333333;
padding-bottom:5px;
margin-bottom:15px;
color:#FFFFFF;
letter-spacing:0.05em;
}
#inscription p {
padding-top:15px;
padding-right:50px;
text-align:right;
}
#inscription input {
margin-left:30px;
width:150px;
}
#inscription #valider {
width:155px;
font-size:0.8em;
}
#inscription #message {
height:27px;
font-size:0.7em;
font-weight:bold;
text-align:center;
padding:10px 0 0 0;
}
-->
</style>
</head>
<body>
<div id = "inscription">
    <form action = "#" method = "post">
    <h1>Inscription</h1>
    <p><label for = "pseudo">Pseudo : </label><input type = "text" name = "pseudo" id = "pseudo" /></p>
    <p><label for = "pass">Mot de passe : </label><input type = "password" name = "pass" id = "pass" /></p>
    <p><input type = "submit" value = "Envoyer" id = "valider" /></p>
    </form>
    <p id = "message"><?php if(isset($message)) echo $message ?></p>
</div>
</body>
</html>
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 02h13   #4
Invité de passage
 
Homme khaled mehdi hammou
Étudiant
Inscription : avril 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme khaled mehdi hammou
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2011
Messages : 40
Points : 4
Points : 4
J'ai corrigé l'erreur malgré ca ,ca ne marche tjrs pas
montis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 02h26   #5
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Y'a trop d'incohérences/complications dans ton code. Je te conseille de suivre le tuto donné en lien plus haut.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h04.


 
 
 
 
Partenaires

Hébergement Web