WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   En viss sida visas en viss tidpunkt (https://www.wn.se/forum/showthread.php?t=1050092)

JeZZifelt 2011-09-19 14:59

En viss sida visas en viss tidpunkt
 
Jag har en väldigt enkel beställningssida som jag skulle vilja göra "inaktiv" under en viss tid på dygnet så att inga beställningar kan göras.
Enklast skulle ju vara om man bara kunde skicka besökaren till en annan sida än själva beställningssidan om klockan är mellan t.ex. 22-09 där man kan berätta för besökaren att det inte är möjligt att lägga en beställning just nu, men att man "vanlig tid" skickas normalt till den vanliga beställningssidan.
Går detta att lösa på något smidigt vis?

Allt jag hittar när jag söker på Google är hur man skickar vidare efter en speciell tid, men det är inte det jag söker - jag vill alltså först kontrollera tiden och om tiden är någonstans i mitt valda intervall så ska en annan sida anropas. Förstår ni mig? :)

JeZZifelt 2011-09-19 15:42

Hittade min lösning tillslut:

<script type="text/javascript">
<!--
time = new Date();
hours = time.getHours();
starthour = 22
endhour = 10
if(hours >= starthour && hours < endhour)
{
location.href = "offline.php"
}
else
{

}


//-->
</script>

digiArt 2011-09-19 15:42

Hej!

Det är fullt möjligt.

Pseudokod:

If CurrentTime >= 22:00 or CurrentTime <= 09:00
RedirectToPage("Page")
End If

Sen är det helt beroende på programspråk hur detta ser ut. Bästa är att göra detta på serversidan.

captaindoe 2011-09-19 19:51

JeZZifelt, om du använder den koden som du skrev ovan så kommer alla som har javascript inaktiverat i sin webbläsare ändå komma in på beställningssidan.

Måste göras på serversidan som digiArt skrev.

JeZZifelt 2011-09-20 07:56

Citat:

Ursprungligen postat av digiArt (Inlägg 20418023)
Hej!

Det är fullt möjligt.

Pseudokod:

If CurrentTime >= 22:00 or CurrentTime <= 09:00
RedirectToPage("Page")
End If

Sen är det helt beroende på programspråk hur detta ser ut. Bästa är att göra detta på serversidan.

Tack! Jag använder php på beställningssidan.

Jag skulle även vilja att beroende på vilken veckodag är sidan "inaktiv" under olika tidpunkter.

Hittade detta, skulle det kunna funka?:

<?php
$hour = date('G');
$minute = date('i');
$day = date('w');
$m = $hour * 60 + $minute; // Minutes since midnight.
if(
$day == 6 // Saturday...
&& $m >= 735 // ... after 12:15...
&& $m <= 1035 // ... but before 17:15...
) header("Location: saturdayafternoon.php");
else if(
$day == 4 // Wednesday...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: wednesdaynight.php");
?>

Infogar jag denna koden överst på de sidor det gäller eller hur gör jag?

Citat:

Ursprungligen postat av captaindoe (Inlägg 20418059)
JeZZifelt, om du använder den koden som du skrev ovan så kommer alla som har javascript inaktiverat i sin webbläsare ändå komma in på beställningssidan.

Måste göras på serversidan som digiArt skrev.

Jaha, det var ju inte bra! Tack för upplysningen. Hittade ovanstående kod i php, men vet inte hur jag ska lägga in den för att fungera som bäst?

JeZZifelt 2011-09-20 08:39

Har krånglat till det för mig och nu bestämt att det ska vara tre olika sidor att skifta mellan, jag kallar dem "online", "offline" och "halvonline". ;)
Eventuellt skulle jag vilja kunna lägga till några enskilda datum då det är "offline" hela dagen (och nu pratar vi alltså om datum och inte en viss veckodag), t.ex. på julafton.

Har gjort ett litet schema över vilka tider jag vill ska gälla för de olika sidorna för lite bättre översikt:
Mån-Tors:
00.00-11.00 Offline
11.00-16.00 Halvonline
16.00-21.00 Online
21.00-24.00 Offline

Fre-Lör
00.00-11.00 Offline
11.00-16.00 Halvonline
16.00-22.00 Online
22.00-24.00 Offline

Sön
00.00-12.00 Offline
12.00-20.00 Online
20.00-24.00 Offline

Försökte modifiera koden själv, men har inte ändrat rätt tiden än, men tänkte att kanske något i denna stilen skulle funka? Dock känns det lite långt, det kanske går att förenkla på något vis?

<?php
$hour = date('G');
$minute = date('i');
$day = date('w');
$m = $hour * 60 + $minute; // Minutes since midnight.
if(
$day == 1 // Måndag...
&& $m >= 735 // ... after 12:15...
&& $m <= 1035 // ... but before 17:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 1 // Måndag...
&& $m >= 735 // ... after 12:15...
&& $m <= 1035 // ... but before 17:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 2 // Tisdag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 2 // Tisdag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 3 // Onsdag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 3 // Onsdag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 4 // Torsdag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 4 // Torsdag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 5 // Fredag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 5 // Fredag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 6 // Lördag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 6 // Lördag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
else if(
$day == 0 // Söndag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");
$day == 0 // Söndag...
&& $m >= 1155 // ... after 19:15...
&& $m <= 1335 // ... but before 22:15...
) header("Location: http://www.minsida.se/bestallning/offline.php");

?>

Förstår ni min idé, trots att varken tidsangivelser eller rätt länkar är inlagda?
Ni som kan det här kanske har en mycket bättre lösning och även kan tala om för mig hur jag kan spärra ett helt datum? Förstår att det inte borde vara så svårt, men än en gång så ger mig i Google det jag söker! ;) Får bara fram JavaScript som redirectar med datumangivelse. Jag vill ju ha php!? :S

