sessions php

sessions php - PHP - Programmation

Marsh Posté le 12-05-2006 à 09:38:57    

Bonjour,
j'ai un problème concernant les sessions sous php. Voici le code de ma page d'accueil :
<<<< ============= Début ============= >>>>
<?
session_name();
session_start();
include "fonction/fonctions.php";
$connexion = connexion(usr_web413_3);
if ( !empty( $_POST['pseudo'] ))
    {
    $nom = $_POST['pseudo'] ;
    echo "$nom";
    }
if (isset($_POST["btn_login"]))
    {
    $pseudo=$_POST["pseudo"];
    $mdp=$_POST["mdp"];
    $req_recherche_utilisateur = mysql_query("
    SELECT *
        FROM utilisateurs
            WHERE utilisateur='$pseudo' AND motdepasse='$mdp'" );
    $nb_utilisateur=mysql_num_rows($req_recherche_utilisateur);
    if ($nb_utilisateur == 1)
        {
        $_SESSION['nom'] = $pseudo;
        $nom_session = $_SESSION['nom'];
        echo "$nom_session";
        } else  {
            // utilisateur non reconnu
        }
    }
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
<!-- script du menu.
window.onload=montre;
function montre(id)
    {
    var d = document.getElementById(id);
    for (var i = 1; i<=10; i++)
        {
        if (document.getElementById('smenu'+i))
            {
            document.getElementById('smenu'+i).style.display='none';
            }
        }
    if (d)
        {
        d.style.display='block';
        }
    }
//-->
</script>

 

</head>
<body leftmargin="0" rightmargin="0" marginheight="0" marginwidth="0">
<div class="gauche">
<dl id="menu">
    <dt onMouseOver="javascript:montre('smenu1');" onMouseOut="javascript:montre();"><a href="index.php?page=menu1">Accueil</a></dt>
    <dt onMouseOver="javascript:montre('smenu2');" onMouseOut="javascript:montre();"><a href="#">menu2</a></dt>
        <dd id="smenu2" onMouseOver="javascript:montre('smenu2');" onMouseOut="javascript:montre();">
            <ul>
                <li><a href="index.php?page=sousmenu21">Sous menu 2.1</a></li>
                <li><a href="index.php?page=sousmenu22">Sous menu 2.2</a></li>
            </ul>
        </dd>
<form action="" method="post">
pseudo : <input type="text" name="pseudo" size="10"><br>
mot de passe : <input type="text" name="mdp" size="10"><br>
<INPUT name="btn_login" type="submit"  lang="fr" value="Valider">
</form>
</div>
<div class="frame">
<?php
if (!isset($_GET['page'])) $page= 'accueil'; else $page= $_GET['page'];
switch($page)
    {
    case 'menu1': include ('menu1.php');break;
    case 'menu21': include ('menu21.php');break;
    case 'menu22': include ('menu22.php');break;
    }
?>
</div>
</body>
</html>
<<<< =============  Fin  ============= >>>>
une fois l'identification effectué, le login de l'utilisateur est bien retenu. Par contre, les données se perdent quand je vais dans le menu21 et 22 alors que leur conne php commencent par : <? session_start(); ?>
Comment faire?

Reply

Marsh Posté le 12-05-2006 à 09:38:57   

Reply

Marsh Posté le 12-05-2006 à 10:20:23    

il sert à quoi le session_name() au début du script, vu que tu ne récupère pas ce qu'il y a dedans ?

Reply

Marsh Posté le 12-05-2006 à 10:35:11    

1/ le session_name(); n'a pas d'intéret
 

Code :
  1. $req_recherche_utilisateur = mysql_query("
  2.     SELECT *
  3.         FROM utilisateurs
  4.             WHERE utilisateur='$pseudo' AND motdepasse='$mdp'" );


 
2/ ce bout de code est une passoire, c'est l'éxemple même de ce qu'il ne faut pas faire car une faille d'injection SQL est tout a fait possible ici
 
3/ session_start(); ne doit pas etre rappeler plusieurs fois dans une même page php. Ici tu appele session_start(); au début de ta page, les pages includes tel que page21.php et cie ne doivent pas contenir de session_start();

Reply

Marsh Posté le 12-05-2006 à 10:41:07    

Pour le 2, il est sauvé si magic_quotes_gpc est activé

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed