J'ai un script de connexion et je souhaite insérer la dernière connexion dans la table des membres et la mettre à jour à chaque fois qu'un membre se connecte, mais j'ai des problèmes. Le dernier login n'est pas inséré à chaque fois qu'un utilisateur se connecte. Voici mon code

if(isset($_POST['submit'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

    if($user->login($username,$password)){
        $_SESSION['username'] = $username;

        try{
            $stmt = $db->prepare('UPDATE admin  SET login_date = now()');
        }

        catch (PDOExeception $e){
            $error[] = $e->getMessage();
        }
        header('Location: index.php');
        exit;
    } 
  else {      
           $error[] =              
                      '<div class="alert alert-danger fade in text-center">
                           <a href="#" class="close" data-dismiss="alert">&times;</a>
                           <strong>Error!</strong> 
                            Wrong username or password or your account has not been activated.
                      </div>';
    }

}
0
Sam Banana 25 juil. 2017 à 16:43

2 réponses

Meilleure réponse

Il semble y avoir deux erreurs avec votre code ci-dessus.

  1. Le UPDATE n'a pas de clause where donc il mettra à jour login_date pour toutes les lignes de la table admin.

  2. Vous créez un objet PDOStatement en appelant prepare() sur $db mais n'exécutez jamais l'instruction. Vous devez exécuter l'instruction en appelant $stmt->execute() après avoir déclaré $stmt.

Votre code devrait ressembler à:

if(isset($_POST['submit'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

    if($user->login($username,$password)){
        $_SESSION['username'] = $username;

        try{
            $stmt = $db->prepare('UPDATE admin  SET login_date = now() WHERE x = y');
            $stmt->execute();
        }

        catch (PDOExeception $e){
            $error[] = $e->getMessage();
        }
        header('Location: index.php');
        exit;
    } else {      
           $error[] =              
                      '<div class="alert alert-danger fade in text-center">
                           <a href="#" class="close" data-dismiss="alert">&times;</a>
                           <strong>Error!</strong> 
                            Wrong username or password or your account has not been activated.
                      </div>';
    }

}
3
Matt Rink 25 juil. 2017 à 13:52
    if(!isset($_SESSION)){
    session_start();
}

$username = $_SESSION['username'];

    require_once('connection.php');

    $sql = "INSERT INTO [test].[dbo].[user_log]
           ([username]
           ,[login_date]
           )
     VALUES
           ('$_SESSION[username]'
           ,GETDATE()
           )";
    $result = sqlsrv_query($conn,$sql);

    if ($result === false ) { echo "Error in query "; 
    exit(); 
    }

J'ai eu le même problème que j'ai résolu en utilisant des codes simples comme ceux-là

-1
Sam Banana 25 juil. 2017 à 15:55