coquille php, besoin d'aide

Petit nouveau ! | 4 Messages

20 avr. 2011, 21:58

Bonjour, voila j'ai besoin d'une info, j'ai un script auquel des visiteurs ont accès de 20h à minuit, grace à un code que je change chaque jour, j'aimerai que le code initialisé pour 20h à minuit se change à 00h01,

j'ai donc écrit cela mais ca ne va pas :

<?php
// Récupère l'heure

$localtime = localtime();

$seconde = $localtime[0];
$minute = $localtime[1];
$heure = $localtime[2];
$tim="$heure$minute$seconde";
echo$tim;
$tim=$tim;
if($tim>=20001 || $tim>21001){
$SecureID= array(
"ACCESSok" // pass1
,"moderatO" // pass2
,"cletopceACCESS" // pass3
,"jeudi" // pass...
);
}else{
$SecureID= array(
"ACCESSko" // pass1
,"moderatO" // pass2
,"cletopceACCESS" // pass3
,"jeudi" // pass...
);
}
print_r($SecureID);
?>

Même quand l'heure n'est pas correct, le mot de passe reste accessOK et non accessKO

Ce qui donne à n'importe quel moment :
21384Array ( [0] => ACCESSok [1] => moderatO [2] => cletopceACCESS [3] => jeudi )

Pourriez-vous m'aiguiller sur ce problème?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2011, 22:12

Ton test if($tim>=20001 || $tim>21001) teste si ta variable $tim est supérieure ou égale au nombre 20001 ou strictement supérieure à 21001

Le problème c'est que à 20h01, ta variable $tim sera égale à 201 qui est inférieure à 20001, du coup tu n'auras plus accès... Ton soucis vient de l'absence des 0 qui préfixent les minutes et les secondes et qui permettraient de faire fonctionner ton test.

Ceci dit, si tu veux juste afficher entre 20h et minuit, un simple if ($heure >= 20) aura le même effet :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

20 avr. 2011, 22:45

Merci, j'ai modifié, <?php
if($heure>=23 || $heure>00){

pour que entre 23h et 00h on est accès au système, uniquement entre 23h et 00h donc, et la en testant à 22h40, je vois s'afficher les valeurs comme si tout était ok et que l'on était donc durant les tranches horaires utilisées.

Si tu as un code mieux à me proposer je suis preneur car je m'en sors plus, ce qui paraissait simple devient complexe d'un coup :(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 avr. 2011, 20:17

Ton test
if($heure>=23 || $heure>00)
est vrai si l'heure est supérieure ou égale à 23 (ok) OU si l'heure est strictement supérieure à 0 .... et en l'occurrence, le nombre des heures est souvent supérieure à 0 ;)

Pour être cohérent avec ton besoin, il faudrait faire le test
if ($heure>=23 || $heure<0)
c'est à dire que ton heure doit être supérieure à 23 ou inférieure à 0 pour que le test soit vrai... sauf que mathématiquement, les heures allant de 0 à 23, elles ne seront jamais inférieures à 0.

Le test
if ($heure>=23)
te permet donc le même contrôle et le même résultat avec un code plus optimisé :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...