Avatar billede franklinpaper Nybegynder
30. juli 2010 - 00:32 Der er 23 kommentarer og
2 løsninger

Ny forside hver dag

Det er ikke sikkert, at den den løsning, jeg nu vil beskrive, skal laves med php.

Hvordan vil et script se ud, der gør følgende?:

Et website får en ny forside hver dag.

Hver nat klokken 00:00 skifter et websites forside. Forsiden fra det forrige døgn skiftes ud med en tilfældig side fra en liste (side1.php, side 2.php, side 3.php). Fra klokken 00:00 til klokken igen bliver 00:00 er forsiden enten side1.php, side2.php eller side3.php.

Mit eneste bud er noget med redirection, da jeg regner med, at man bliver nødt til at have en fast index.php-fil.

På forhånd mange tak for hjælpen.
Avatar billede Slettet bruger
30. juli 2010 - 01:58 #1
For god ordens skyld er det nok smartest altid at have index.whatever som startside - men du kan bruge include til at hente fra en anden, og således kan du undgå at lave redirects eller selv at skrive et system til at generere siden ud fra det skiftende indhold.

Eks. - i index.php:

// lad pages være et associativt array med formen dag => url
$pages = array(
  "33201" => "pages/page1.php",
  "33202" => "pages/page2.php",
  "33203" => "pages/page3.php"
);
$dag = time() % 86400; // 86400 sekunder per døgn
require_once($pages[$dag]); // pages/pageN.php

Gav det mening?
Avatar billede gadensgaard Nybegynder
30. juli 2010 - 09:25 #2
Jeg ville lave et SSI med forsiden, og så lave et cronjob til at skifte hvilken fil der skal inkluderes som det næste.
Avatar billede jantzen88 Nybegynder
30. juli 2010 - 10:39 #3
Jeg ville ikke benytte mig at et cronjob til den slags. Og ville som #1 siger bruge en include.

Dog er det med tiden ikke korrekt da det er pr. sekund der kommer ny forside.

Ville i stedet bruge en date("dmy"); som vil blive til 300710 som er dato for i dag 30-07-10
$pages = array(
  "300710" => "pages/page1.php",
  "300711" => "pages/page2.php",
  "300712" => "pages/page3.php"
);
Så kan man jo altid lave noget smart med noget database så du slev kan redigere hvilke filer på hvilke dage...
Avatar billede Slettet bruger
30. juli 2010 - 13:17 #4
#3
Burde følgende ikke sikre, at den skrifter for hvert døgn og ikke sekund - eller har jeg overset noget?
$dag = time() % 86400; // 86400 sekunder per døgn
Avatar billede franklinpaper Nybegynder
30. juli 2010 - 13:21 #5
hf2ke: Ja, det giver mening. Men jeg er ikke så god til programmering. Er dit script tilstrækkeligt? Hvordan skal et konkret sættes ind i ndex.php.

På forhånd tak.
Avatar billede Slettet bruger
30. juli 2010 - 14:14 #6
Jeg prøver lige at stykke en endelig løsning sammen.
Avatar billede Slettet bruger
30. juli 2010 - 14:27 #7
index.php

<?php
require_once(pages.php);
require_once($pages[floor(time()/86400)]);
?>


pages.php - til listen over sider

<?php

// "day" => "url"
// day: Dage fra 1. januar 1970 (Unix Epoch) til den relevante dag
// url: Relativ eller absolut URL til siden for den relevante dag
// Dag 14820 angiver 30. juli 2010

$pages = array(
  "14820" => "pages/foo.txt", // 30. juli  2010
  "14821" => "pages/bar.txt", // 31. juli  2010
  "14822" => "pages/baz.txt"  // 1.  august 2010
    // ...
);

?>


