Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 06/01/2007, 20h48   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Par défaut Obtention du message d'erreur : parse error

Bonsoir à tous, voila ma situation :

J'ai une page index.php qui me permettra d'afficher des news (aucun probs), mais également d'afficher soit le module de login (si l'utilisateur n'est pas encore logué) soit un module d'administration du site (si l'utilisateur est deja logué).

Voici le code de ma page 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
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
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
 
<body>
<table width="801" height="128" border="1">
  <tr>
    <td><div align="center">Headerz</div></td>
  </tr>
</table>
<table width="801" height="532" border="1">
  <tr>
    <td width="227" valign="top"><p>&nbsp;</p>
      <p>...</p></td>
    <td width="407" valign="top"><div align="center">
      <table width="374" border="1">
        <tr>
          <td>
 
		  <?php 
 
		  //on récupere les news dans la sql
 
			$db = mysql_connect ('localhost', 'root', '') or die ('Error');
		  mysql_select_db ('news',$db);
		  $req = 'SELECT id, sujet FROM Titre ORDER BY date';
		  $res = mysql_query($req) or die ('errorz'.mysql_error()); 
 
		  while ($data = mysql_fetch_array($res))
		  	{
			echo $data['sujet'];
			}
 
		  mysql_close();		  
 
		  ?>
&nbsp;</td>
        </tr>
      </table>
    </div></td>
 
 
	<?php
 
	//recuperation du numero de session
 
if (!session_id()) {
	if (isset($PHPSESSID)) {
		$SESSID = $PHPSESSID;
	}
}
else {
	$SESSID = session_id();
}
 
// Si l'utilisateur est deja enregistré, on affiche le menu d'administration
 
if($SESSID && !isset($_POST['username']) && !isset($_POST['password'])) { session_start($SESSID); } ?>
 
<p><em>Adminsitration</em></p>
      <table width="200" border="0" id="admin">
        <tr>
          <td height="130"><p><a href="?section=addnews">Add news</a><br />
              <a href="?section=admins">Manage administrators</a><br />
              <a href="?section=pics">Manage gallery</a></p>
          <p><a href="logout.php">Logout</a> </p></td>
        </tr>
      </table>      <p>&nbsp;</p>    <td valign="top"></td>
 
<?php
 
// Sinon, on affiche le module de login
 (ligne75)	else { 
 
		?>
<table width="200" bordel="0" id="logon">
<tr>
	  <form id="login" name="user" method="post" action="checklogin.php">
          <label> </label>
          <div align="center">nickname
            <input name="username" type="text" />
          </div>
          <label> </label>
          <div align="center">password
            <input name="password" type="password" />
          </div>
          <div align="center"><br />
          </div>
          <label> </label>
          <div align="center">
            <input type="submit" name="Submit" value="enter" />
          </div>
        </form>
 
		</tr>
		</table>
 
	  <?php } 
 
	  ?>
 
<p>&nbsp;</p>
</body>
</html>
et le code de ma page checklogin.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
 
//demarrage de la session
session_start(); 
// initialisation de la variable de login à 0 (false)
$loginOK = false; 
//on effectue la verification à condition qu'il y ait des valeurs à traiter
if (  isset ($_POST) && (!empty($_POST['username'])) && (!empty($_POST['password'])) )
	{
		extract ($_POST); 
		// Connexion à la base de données		
		$db = mysql_connect ('localhost', 'root', '');
		mysql_select_db ('mysql',$db);
		$req = "SELECT username, password, autre FROM users WHERE username ='".$username."' ";
		$res = mysql_query ($req) or die ('Erreur :'.mysql_error());
 
			// Verification de l'utilisateur
 
			if (mysql_num_rows($res) > 0)
				{
				$data = mysql_fetch_assoc($res);
 
			// Verification du mot de passe
 
			if ($password == $data['password']) 
				{
				$loginOK = true;
				}
				}
	}
// Si tout est OK, on met les données en session
if ($loginOK)
	{
	$_SESSION['username'] = $data['username'];
	$_SESSION['password'] = $data['password'];
	$_SESSION['autre'] = $data['autre'];
	header('Location: ./Unintled-1.php');
	}
 
else {
		echo 'Login / mot de passe incorrect(s), veuillez rééssayer';
}
?>

et voila l'erreur retournée par mon navigateur :

Code :
Parse error: parse error in ... on line 75
Merci d'avance pour votre aide
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2007, 22h08   #2
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
la ligne 75 elle correspond à quoi?
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2007, 22h26   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par oceane751
la ligne 75 elle correspond à quoi?
Pardon, j'ai oublié de donner cette info, elle se situe dans le "index.php", à cet endroit :

Code :
1
2
3
4
// Sinon, on affiche le module de login
		else {            (ligne 75)
 
		?>
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2007, 23h37   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Erreur :
Code :
if (mysql_num_rows($res) > 0);
Si tu ne l'as pas encore trouvé

D'ailleurs voici une méthode à toujours avoir en tête : Explications et correction de l'erreur 'parse error'
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2007, 23h43   #5
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par Kerod
Erreur :
Code :
if (mysql_num_rows($res) > 0);
Si tu ne l'as pas encore trouvé

D'ailleurs voici une méthode à toujours avoir en tête : Explications et correction de l'erreur 'parse error'

mhh pourquoi dont? désolé je ne comprends pas.

Mais l'erreur que j'o'btiens ne se trouverait-elle pas plutot du coté de l'index.php?

En fait, si je teste mon checklogin.php séparement ca fonctionne bien, donc ca doit etre un probleme dans le index.php.

Merci beaucoup
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2007, 23h47   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tu as déjà vu un if avec un ; à la fin ? Moi jamais. J'en ai déjà vu avec des {} et des instructions dedans mais jamais de ; juste après la parenthèse.

Par contre c'est possible si c'était avec un while mais c'est pas le cas
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2007, 23h50   #7
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par Kerod
Tu as déjà vu un if avec un ; à la fin ? Moi jamais. J'en ai déjà vu avec des {} et des instructions dedans mais jamais de ; juste après la parenthèse.

Par contre c'est possible si c'était avec un while mais c'est pas le cas

pas bête du tout ;p pas la premiere fois que je fais l'erreur pourtant...

malheureusement, toujours mon probleme à la ligne 75

Merci
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2007, 23h59   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Vérifie TOUT tes if il y a toujours des ;
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 00h03   #9
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Petits conseils :
  1. Toujours indenter correctement le code. Ca permet une meilleure lisibilité.
  2. Ne JAMAIS mettre de ; après la parenthèse d'un if, toujours source d'erreurs.
  3. header : toujours Location
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
<?php   
    session_start(); 
    //demarrage de la session   
    $loginOK = false; 
    // initialisation de la variable de login à 0 (false)   
    //on effectue la verification à condition qu'il y ait des valeurs à traiter   
    if ( isset($_POST) && (!empty($_POST['username'])) && (!empty($_POST['password'])) ) 
    {  
        extract ($_POST); // Connexion à la base de données  
        $db = mysql_connect ('localhost', 'root', '');
         mysql_select_db ('mysql',$db); 
        $req = "SELECT username, password, autre FROM users WHERE username ='".$username."' "; 
        $res = mysql_query ($req) or die ('Erreur :'.mysql_error()); // Verification de l'utilisateur  
        if (mysql_num_rows($res) > 0)
        {  
            $data = mysql_fetch_assoc($res); // Verification du mot de passe  
            if ($password == $data['password']) 
            {  
                $loginOK = true; 
            }  
        }  
    }  // Si tout est OK, on met les données en session   
    if ($loginOK)
    {  
        $_SESSION['username'] = $data['username']; 
        $_SESSION['password'] = $data['password']; 
        $_SESSION['autre'] = $data['autre']; 
        header('Location: ./index.php'); 
    }   
    else 
    {  
        echo 'Login / mot de passe incorrect(s), veuillez rééssayer'; 
    } 
?>
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 00h11   #10
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par Kerod
Petits conseils :
  1. Toujours indenter correctement le code. Ca permet une meilleure lisibilité.
  2. Ne JAMAIS mettre de ; après la parenthèse d'un if, toujours source d'erreurs.
  3. header : toujours Location
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
<?php   
    session_start(); 
    //demarrage de la session   
    $loginOK = false; 
    // initialisation de la variable de login à 0 (false)   
    //on effectue la verification à condition qu'il y ait des valeurs à traiter   
    if ( isset($_POST) && (!empty($_POST['username'])) && (!empty($_POST['password'])) ) 
    {  
        extract ($_POST); // Connexion à la base de données  
        $db = mysql_connect ('localhost', 'root', '');
         mysql_select_db ('mysql',$db); 
        $req = "SELECT username, password, autre FROM users WHERE username ='".$username."' "; 
        $res = mysql_query ($req) or die ('Erreur :'.mysql_error()); // Verification de l'utilisateur  
        if (mysql_num_rows($res) > 0)
        {  
            $data = mysql_fetch_assoc($res); // Verification du mot de passe  
            if ($password == $data['password']) 
            {  
                $loginOK = true; 
            }  
        }  
    }  // Si tout est OK, on met les données en session   
    if ($loginOK)
    {  
        $_SESSION['username'] = $data['username']; 
        $_SESSION['password'] = $data['password']; 
        $_SESSION['autre'] = $data['autre']; 
        header('Location: ./index.php'); 
    }   
    else 
    {  
        echo 'Login / mot de passe incorrect(s), veuillez rééssayer'; 
    } 
?>
Merci pour ta réponse, j'ai mis à jour le code de checklogin.php dans mon premier post.

Pas d'idée pour le index.php?
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 00h20   #11
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ben c'est pas très logique de séparer un else de son if
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 00h27   #12
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
j'ai essayé ceci :

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
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
 
<body>
<table width="801" height="128" border="1">
  <tr>
    <td><div align="center">Headerz</div></td>
  </tr>
</table>
<table width="801" height="532" border="1">
  <tr>
    <td width="227" valign="top"><p>&nbsp;</p>
      <p>...</p></td>
    <td width="407" valign="top"><div align="center">
      <table width="374" border="1">
        <tr>
          <td>
 
<?php 
//on récupere les news dans la sql
$db = mysql_connect ('localhost', 'root', '') or die ('Error');
mysql_select_db ('news',$db);
$req = 'SELECT id, sujet FROM Titre ORDER BY date';
$res = mysql_query($req) or die ('errorz'.mysql_error()); 
 
		  while ($data = mysql_fetch_array($res))
		  	{
			echo $data['sujet'];
			}
 
		  mysql_close();		  
?>
 
		  &nbsp;</td>
        </tr>
      </table>
    </div></td>
 
<?php
 
//recuperation du numero de session
if (!session_id())
	{
	if (isset($PHPSESSID)) 
		{
		$SESSID = $PHPSESSID;
		}
	}
 
else {
	$SESSID = session_id();
}
// Si l'utilisateur est deja enregistré, on affiche le menu d'administration
(LIGNE 57)if($SESSID && !isset($_POST['username']) && !isset($_POST['password'])) (/LIGNE 57)
	{ 
	session_start($SESSID); ?>
 
 
<p><em>Adminsitration</em></p>
      <table width="200" border="0" id="admin">
        <tr>
          <td height="130"><p><a href="?section=addnews">Add news</a><br />
              <a href="?section=admins">Manage administrators</a><br />
              <a href="?section=pics">Manage gallery</a></p>
          <p><a href="logout.php">Logout</a> </p></td>
        </tr>
      </table>      <p>&nbsp;</p>    <td valign="top"></td>
 
 
<?php
	}	
// Sinon, on affiche le module de login
		else { 
?>
 
<table width="200" bordel="0" id="logon">
<tr>
	  <form id="login" name="user" method="post" action="checklogin.php">
          <label> </label>
          <div align="center">nickname
            <input name="username" type="text" />
          </div>
          <label> </label>
          <div align="center">password
            <input name="password" type="password" />
          </div>
          <div align="center"><br />
          </div>
          <label> </label>
          <div align="center">
            <input type="submit" name="Submit" value="enter" />
          </div>
        </form>
 
		</tr>
		</table>
 
<?php } 
?>
 
<p>&nbsp;</p>
</body>
</html>
erreur : Notice: Undefined variable: SESSID in ... on line 57
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 00h29   #13
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Code :
1
2
3
4
5
6
7
8
9
10
11
12
//recuperation du numero de session
if (!session_id())
	{
	if (isset($PHPSESSID)) 
		{
		$SESSID = $PHPSESSID;
		}
	}
 
else {
	$SESSID = session_id();
}
Regardes ce code et analyse le. TOn erreur peut se produire dans un cas vu qu'il est pas traité. Soit tu rajoutes un else au test du isset soit tu mets le test du isset avec celui de la session
Kerod 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 00h26.


 
 
 
 
Partenaires

Hébergement Web