2010-03-17 10 views
0

J'utilise le code ci-dessous pour une connexion. Cela fonctionne très bien, mais lorsque j'essaie de me connecter pour la première fois après avoir allumé mon ordinateur, cela ne fonctionne que la deuxième fois que je clique sur le bouton "Connexion". Toute idée de comment je peux le faire ne nécessite pas de cliquer sur le bouton "Connexion" deux fois dans cette situation?Avoir à appuyer deux fois sur le bouton de connexion au site après avoir allumé l'ordinateur pour la première fois

Merci à l'avance,

John

if (!isLoggedIn()) 
{ 

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

     if (checkLogin($_POST['username'], $_POST['password'])) 
     { 
      show_userbox(); 
     } else 
     { 
      echo "Incorrect Login information !"; 
      show_loginform(); 
     } 
    } else 
    { 

     show_loginform(); 
    } 

} else 
{ 

    show_userbox(); 
} 


function show_loginform($disabled = false) 
{ 

    echo '<form name="login-form" id="login-form" method="post" action="./index.php"> 



    <div class="usernameformtext"><label title="Username">Username: </label></div> 
    <div class="usernameformfield"><input tabindex="1" accesskey="u" name="username" type="text" maxlength="30" id="username" /></div> 


    <div class="passwordformtext"><label title="Password">Password: </label></div> 
    <div class="passwordformfield"><input tabindex="2" accesskey="p" name="password" type="password" maxlength="15" id="password" /></div> 


    <div class="registertext"><a href="http://www...com/sandbox/register.php" title="Register">Register</a></div> 
    <div class="lostpasswordtext"><a href="http://www...com/sandbox/lostpassword.php" title="Lost Password">Lost password?</a></div> 

    <p class="loginbutton"><input tabindex="3" accesskey="l" type="submit" name="cmdlogin" value="Login" '; 
    if ($disabled == true) 
    { 
     echo 'disabled="disabled"'; 
    } 
    echo ' /></p></form>'; 


} 

EDIT: Voici une autre fonction qui est utilisée.

function isLoggedIn() 
{ 

    if (session_is_registered('loginid') && session_is_registered('username')) 
    { 
     return true; // the user is loged in 
    } else 
    { 
     return false; // not logged in 
    } 

    return false; 

} 

EDIT II: Voici une autre fonction qui est utilisée:

function checkLogin($u, $p) 
    { 
    global $seed; 

     if (!valid_username($u) || !valid_password($p) || !user_exists($u)) 
     { 
      return false; did not exist 
     } 


     $query = sprintf(" 
      SELECT loginid 
      FROM login 
      WHERE 
      username = '%s' AND password = '%s' 
      AND disabled = 0 AND activated = 1 
      LIMIT 1;", mysql_real_escape_string($u), mysql_real_escape_string(sha1($p . $seed))); 
     $result = mysql_query($query); 

     if (mysql_num_rows($result) != 1) 
     { 
      return false; 
     } else 
     { 

      $row = mysql_fetch_array($result); 

      $_SESSION['loginid'] = $row['loginid']; 

      $_SESSION['username'] = $u; 

      return true; 
     } 


return false; 
} 
+0

Que fait 'isLoggedIn()'? –

+0

fonction isLoggedIn() { si (session_is_registered ('loginid') && session_is_registered ('nom d'utilisateur')) { return true; // l'utilisateur est connecté } else { return false; // non connecté } return false; } – John

Répondre

0

Ceci est une question ancienne et certaines de ces fonctions sont même supprimé avec la dernière php - session_is_registered. Mais je suis tombé sur cette question et je voulais deviner la réponse. Dans le premier formulaire de connexion, il définit la session, mais la session est vérifiée dans show_user_box, ce qui l'amène à ne pas afficher. Une fois la session définie, vous pouvez vous connecter et voir la boîte utilisateur. J'aurais aimé que chaque fonction soit là pour que je puisse avoir tous les outils pour résoudre le casse-tête. C'est plutôt amusant de regarder l'ancien code.

Questions connexes