IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

validité de session


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Bonjour tout le monde
    Alors j'ai une page appeler log_tech.php et une autre appeler index.php
    Dans index.php je selectionne un nom de technicien qui est sous forme de bouton appeler nom_acc
    Quand je clique sur un nom ca me mene sur log_tech.php qui contient un login et un mot de passe.
    Je voudrais que le login prenne directement la valeur du nom du bouton selectionner precdemment et que le technicien ai juste a entré son mot de passe.
    J'ai donc pensé uiliser les sessions ..
    j'ai donc utilisé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="contenu">
    <form action="erreur.php" method="post">
    <?php $_SESSION['nom_acc']=$_POST['nom_acc'] ; echo''.$_SESSION['nom_acc'].'' ; ?> <input class="bordure" name="login"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    <br />
    <input type="submit" name="connexion" class="ajouter" value="Connexion">
    </form>
    ca fonctionne a merveille mais, déjà il ne recnnais pas le nom dans ma base de donnée et quand je retourne sur ma page il me dit quil ne retrouve plus la valeur de ma session je pense donc quelle est perimée et donc quelle ne s'affiche plus quelquun aurait il une idée?
    Merci de votre aide

    Apres avoir epluché plusieur doc tous me dise d'aller sur php.ini et de modifier la durée de vie des sessions, chose faite mais rien ne change
    On dit aussi d'utiliser des cookies mais je ne pense pas que les cookies me soit réellement utile, car je ne veux pas conserver la session du user ouvert je veux juste conserver la valeurs de la session ..

    Ai-je rater quelque chose ?

    Merci a vous ..

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi passer par une session ?
    Utilise directement ta valeur $_POST.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    j'ai essayer mais ej travail sur 3 page en réalité du coup marche pas

    Quand 'jai vu que le traitement de la valeur de mon nom de technicien se faisait sur 3 pages j'ai pensais que les sessions seraient le mieux adapté non ?

    ---------------

    Ca fonctionne au premier affichage mais si mon mot de passe est faux par exemple que mon pop up s'affiche et retourne sur la page e login bah il me dit que la valeur du post ou de la session, c'est le meme message, est indefinis

  4. #4
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Voici le code de la page ou les noms des techniciens s'affiche (index.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    // on se connecte à MySQL 
    $db = mysql_connect('localhost', 'root', ''); 
     
    // on sélectionne la base 
    mysql_select_db('lcesa',$db); 
     
    // on crée la requête SQL 
    $sql = 'SELECT * FROM technicien'; 
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    ?>
    <form method="post" name="nom_acc" action="log_tech.php">
    <?php
     
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_array($req)) 
        { 
        // on affiche les informations de l'enregistrement en cours 
    echo '<input type="submit" name="nom_acc" class="btn_machine" value="'.$data['Nom'].' '.$data['Prenom'].'"/>';
        } 	
     
    // on ferme la connexion à mysql 
    mysql_close(); 
     
    ?>
    </form>
    Quand je clique sur un nom j'arrive ici (log_tech.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <form action="erreur.php" method="post">
    <h2><?php echo''.$_POST ['nom_acc'].'' ; ?></h2> <input class="bordure" name="login"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    <br />
    <input type="submit" name="connexion" class="ajouter" value="Connexion">
    </form>
     
    <?php
     
    if (isset($_GET['erreur'])){
    echo '<script language="Javascript"> alert ("'.htmlentities(urldecode($_GET['erreur'])).'" ) </script>';
    }
     
    if (isset($_GET['erreur2'])){
    echo '<script language="Javascript"> alert ("'.htmlentities(urldecode($_GET['erreur2'])).'" ) </script>';
    }
     
    ?>
    Et le traitement de cette page ce fais sur erreur.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if ( isset($_POST['nom_acc']) && !empty($_POST['pass'])) {
     
    		$base = mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('lcesa', $base);
     
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT count(*) FROM membre WHERE username="'.mysql_escape_string($_POST['nom_acc']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = mysql_fetch_array($req);
     
    		mysql_free_result($req);
    		mysql_close();
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    			header('Location: membre.php');
    		}
    		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    		elseif ($data[0] == 0) {
    			$erreur=" Le mot de passe ou le login est faux";
    			header('Location: log_tech.php?erreur=' . urlencode($erreur) );
    		}
    	}
    	else {
    		$erreur2=" L'un des champs est vide";
    		header('Location: log_tech.php?erreur2=' . urlencode($erreur2) );
    	}
    }
    ?>
    Si ca peut t'aider a mieux comprendre mon tiot probleme ^^
    PS: La c'est le code avec le POST je viens de le changer
    Tu veux vois ce que j'ai fais avec les SESSION ?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans ton premier fichier, ton form et ton input ont le même "name".

    Au passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h2><?php echo''.$_POST ['nom_acc'].''
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h2><?php echo $_POST ['nom_acc']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Et il ne faut pas ?

    Oui je viens de remplacer merki

    Mais bon il ne reconnais toujours pas ma variable lors de la redirection sur la meme page :/
    -----------
    Mais en utilisant un POST c'est normal je trouve non ?
    Psq quand il revient sur ma page log_tech.php bah forcement le POST de index.php a disparu vu quil ne viens plu de la mais qu'il viens de erreur.php et dans erreur.phpil ne vaut rien ..

    Tu me suis dans ce raisonnement étrangement étrange ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour faire transiter des données jusqu'à ta troisieme page tu as deux solutions :
    1 - ajouter les données reçues de ta première page dans ton formulaire de deuxième page.
    2 - utiliser une session
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    oui bah je veux utiliser els sessions mais elels ne fonctionnent pas et j'ignore pourquoi ..

    ---------

    Code de log_tech.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form action="erreur.php" method="post">
    <h2><?php $_SESSION['nom_tech']=$_POST['nom_acc']	; echo $_SESSION ['nom_tech'] ; ?></h2> <input class="bordure" name="login"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    <br />
    <input type="submit" name="connexion" class="ajouter" value="Connexion">
    </form>
    Code de erreur.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if ( isset($_SESSION['nom_acc']) && !empty($_POST['pass'])) {
    		$base = mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('lcesa', $base);
     
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT count(*) FROM membre WHERE username="'.mysql_escape_string($_SESSION['nom_acc']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = mysql_fetch_array($req);
     
    		mysql_free_result($req);
    		mysql_close();
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    			header('Location: membre.php');
    		}
    		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    		elseif ($data[0] == 0) {
    			$erreur=" Le mot de passe ou le login est faux";
    			header('Location: log_tech.php?erreur=' . urlencode($erreur) );
    		}
    	}
    	else {
    		$erreur2=" L'un des champs est vide";
    		header('Location: log_tech.php?erreur2=' . urlencode($erreur2) );
    	}
    }
    ?>

  9. #9
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    j'ai trouvé une doc sur internet sui dit quil faut utiliser la fonction getAuthentification en lui mettant les paramètre du POST mais j'avoue ne pas très bien comprendre ou ils veulent en venir

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que tu as bien démarré tes sessions sur les 2 pages avec session_start(); ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Oui les trois pages meme ^^
    Tout en haut des pages ..

    Voici le code de ma page index.php qui contient les noms des tech :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    include("fonctions.php");
    session_start();
    ini_set('session.gc_maxlifetime', 0);
    ?>
    <html>
        <head><title>LCEsa</title></head>
    	<link href="lcesa.css" media="all" rel="stylesheet" type="text/css" />
     
        <body>
    	<div id="bandeau">
    <h1>LCEsa</h1>
    </div>
    <div id="menu">
    <h2>Selectionner votre nom et prenom : </h2>
    </div>
     
    <div id="contenu">
    <?php
    // on se connecte à MySQL 
    $db = mysql_connect('localhost', 'root', ''); 
     
    // on sélectionne la base 
    mysql_select_db('lcesa',$db); 
     
    // on crée la requête SQL 
    $sql = 'SELECT * FROM technicien'; 
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    ?>
    <form method="post" name="nom_acc2" action="log_tech.php">
    <?php
     
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_array($req)) 
        { 
        // on affiche les informations de l'enregistrement en cours 
    echo '<input type="submit" name="nom_acc" class="btn_machine" value="'.$data['Nom'].' '.$data['Prenom'].'"/>';
        } 	
     
    // on ferme la connexion à mysql 
    mysql_close(); 
     
    ?>
    </form>
    </div>
     
     
    </body>
    </html>
    Ensuite la page sur laquelle s'envoi index.php lorsque que le user clique sur son nom (log_tech.php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     <?php
    include("fonctions.php");
    session_start() ;
    ini_set('session.gc_maxlifetime', 0) ;
     
     ?>
     
    <html>
        <head><title>LCEsa</title></head>
    	<link href="lcesa.css" media="all" rel="stylesheet" type="text/css" />
     
        <body>
    	<div id="bandeau">
    <h1>LCEsa</h1>
    </div>
    <div id="menu">
    <h2>Acces au site : </h2>
    </div>
     
    <div id="contenu">
    <form action="erreur.php" method="post">
    <h2><?php $_SESSION['nom_tech']=$_POST['nom_acc']	; echo $_SESSION ['nom_tech'] ; ?></h2> <input class="bordure" name="login"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    <br />
    <input type="submit" name="connexion" class="ajouter" value="Connexion">
    </form>
     
    <?php
     
    if (isset($_GET['erreur'])){
    echo '<script language="Javascript"> alert ("'.htmlentities(urldecode($_GET['erreur'])).'" ) </script>';
    }
     
    if (isset($_GET['erreur2'])){
    echo '<script language="Javascript"> alert ("'.htmlentities(urldecode($_GET['erreur2'])).'" ) </script>';
    }
     
    ?>
     
     
     
    </div>
    </body>
    </html>
    Et ca c'est la page qui fais le traitement lorsque le user clic sur connexion de ma page de MDP avec le nom afficher au dessus du MDP quil a cliquer précédemment (erreur.php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     <?php
    include("fonctions.php");
    	session_start();
    	ini_set('session.gc_maxlifetime', 0);
    ?>
     
    <html>
        <head><title>LCEsa</title></head>
    	<link href="lcesa.css" media="all" rel="stylesheet" type="text/css" />
     
        <body>
    	<div id="bandeau">
    <h1>LCEsa</h1>
    </div>
    <div id="menu">
    <h2>Acces au site: </h2>
    </div>
     
     
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if ( isset($_SESSION['nom_acc']) && !empty($_POST['pass'])) {
    		$base = mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('lcesa', $base);
     
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT count(*) FROM membre WHERE username="'.mysql_escape_string($_SESSION['nom_acc']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = mysql_fetch_array($req);
     
    		mysql_free_result($req);
    		mysql_close();
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    			header('Location: membre.php');
    		}
    		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    		elseif ($data[0] == 0) {
    			$erreur=" Le mot de passe ou le login est faux";
    			header('Location: log_tech.php?erreur=' . urlencode($erreur) );
    		}
    	}
    	else {
    		$erreur2=" L'un des champs est vide";
    		header('Location: log_tech.php?erreur2=' . urlencode($erreur2) );
    	}
    }
    ?>
     
    </form>
    </body>
    </html>
    J'ai mit le code entier de la page ..
    J'avoue que je ne vois pas du tout ou est le probleme ..
    Je pense quil viendrait du POST et non de la SESSION .. non ?

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà il ne faut mettre ta variable en session que quand elle existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (isset($_POST['nom_acc'])) {
         $_SESSION['nom_tech'] = $_POST['nom_acc'];
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    J'ai des session_start sur mes 3 pages, une foi que j'ai mis la valeurs de $_POST['nom_acc'] dans ma session elle est sencer garder la valeur du post non ?

    J'ai fais un test en disant a session de prendre pour valeur coucou, la ca fonctionne parfaitement elle garde bien en mémoire mon coucou mais des que je met mon POST la bah elle a pas l'air d'aimer, le premier affichage fonctionne mais si je fais un refresh de la page ou si je clique volontairement sur connexion de log_tech.php pour declencher une erreur et me ramener sur la page ca ne fonctionne pas non plus ..

    J'ai vu sur d'autre forum des personnes qui avait le même probleme mais il provenait pour la plupart d'un oublie de session_start ce n'est pas mon cas, je ne comprend pas ou je flanche

  14. #14
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Déjà il ne faut mettre ta variable en session que quand elle existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (isset($_POST['nom_acc'])) {
         $_SESSION['nom_tech'] = $_POST['nom_acc'];
    }
    Tu parle pour quel code ? Le dernier ?



    Comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
     
    	if ((isset($_POST['nom_acc']) && !empty($_POST['pass'])) {
    		$_SESSION['nom_tech'] = $_POST['nom_acc'];
     
    		$base = mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('lcesa', $base);
     
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT count(*) FROM membre WHERE username="'.mysql_escape_string($_SESSION['nom_acc']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = mysql_fetch_array($req);
     
    		mysql_free_result($req);
    		mysql_close();
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    			header('Location: membre.php');
    		}
    		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    		elseif ($data[0] == 0) {
    			$erreur=" Le mot de passe ou le login est faux";
    			header('Location: log_tech.php?erreur=' . urlencode($erreur) );
    		}
    	}
    	else {
    		$erreur2=" L'un des champs est vide";
    		header('Location: log_tech.php?erreur2=' . urlencode($erreur2) );
    	}
    }
    ?>

  15. #15
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    OK c'est bon il la garde maintenant j'ai fais ca dans log_tech. php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h2><?php if (isset($_POST['nom_acc'])) { $_SESSION['nom_tech'] = $_POST['nom_acc']; }	; echo $_SESSION ['nom_tech'] ; ?></h2> <input class="bordure" name="login"><br />
    Par contre avec la BDD ca ne fontionne pas du tout il me dit qu'un des champs est vide alors que le login est automatiquement rempli par la session du coup ...

  16. #16
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Le probleme de validité est resolu en tut cas je poste ailleurs pour la BDD =)

    Merci beacoup de ton aide sabotage

  17. #17
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut session et BDD
    Bonjour a toutes et a tous,
    Alors voila j'ai des sessions qui contiennes des noms de technicien dans trois page différentes, la premiere appelé : index.php contient les noms du techniciens a selectionner, une foi le nom selectionner ca nous envoi sur un page appeler log_tech.php qui affiche le nom selectionné et le mot de passe a rentré .. Masession est donc le login, le nom selectionné précédemment,
    le traitement de tout ca (de la page log_tech.php) se fais sur une page appeler erreur.php ou se situe ma connexion a ma BDD et ma requete SQL ..

    Le probleme est que je n'arrive pas a dire a ma requete et a la BDD que mon logn est ma session donc de comparer ma session avec le nom du tech dans ma table voila ce que j'ai fait dans erreur.php mais qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
     
    	if (isset($_POST['nom_acc']) && !empty($_POST['pass'])) {
    		$_SESSION['nom_tech'] = $_POST['nom_acc'];
     
    		$base = mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('lcesa', $base);
     
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT count(*) FROM membre WHERE username="'.mysql_escape_string($_SESSION['nom_tech']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = mysql_fetch_array($req);
     
    		mysql_free_result($req);
    		mysql_close();
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    			header('Location: membre.php');
    		}
    		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    		elseif ($data[0] == 0) {
    			$erreur=" Le mot de passe ou le login est faux";
    			header('Location: log_tech.php?erreur=' . urlencode($erreur) );
    		}
    	}
    	else {
    		$erreur2=" L'un des champs est vide";
    		header('Location: log_tech.php?erreur2=' . urlencode($erreur2) );
    	}
    }
    ?>
    Voila si quelquun peut m'aider j'accepte volontiers merci a tous pour votre patiente et votre aide

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est normal puisque que tu utilises $_POST['nom_acc'] dans ta condition d'execution de la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (isset($_POST['nom_acc'])) {
         $_SESSION['nom_tech'] = $_POST['nom_acc'];
    }
     
    if(!empty($_POST['pass']) && !empty($_SESSION['nom_tech'])) {
    		$base = mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('lcesa', $base);
                    .....
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Ahhh mais il est passé la mon message mdr !!

    Ah okok masi ma requete est juste comme ca avec le session mit dedans ?

    --------------

    Ma requete n'est pas bonne
    J'ai essayer de faire ceci :
    Mettre ma valeur de session dans une variable et metter la variable dans la requete mais marche pas grrr !!
    Je suis sur la bonne voie ou pas du tout ?

    Pour l'instant j'en suis la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
     
    	if (isset($_POST['nom_acc'])) {
         $_SESSION['nom_tech'] = $_POST['nom_acc'];
    	}
     
    	if(!empty($_POST['pass']) && !empty($_SESSION['nom_tech'])) {
     
    		$base = mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('lcesa', $base);
     
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT count(*) FROM membre WHERE username="'.mysql_escape_string($_SESSION['nom_tech']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = mysql_fetch_array($req);
     
    		mysql_free_result($req);
    		mysql_close();
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    			header('Location: membre.php');
    		}
    		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    		elseif ($data[0] == 0) {
    			$erreur=" Le mot de passe ou le login est faux";
    			header('Location: log_tech.php?erreur=' . urlencode($erreur) );
    		}
    	}
    	else {
    		$erreur2=" L'un des champs est vide";
    		header('Location: log_tech.php?erreur2=' . urlencode($erreur2) );
    	}
    }
    ?>
    J'ai essauer de faire un echo en dessous de ma condition if(!empty..) etc mais il ne rentre pas dedans il va directement sur les else il ne lit meme pas la requete j'ai l'impression

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Regarde ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
             	if (isset($_POST['nom_acc'])) {
    $_POST['connexion'] concerne le deuxième formulaire.
    $_POST['nom_acc'] concerne le premier formulaire.

    Les deux conditions ne vont donc pas l'une dans l'autre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. SESSION - Validité des variables enregistrées
    Par Thom@s dans le forum Langage
    Réponses: 4
    Dernier message: 29/03/2006, 18h05
  3. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 09h24
  4. [web] tester la validiter d'une URL
    Par zebiloute dans le forum Web
    Réponses: 4
    Dernier message: 25/11/2002, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo