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 :

Changer le contenu de la variable $_SESSION pendant la session ouverte


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Points : 12
    Points
    12
    Par défaut Changer le contenu de la variable $_SESSION pendant la session ouverte
    Bonjour à tous,

    Je ne sais pas mon titre est bien explicite...

    Voilà pour se mettre dans le contexte, je développe une appli web. Cette dernière contient des session d'utilisateur. Actuellement je suis entrain de dev, l'option permettant de modifier les informations de son profile d'utilisateur, mais je peine sur un point : permettre de changer son identifiant. voilà mon code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $updt=$connect->prepare('UPDATE utilisateurs SET identifiant = :identifiant WHERE identifiant=:identifiant');
    $updt->execute(array(
    'identifiant'=>$identifiant,
    'identifiant'=>$utilisateurConnecte
    ));
    $_SESSION['identifiant'] = $_POST['identifiant'];

    Est-possible de faire ce que je fais ? (visiblement non puisque ça plante quand je teste...)
    Je vous avoue que je sais pas trop comment m'y prendre

    Merci d'avance à ceux qui m'éclaireront sur mon souci !

  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
    Tu ne peux pas avoir deux marqueurs avec le meme nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $updt=$connect->prepare('UPDATE utilisateurs SET identifiant = :new_identifiant WHERE identifiant= :old_dentifiant');
    $updt->execute(array(
    ':new_identifiant'=>$identifiant,
    ':old_identifiant'=>$utilisateurConnecte
    ));
    active les erreurs PDO au passage.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 314
    Points : 217
    Points
    217
    Par défaut
    la variable globale n'est défini que si le script encours d’exécution contient au début : session_start() ou session_name ().
    pour qu'ellesoit disponible il faut session_start() dans tous les scripts où tu fais appel à $_SESSION

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    J'ai bien un session_start() voici le code en entier :
    Code php : 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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    function validationProfile (){
        include('../session/session-start.php');
        include('../../config/connexion-bdd.php');
        $nom = $_POST['nom'];
            $regexNom = '/^[a-zA-Z -]+$/'; 
        $prenom = $_POST['prenom'];
            $regexPrenom = '/^[a-zA-Z -]+$/'; 
        $email = $_POST['email'];
            $regexEmail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/'; 
        $identifiant = $_POST['identifiant'];
            $regexIdentidiant = '/^[a-z0-9]+$/';
        $utilisateurConnecte=$_POST['utilisateur-connecte'];
     
        $req = 'SELECT nom, prenom, email, identifiant FROM utilisateurs WHERE identifiant="'.$utilisateurConnecte.'"';
        $res= $connect->query($req);
     
        if ($row = $res->fetch(PDO::FETCH_ASSOC)){
            if(preg_match($regexNom, $nom)&& preg_match($regexPrenom, $prenom) && preg_match($regexEmail,$email) && preng_match($regexIdentidiant, $identifiant))
                {
                    if ($nom <> $row['nom'])
                        {
     
                            $casseNom = strtoupper($nom);
                            echo $casseNom.' est different de '.$row['nom'];
                            $updt=$connect->prepare('UPDATE utilisateurs SET nom = :nom WHERE identifiant=:identifiant');
                            $updt->execute(array(
                            'nom'=>$casseNom,
                            'identifiant'=>$utilisateurConnecte
                            ));
                        }
                    else if ($prenom <> $row['prenom'])
                        {
                            $updt=$connect->prepare('UPDATE utilisateurs SET prenom = :prenom WHERE identifiant=:identifiant');
                            $updt->execute(array(
                            'prenom'=>$prenom,
                            'identifiant'=>$utilisateurConnecte
                            ));
                        }
                    else if ($email <> $row['email']) 
                        {
                            $updt = $connect->prepare('UPDATE utilisateurs SET email = :email WHERE identifiant=:identifiant');
                            $updt->execute(array(
                            'email' => $email,
                            'identifiant' => $utilisateurConnecte
                            ));
                        } 
                    else 
                        {
                            $updt=$connect->prepare('UPDATE utilisateurs SET identifiant = :identifiant WHERE identifiant=:old_identifiant');
                            $updt->execute(array(
                            'identifiant'=>$identifiant,
                            'old_identifiant'=>$utilisateurConnecte
                            ));
                            $_SESSION['identifiant'] = $_POST['identifiant']; 
     
                        }
                    echo '<meta charset="utf-8"><body onLoad="alert(\'Le mot de passe à bien été changé\')">';
                    echo '<meta http-equiv="refresh" content="0;URL=profile.php">';
                }
            else
                {
                    echo 'error';
                }
        }
     
    }

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $utilisateurConnecte=$_POST['utilisateur-connecte'];
    $req = 'SELECT nom, prenom, email, identifiant FROM utilisateurs WHERE identifiant="'.$utilisateurConnecte.'"';
    On n'insere pas directement des données utilisateur dans une requête.
    Cette requête peut être exploitée pour une injection malveillante.

    Pour le reste, il faut que tu fasses un minimum de debugage.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    juste pour le principe

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE utilisateurs SET identifiant = :new_identifiant WHERE identifiant= :old_dentifiant

    ca ne peu pas fonctionner sur un model ou tu utilise des clés ...


    il faudrait pour que cette requête soit possible vérifier que new_identifiant n'existe pas dans la table
    Conception / Dev

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    ascito -> C'est pas faut et ça je n'y ai pas pensé ...

Discussions similaires

  1. Onclick : changer le contenu par une variable
    Par Anonyme1784 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 24/12/2013, 11h05
  2. Changer la valeur d'une variable d'une autre session
    Par Istrella dans le forum Langage
    Réponses: 7
    Dernier message: 06/08/2013, 09h52
  3. Réponses: 3
    Dernier message: 24/03/2011, 15h58
  4. Comment changer le contenu d'une variable globale ?
    Par touzack dans le forum Scheme
    Réponses: 3
    Dernier message: 04/05/2009, 14h51
  5. Réponses: 1
    Dernier message: 04/05/2009, 02h56

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