Til dette eksempel anvendes siderne foo.txt, bar.txt og baz.txt i undermappen pages.
Avatar billede Slettet bruger
30. juli 2010 - 14:28 #8
Forresten:
"Dog er det med tiden ikke korrekt da det er pr. sekund der kommer ny forside." - fra #3
Du har helt ret; rettet.
Avatar billede franklinpaper Nybegynder
30. juli 2010 - 15:59 #9
Hvordan fortsætter jeg listen? Hvilken nummer skal der stå som day, hvis jeg har 20 sider?
Avatar billede franklinpaper Nybegynder
30. juli 2010 - 16:07 #10
Jeg mener bare, om jeg i resten af websitets historie skal skrive et højere og højere tal, eller om der er en form for gentagelse?
Avatar billede Slettet bruger
30. juli 2010 - 16:40 #11
Tallet stiger uendeligt, så 14823 er den 14822. dag fra Epoch, og 8394756873945689734675 er den 8394756873945689734675. dag fra Epoch :)
Avatar billede Slettet bruger
30. juli 2010 - 16:41 #12
Rettelse:
Tallet stiger uendeligt, så 14823 er den 14823. dag fra Epoch, og 8394756873945689734675 er den 8394756873945689734675. dag fra Epoch :)
Desuden får PHP nok svært ved at håndtere så store tal, men det når næppe at blive relevant!
Avatar billede franklinpaper Nybegynder
30. juli 2010 - 17:40 #13
Jeg har sat det op nu, og det virker ikke. Siden til d. 30. juli kommer ikke frem.
Avatar billede franklinpaper Nybegynder
30. juli 2010 - 18:03 #14
Når jeg går direkte ind på pages.php, virker det heller ikke. Problemet er altså sandsynligvis ikke index-filen.

Jeg har lavet det præcist, som du har beskrevet.
Avatar billede Slettet bruger
30. juli 2010 - 21:58 #15
Det er spøjst, for det virker her.
At loade pages.php bør ikke virke, da den i sig selv intet foretager sig foruden at oprette et array med siderne (den loader ikke indholdet fra den passende).

Kan du skrive dit filhierarki her, så jeg kan se det?
Avatar billede franklinpaper Nybegynder
30. juli 2010 - 22:24 #16
NUMMER 1) index.php ligger på http://www.vikingworkout.dk/kogebog

index.php ser præcis sådan ud:

<?php
require_once(http://www.vikingworkout.dk/kogebog/pages.php);
require_once($pages[floor(time()/86400)]);
?>



NUMMER 2) pages.php ligger i mappen "kogebog" sammen med index.php og ser sådan ud:

<?php

// "day" => "url"
// day: Dage fra 1. januar 1970 (Unix Epoch) til den relevante dag
// url: Relativ eller absolut URL til siden for den relevante dag
// Dag 14820 angiver 30. juli 2010

$pages = array(
  "14820" => "http://www.vikingworkout.dk/kogebog/pages/spaghetti.php", // 30. juli  2010
  "14821" => "http://www.vikingworkout.dk/kogebog/pages/koteletter.php", // 31. juli  2010
  "14822" => "http://www.vikingworkout.dk/kogebog/pages/kyllingelaar.php"  // 1.  august 2010
    // ...
);

?>


NUMMER 3) spaghetti.php, koteletter.php og kyllingelaar.php ligger i i mappen "pages", der ligger i mappen "kogebog".
Avatar billede Slettet bruger
31. juli 2010 - 00:42 #17
Prøv lige at klikke på spaghetti, koteletter og kyllingelaar. URL'erne lader til at være forkerte ;)
Avatar billede franklinpaper Nybegynder
31. juli 2010 - 00:49 #18
Det er, fordi anførselstegnet er gjort til en del af linket.
Avatar billede Slettet bruger
31. juli 2010 - 00:53 #19
Prøv lige at lave en fil med følgende indhold, smutte ind på den og skrive her, hvad den siger:

<?php
echo "seconds: ".time()."<br>days: ".floor(time()/86400);
?>
Avatar billede franklinpaper Nybegynder
31. juli 2010 - 01:05 #20
seconds: 1280531096
days: 14820
Avatar billede Slettet bruger
31. juli 2010 - 01:31 #21
Så er jeg desværre 100 % clueless.
Avatar billede franklinpaper Nybegynder
31. juli 2010 - 01:59 #22
Ærgeligt. Jeg lukker tråden.
Avatar billede franklinpaper Nybegynder
31. juli 2010 - 02:01 #23
Du kan få 100 point for din aktive deltagelse, hvis du markerer et indlæg som svar.
Avatar billede franklinpaper Nybegynder
31. juli 2010 - 02:19 #24
Du kan få 100 point for din aktive deltagelse, hvis du tilføjer et indlæg som et svar.
Avatar billede Slettet bruger
31. juli 2010 - 10:13 #25
Fint, men du kan da også bare vente og se, om nogen andre kan svare på det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester