Une page différente suivant l'heure

Petit nouveau ! | 5 Messages

21 août 2009, 11:43

Bonjour.

Je cherche actuellement à ajouter une fonctionnalité à mon site. J'aimerais que suivant l'heure, la page d'accueil soit différente.

Par exemple : On arrive sur "index.php' -> Si il est entre 00:00 et 00:30 on est envoyé automatiquement sur "error.html" et le reste du temps sur "index.html"

Je ne peux utiliser l'URL Rewriting étant chez Free.

Merci d'avance.

eLaboile

Eléphant du PHP | 369 Messages

21 août 2009, 12:24

Bonjour.
Je cherche actuellement à ajouter une fonctionnalité à mon site. J'aimerais que suivant l'heure, la page d'accueil soit différente. Par exemple : On arrive sur "index.php' -> Si il est entre 00:00 et 00:30 on est envoyé automatiquement sur "error.html" et le reste du temps sur "index.html"
Je ne peux utiliser l'URL Rewriting étant chez Free.
Merci d'avance.
eLaboile
Salut, voici un model que tu peux exploiter/adapter à tes besoins
<?php
$heure = (int)date('h');
$page = "wakeup.htm";
if ($heure >= 20 && $heure < 8) $page = "dodo.htm";
?>
ou celui la
<?php
 $heure = (int)date('h');
 $name = Array("minuit", "1am", "2am"); // A toi de compléter le tableau
 $page = $name[$heure].".htm";
?>
Comme tu le constates plus haut ca ne fait pas tout à fait ce que tu veux mais tu
peux sans soucis solutionner ton problème grace à date()

http://www.manuelphp.com/php/function.date.php

Un problème : Moults solutions lol

@+ bon code ;)

PS: Je sais j'aurai pus donner la réponse directement mais... j'aime pas le "tout maché" lol

Petit nouveau ! | 5 Messages

21 août 2009, 12:58

En suivant le premier modèle (Le deuxième m'aparaissant bien plus compliqué...) et en l'adaptant j'ai donc ceci :
<?php
$heure = (int)date('H:i:s');
$page = "index.html";
if ($heure >= 00:00:00 && $heure < 00:29:59) $page = "error.html";
?>
Mais la page m'affiche ceci :

Code : Tout sélectionner

Parse error: syntax error, unexpected ':' in /mnt/143/sda/4/1/.../index.php on line 4
Je comprends d'où vient le problème, mais si les ':' ne sont pas acceptés, comment faire pour que le modèle "H:i:s" soit bien suivi ?

Merci d'avoir répondu.

Eléphant du PHP | 369 Messages

21 août 2009, 13:39

En suivant le premier modèle (Le deuxième m'aparaissant bien plus compliqué...)
et en l'adaptant j'ai donc ceci :
<?php
$heure = (int)date('H:i:s');
$page = "index.html";
if ($heure >= 00:00:00 && $heure < 00:29:59) $page = "error.html";
?>
Mais la page m'affiche ceci :

Code : Tout sélectionner

Parse error: syntax error, unexpected ':' in /mnt/143/sda/4/1/.../index.php on line 4
Je comprends d'où vient le problème, mais si les ':' ne sont pas acceptés, comment faire pour que le modèle "H:i:s" soit bien suivi ?
Merci d'avoir répondu.
Re,
Enfait ton action correspond à (en gros) additionner et comparer une liste composé
de chiffre et caractères. Et ca, c'est pas possible, ca écquivaut à comparer
torchons et serviettes[*].

Te faut séparer les éléments puis comparer de maniere unique chaque élément.

Est-ce que les [heures sont = à 0] ET [0 > minutes < 30] ce qui peut s'écire ainsi:
$H = (int)date('H');
$M = (int)date('i');

if ($H == 0 && ( $M >0 | $M  < 30) )
Y a plus compexe si tu souhaites une comparaison de type 00:00:00 (par exemple via les preg_)
mais peu d'intérêt. ...en tout cas de mon point de vu

[*] Bien que tu puisses faire ceci
if (date('H:i:s') == "00:00:00") ...
@+ ;)

Eléphant du PHP | 369 Messages

21 août 2009, 13:44

En suivant le premier modèle (Le deuxième m'aparaissant bien plus compliqué...)
et en l'adaptant j'ai donc ceci :
<?php
$heure = (int)date('H:i:s');
$page = "index.html";
if ($heure >= 00:00:00 && $heure < 00:29:59) $page = "error.html";
?>
Mais la page m'affiche ceci :

Code : Tout sélectionner

Parse error: syntax error, unexpected ':' in /mnt/143/sda/4/1/.../index.php on line 4
Je comprends d'où vient le problème, mais si les ':' ne sont pas acceptés, comment faire pour que le modèle "H:i:s" soit bien suivi ?
Merci d'avoir répondu.
Re,
Enfait ton action correspond à (en gros) additionner et comparer une liste composé
de chiffre et caractères. Et ca, c'est pas possible, ca écquivaut à comparer
torchons et serviettes[*].

Te faut séparer les éléments puis comparer de maniere unique chaque élément.

Est-ce que les [heures sont = à 0] ET [0 > minutes < 30] ce qui peut s'écire ainsi:
$H = (int)date('H');
$M = (int)date('i');

if ($H == 0 && ( $M >0 | $M  < 30) )
Y a plus compexe si tu souhaites une comparaison de type 00:00:00 (par exemple via les preg_)
mais peu d'intérêt. ...en tout cas de mon point de vu

[*] Bien que tu puisses faire ceci
if (date('H:i:s') == "00:00:00") ...
@+ ;)
PS: Oups, tu peux aussi utiliser le temps Unix et la la comparaison peut-être effectuée de maniere
globale mais un brin plus complexe... et plus long ;) http://www.manuelphp.com/php/function.time.php

Petit nouveau ! | 5 Messages

21 août 2009, 15:12

J'ai fais comme vous le proposiez. Voici le code :
<?php
$H = (int)date('H');
$M = (int)date('i');

$page = "index.html";

if ($H == 0 && ( $M >0 | $M  < 30) ) $page = "error.html";
?>
Etrangement, la page en question reste immuablement vide. (index.php)

J'ai aussi essayé comme ceci :
<?php
$H = (int)date('H');
$M = (int)date('i');

if ($H == 0 && ( $M >0 | $M  < 30) ) $page = "error.html";
else $page = "index.html";
?>
Il faut aussi savoir que ma page .php ne contient que ça et que j'ai quel que soit le code une page vide

Eléphant du PHP | 369 Messages

21 août 2009, 15:42

Re,
J'ai fais comme vous le proposiez. Voici le code :
[...]
Il faut aussi savoir que ma page .php ne contient que ça et que j'ai quel que soit le code une page vide
<?php
 // Bloc qui marche
 //
 //$h = date('H');
 //$m = date('i');
 //$page = "index.php";
 //
 //if ($h == 0 && ($m > 0 && $m < 30)) $page = "toto.php";

 // Simulation heure minte

 $h = 0;
 $m = 15;
 $page = "index.php";
 if ($h == 0 && ($m > 0 && $m < 30)) $page = "toto.php";
 echo $h." // ".$m."<br>";
 echo $page."<br>";

 $h = 1;
 $m = 15;
 $page = "index.php";
 if ($h == 0 && ($m > 0 && $m < 30)) $page = "toto.php";
 echo $h." // ".$m."<br>";
 echo $page."<br>";

 $h = 0;
 $m = 31;
 $page = "index.php";
 if ($h == 0 && ($m > 0 && $m < 30)) $page = "toto.php";
 echo $h." // ".$m."<br>";
 echo $page."<br>";

 $h = 1;
 $m = 15;
 $page = "index.php";
 if ($h == 0 && ($m > 0 && $m < 30)) $page = "toto.php";
 echo $h." // ".$m."<br>";
 echo $page."<br>";
?>
Voili, voilou... Ca marche nickel, le code est (biensur) crade mais bon...
J'aurai pus passer par un test unaire et... rah, ok, allez je le fais lol
<?php
 [...]
 $h = date('H');
 $m = date('i');

 // A toi d'assigner le nom réèl des pages...
 //
 $page = ($h == 0 && ($m > 0 && $m < 30)) ? $page = "dodo.php" : $page = "wakeup.php";

 // L'emplacement de la page... utilité: à toi de voir...
 //
 $directory = "./pages/";

 // L'appel de la page
 //
 if (file_exist("./".$page)) require_once($directory.$page);
 else die("File not found !");
 [...]
?>
Souviens-toi que ce n'est qu'une piste, la solution parfaite viendra de toi ;)

@+ ;)

PS: J'ai pas testé le dernier paraph mais à vu de nez il marche

Petit nouveau ! | 5 Messages

21 août 2009, 16:36

Ca marche à merveille merci beaucoup !

Par contre, il y a une erreur dans ton code, c'est
if (file_exists())
avec un s.

Merci de ton aide.

eLaboile

Eléphant du PHP | 369 Messages

21 août 2009, 16:48

Ca marche à merveille merci beaucoup !
Par contre, il y a une erreur dans ton code, c'est
if (file_exists())
avec un s.
Merci de ton aide.
eLaboile
Vi, j'avais pas testé le dernier paragraphe, juste jugé à vu de nez mais...
mon "bout de nez" doit être un peu rouillé lol

Le principal c'est que ca marche

@+ ;)

Eléphant du PHP | 199 Messages

21 août 2009, 17:12

Pourquoi ne pas utiliser un href(location:index.php) en fonction de l'heure?
Ainsi tu auras une redirection en fonction de l'heure.

Petit nouveau ! | 5 Messages

21 août 2009, 18:33

Par curiosité, comment effectuer ceci ? Là je ne vois pas, étant un vrai débutant en la matière

Eléphant du PHP | 199 Messages

21 août 2009, 19:21

<?php
//fontion header pour la redirection
header('location: test.php');
//la on redirige vers la page test
?>
Par contre il faut mettre du header avant du html sinon il y a conflit.

Eléphant du PHP | 369 Messages

21 août 2009, 19:41

Par curiosité, comment effectuer ceci ? Là je ne vois pas, étant un vrai débutant en la matière
C'est une redirection, autrement dit rien à voir avec include/require, ...etc.
Ca peut, selon les cas, être une solution mais attention à bien garder en tête que les meta
doivent, impérativement, précéder tous accès au serveur et d'autres points:

http://www.php.net/manual/fr/function.header.php

Oublie pas c'est une redirection, hein, pas un chargement ;)

@+ ;)