2009-10-08 6 views
0

Voici ma dernière partie de connexion qui ne semble pas fonctionner ici. Je pense que j'ai foiré quelque part?Impossible d'obtenir la base de données pour mettre à jour la dernière heure de connexion en utilisant PHP et MySQL?

// Query the database: 
    $q = "SELECT user_id, first_name, user_level FROM users WHERE (email='$e' AND pass=SHA1('$p')) AND active IS NULL";  
    $r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc)); 


    if (@mysqli_num_rows($r) == 1) { // A match was made. 

     // Register the values & redirect: 
     $_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC); 
     $q = "UPDATE users SET last_login = NOW() WHERE (email='$e' AND pass=SHA1('$p')) AND active IS NULL"; 
     // save the info to the database 
     $r= mysqli_query($dbc); 
     mysqli_free_result($r); 
     mysqli_close($dbc); 

Voici le script complet.

<?php 
if (isset($_POST['submitted'])) { 
    require_once (MYSQL); 

    // Validate the email address: 
    if (!empty($_POST['email'])) { 
     $e = mysqli_real_escape_string ($dbc, $_POST['email']); 
    } else { 
     $e = FALSE; 
     echo '<p class="error">You forgot to enter your email address!</p>'; 
    } 

    // Validate the password: 
    if (!empty($_POST['pass'])) { 
     $p = mysqli_real_escape_string ($dbc, $_POST['pass']); 
    } else { 
     $p = FALSE; 
     echo '<p class="error">You forgot to enter your password!</p>'; 
    } 

    if ($e && $p) { // If everything's OK. 

     // Query the database: 
     $q = "SELECT user_id, first_name, user_level FROM users WHERE (email='$e' AND pass=SHA1('$p')) AND active IS NULL";  
     $r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc)); 


     if (@mysqli_num_rows($r) == 1) { // A match was made. 

      // Register the values & redirect: 
      $_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC); 
      $q = "UPDATE users SET last_login = NOW() WHERE (email='$e' AND pass=SHA1('$p')) AND active IS NULL"; 
      // save the info to the database 
      $r= mysqli_query($dbc); 
      mysqli_free_result($r); 
      mysqli_close($dbc); 

      $url = BASE_URL . 'index.php'; // Define the URL: 
      ob_end_clean(); // Delete the buffer. 
      header("Location: $url"); 
      exit(); // Quit the script. 

     } else { // No match was made. 
      echo '<p class="error">Either the email address and password entered do not match those on file or you have not yet activated your account.</p>'; 
     } 

    } else { // If everything wasn't OK. 
     echo '<p class="error">Please try again.</p>'; 
    } 

    mysqli_close($dbc); 

} // End of SUBMIT conditional. 
?> 
+0

seule la mise à jour ne fonctionne pas? le reste est? – halocursed

+0

vous l'avez eu la mise à jour ne fonctionne pas tout le reste est. –

+0

ne devrait-il pas être $ r = mysqli_query ($ dbc, $ q); – halocursed

Répondre

1

Vous êtes probablement même pas en cours d'exécution de la requête,

$q = "UPDATE users SET last_login = NOW() WHERE (email='$e' AND pass=SHA1('$p')) AND active IS NULL"; 
         // save the info to the database 
         $r= mysqli_query($dbc); 

devrait être

$q = "UPDATE users SET last_login = NOW() WHERE (email='$e' AND pass=SHA1('$p')) AND active IS NULL"; 
         // save the info to the database 
         $r= mysqli_query($dbc ,$q); 

et je vous conseille de vérifier si la mise à jour a eu lieu en utilisant affected_rows

1

Peut-être un peu d'une conjecture sauvage, mais cela semble étrange:

$q = "UPDATE users SET last_login = NOW() WHERE (email='$e' AND pass=SHA1('$p')) AND active IS NULL"; 
// save the info to the database 
$r= mysqli_query($dbc); 

La requête de mise à jour est stockée dans $q, mais cette variable $q n'est pas passé comme paramètre à mysqli_query?

Ne devrait-il pas être passé en tant que second paramètre?
-à-dire:

$r= mysqli_query($dbc, $q); 

(C'est ce qui se fait pour la requête select - mais pas pour le update un)

+0

juste pour être sûr J'ai changé la requête de mise à jour à $ q espérons que cela aide –

+0

Je voulais dire que je change la requête de mise à jour à $ u –

Questions connexes