1

すべてのユーザーがログインしないようにしようとしているので、開始時刻と出発時刻をmysqlに登録しました。ログインするときは、最初にログインとパスワードがデータベースと同じかどうかを確認します。

同じ場合は、時刻に問題がないかどうかを確認し、問題がない場合はエラーを表示します。ただし、すべての場合でエラーは表示されませんが、ユーザーが間違った時間のために許可されていない場合でも、ユーザーがログオンするたびにログオンします。

私は次のコードを書きました:

ログイン用:

 $sql='SELECT * FROM `gestionnaire` WHERE `login`="'.mysql_real_escape_string($_POST['pseudo']).'"';
     $req=mysql_query($sql) or die;
     $data=mysql_fetch_assoc($req); 

      // si on obtient une réponse, alors l'utilisateur est un membre
      if ($data['login']==$_POST['pseudo'] AND md5($_POST['pass'])==$data['pass_md5']) { 
        if(date("H:i")<$data['depart'] OR date("H:i")>$data['depart'])
        {
             $erreur = '<font color=red>Vous n\'&ecirc;tes pas autoris&eacute; &agrave; vous connecter, revenez &agrave; '.$data['depart'].'.</font>'; 
        }

        else{
        }
         session_start(); 
         $sql="INSERT INTO `session` SET
`temps` = now(),
`login`='".$data['login']."',
`mouvement`='1'";  
mysql_query($sql) or die;

          $_SESSION['id'] = $data['id']  ;
          $users['id'] = $_SESSION['id'] ;
          $_SESSION['login'] = $data['login'];
         header('Location: GESTION/index.php'); 
         exit(); 
      } 
      // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
      elseif ( md5($_POST['pass'])!=$data['pass_md5']) { 
         $erreur = '<font color=red>Compte non reconnu.</font>'; 
      } 
      // sinon, alors la, il y a un gros problème :)
      else { 
         $erreur = '<font color=red>Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.</font>'; 
      } 
   } 
   else { 
      $erreur = '<font color=red>Au moins un des champs est vide.</font>'; 
   }  
}  
}
4

2 に答える 2

3

あなたの問題は、if(date("H:i")<$data['depart'] OR date("H:i")>$data['depart'])phpがこのタイプの比較を行うことができないためにあります。

文字列の時刻をUNIXタイムスタンプの数値表現に変換する必要があります。

したがって、$data['depart']=== '17:30'(5:30 pmの場合)次のようなことを行う必要があります。

$today_depart = strtotime(date('Y-m-d ').$data['depart'].':00');
$time = time();

今、あなたはすることができますif($time < $today_depart...

于 2012-10-26T14:59:48.603 に答える
2

Je ne comprend pas francaisですが、あなたの発言は次のように要約ifされます。

if {

} else {
    exit();
} else if {

} else {

}

また、Anthonyが示したように、PHPは、日付を比較するのが非常に面倒です。開始時刻と終了時刻はすでにデータベースにあるためWHERE NOW() BETWEEN a AND b、クエリでまたは同様の構成を使用することをお勧めします。

于 2012-10-26T15:00:03.860 に答える