Jake.Nu 2011-09-20 10:36

Här har du något snabbt ihopslängt som bör funka som utgångsläge.
Jag har bara lagt in Mån-Tor.

PHP-kod:

<?php
function status_open()
{    
    
$closed = array("24/12""20/9");
    if (
in_array(date("d/n"), $closed)) {
        return 
"Stängt";
    }
    
    switch (
date("w")) {
        case 
1:    // Mån
        
case 2:    // Tis
        
case 3:    // Ons
        
case 4:    // Tor
            
if (time() < strtotime("11:00") || time() > strtotime("21:00")) {
                return 
"Offline";
            }
            if (
time() > strtotime("16:00")) {
                return 
"Online";
            }
            return 
"Halvonline";
            
        case 
5:    // Fre
        
case 6:    // Lör
            
break;
            
        case 
0:    // Sön
            
break;
    }
}

echo 
status_open();

?>


JeZZifelt 2011-09-20 14:05

Citat:

Ursprungligen postat av Jake.Nu (Inlägg 20418124)
Här har du något snabbt ihopslängt som bör funka som utgångsläge.
Jag har bara lagt in Mån-Tor.

Stort, stort tack för hjälpen!

Nu ser min kod ut så här:

PHP-kod:

<?php 
function status_open() 
{     
    
$closed = array("24/12""20/9"); 
    if (
in_array(date("d/n"), $closed)) { 
        return 
"stangt.php"
    } 
     
    switch (
date("w")) { 
        case 
1:    // Mån 
        
case 2:    // Tis 
        
case 3:    // Ons 
        
case 4:    // Tor 
            
if (time() < strtotime("11:00") || time() > strtotime("21:00")) { 
                return 
"offline.php"
            } 
            if (
time() > strtotime("16:00")) { 
                return 
"online.php"
            } 
            return 
"halvonline.php"
             
        case 
5:    // Fre 
        
case 6:    // Lör 
            
if (time() < strtotime("11:00") || time() > strtotime("22:00")) { 
                return 
"offline.php"
            } 
            if (
time() > strtotime("16:00")) { 
                return 
"online.php"
            } 
            return 
"halvonline.php";  
             
        case 
0:    // Sön 
            
if (time() < strtotime("12:00") || time() > strtotime("20:00")) { 
                return 
"offline.php"
            } 
            return 
"online.php";  
    } 


echo 
status_open(); 

?>

Det fungerar dock inte för mig. Adressen till "stangt.php" kommer upp längst upp till vänster på sidan, annars ser sidan ut som vanligt men skickar inte vidare någonstans.
Är det jag som gjort något fel? :S

Jake.Nu 2011-09-20 15:26

Citat:

Ursprungligen postat av JeZZifelt (Inlägg 20418145)
Stort, stort tack för hjälpen!

Nu ser min kod ut så här:

...

Det fungerar dock inte för mig. Adressen till "stangt.php" kommer upp längst upp till vänster på sidan, annars ser sidan ut som vanligt men skickar inte vidare någonstans.
Är det jag som gjort något fel? :S

PHP-kod:

<?php 
function status_open() 
{     
    
$closed = array("24/12""20/9"); 
    if (
in_array(date("d/n"), $closed)) { 
        return 
"stangt.php"
    } 
     
    switch (
date("w")) { 
        case 
1:    // Mån 
        
case 2:    // Tis 
        
case 3:    // Ons 
        
case 4:    // Tor 
            
if (time() < strtotime("11:00") || time() > strtotime("21:00")) { 
                return 
"offline.php"
            } 
            if (
time() > strtotime("16:00")) { 
                return 
"online.php"
            } 
            return 
"halvonline.php"
             
        case 
5:    // Fre 
        
case 6:    // Lör 
            
if (time() < strtotime("11:00") || time() > strtotime("22:00")) { 
                return 
"offline.php"
            } 
            if (
time() > strtotime("16:00")) { 
                return 
"online.php"
            } 
            return 
"halvonline.php";  
             
        case 
0:    // Sön 
            
if (time() < strtotime("12:00") || time() > strtotime("20:00")) { 
                return 
"offline.php"
            } 
            return 
"online.php";  
    } 
}
header("Location: http://www.domain.tld/" status_open());
exit();
?>

Men med denna koden så kan man alltid gå till online.php direkt om man vill..

JeZZifelt 2011-09-22 08:11

Ja, fast det vill jag ju helst inte att man ska kunna?
Jag hade satt koden på online-sidan som man länkas till för att komma till beställningssidan, men det kanske var fel av mig?
Ni får ursäkta att jag är lite trög.. :)


Alla tider är GMT +2. Klockan är nu 08:51.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson