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.. :)

allstars 2011-09-22 09:09

Istället för att skicka användaren till annan sida visa olika html-kod, typ

JeZZifelt 2011-09-22 10:30

Citat:

Ursprungligen postat av allstars (Inlägg 20418378)
Istället för att skicka användaren till annan sida visa olika html-kod, typ

Ja, men det måste ju styras via tiden. Har noll koll på PHP (för javascript verkade inte vara en bra lösning på problemet) så vet inte hur jag ska gå tillväga?

allstars 2011-09-22 10:58

Ja?!

Istället för att göra en return sätter man en variabel $booking_status="closed"; eller mostsvarade

sedan efter gör man en switch
switch ($booking_status){
case "closed" :
default:
//gör detta
break;
case "open" :
//gör detta
break;
case "halfopen" :
//gör detta
break;
}

JeZZifelt 2011-09-22 13:39

Citat:

Ursprungligen postat av allstars (Inlägg 20418390)
Ja?!

Istället för att göra en return sätter man en variabel $booking_status="closed"; eller mostsvarade

sedan efter gör man en switch
switch ($booking_status){
case "closed" :
default:
//gör detta
break;
case "open" :
//gör detta
break;
case "halfopen" :
//gör detta
break;
}

Kan jag ersätta "//gör detta" med HTML kod?

frecka 2011-09-22 13:43

Ja det kan du men du måste öppna och stänga dina php taggar. Alternativt, skriv html koden i din echo.

såhär:

<?php
switch ($booking_status){
case "closed" :
default:
?>
<b>En fet text</b>
<?php
break;
case "open" :
echo "<b>En fet text</b>";
break;
case "halfopen" :
?>
<b><?php echo "<em>En både fet och kursiv text</em>"; ?></b>
<?php
break;

?>

Själv skriver jag all html kod i echo
Blir så himla stökigt annars.

JeZZifelt 2011-09-23 10:28

Har försökt mig på en annan variant nu..
Har ingen aning om jag ens gjort i närheten av rätt, men att något är fel det vet jag! ;) För den visar båda offlinebilden och onlinebilden när den är offline. Else visas alltså även fast en If är uppfylld. Jag vill att om en If är uppfylld ska inte Else visas. Jag kanske är helt ute och cyklar? :P Hjälp mig gärna! ;)

PHP-kod:

<?php
$date 
getdate();
$hour $date['hours'];
$day date('w');

if (
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';} 
if (
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';}
if (
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';}
if (
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';}
if (
$day == && $hour >= 10 && $hour <=22) {echo '<img class="fright" src="online.jpg" alt="" />';}
if (
$day == && $hour >= 16 && $hour <=22) {echo '<img class="fright" src="online.jpg" alt="" />';} 
else {echo 
'<img class="fright" src="offline.jpg" alt="" />';} 

?>


captaindoe 2011-09-23 12:52

PHP-kod:

<?php
$date 
getdate();
$hour $date['hours'];
$day date('w');

if (
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';
}elseif(
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';
}elseif(
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';
}elseif(
$day == && $hour >= 16 && $hour <=21) {echo '<img class="fright" src="online.jpg" alt="" />';
}elseif(
$day == && $hour >= 10 && $hour <=22) {echo '<img class="fright" src="online.jpg" alt="" />';
}elseif(
$day == && $hour >= 16 && $hour <=22) {echo '<img class="fright" src="online.jpg" alt="" />';
} else {
echo 
'<img class="fright" src="offline.jpg" alt="" />';

?>

Annan variant som funkar lika bra:
PHP-kod:

<?php
$date 
getdate();
$hour $date['hours'];
$day date('w');

if (
$day == 1  || $day ==  || $day ==  || $day ==  4) {
  if(
$hour >= 16 && $hour <=21) {
    echo 
'<img class="fright" src="online.jpg" alt="" />'
  
} else {
    echo 
'<img class="fright" src="offline.jpg" alt="" />';
  } 
}elseif(
$day == && $hour >= 10 && $hour <=22) {echo '<img class="fright" src="online.jpg" alt="" />';
}elseif(
$day == && $hour >= 16 && $hour <=22) {echo '<img class="fright" src="online.jpg" alt="" />';
} else {
echo 
'<img class="fright" src="offline.jpg" alt="" />';

?>


JeZZifelt 2011-09-28 13:29

Citat:

Ursprungligen postat av captaindoe (Inlägg 20418502)
.

Stort tack! :)

JeZZifelt 2011-10-03 11:35

Har modifierat till denna kod nu:
PHP-kod:

<?php 
$date 
getdate(); 
$hour $date['hours']; 
$day date('w'); 

if (
$day == && $hour >= 21 || $hour <=10) {header("Location: offline.php"); 
}elseif(
$day == && $hour >= 21 || $hour <=10) {header("Location: offline.php"); 
}elseif(
$day == && $hour >= 21 || $hour <=10) {header("Location: offline.php"); 
}elseif(
$day == && $hour >= 21 || $hour <=10) {header("Location: offline.php"); 
}elseif(
$day == && $hour >= 22 || $hour <=10) {header("Location: offline.php"); 
}elseif(
$day == && $hour >= 22 || $hour <=10) {header("Location: offline.php"); 
}elseif(
$day == && $hour >= 20 || $hour <=11) {header("Location: offline.php");
}else {
header("Location: online.php"); 
}  
?>

Funkar bra förutom en enda grej. Den verkar endast gå efter söndags-tiden. T.ex. nu på en måndag när klockan är över elva borde den vara online, men man kommer till offlinesidan. Ändrar jag så att även söndag är online efter 11 (ändrar till 10) så hamnar jag rätt på onlinesidan. Varför blir det så?


Alla tider är GMT +2. Klockan är nu 19:17.

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