2017-02-14 2 views
1

Ich arbeite an einem neuen Produkt/Website, wo die Homepage (nicht die Unterseiten) für Besucher geschlossen werden soll, bis die Website startet. Das Start-Datum soll wie folgt aus der URL zu lesen:Machen Sie Cookie ablaufen nach URL-Variable mit PHP

website.com/some-subpage?launch=0421 

In diesem Beispiel ist die Homepage soll den Besucher vom 21. (21) vom April (04) zugänglich sein.

dies Denn ich, dass, wenn jemand tun wollen besucht „some-Unterseite“ (oder irgendeine andere Unterseiten, spielt keine Rolle), sollte ein Cookie wie folgt festgelegt werden:

  • Plätzchen-Name: Starten
  • Plätzchen-Wert: 0421
  • Cookie-Ablauf: bei der Einführung, so dass in diesem Fall der 21. April

Hier ist, was ich bisher:

<?php 
if ($_GET['launch'] != "null") { 
date_default_timezone_set('Europe/Berlin'); 
$launchdate = $_GET['launch']; 

$launchdatenew->format('*********'); // Here I probably need to convert the "0421" to a readable time, but I dont know how 
// or probably using this version? 
$launchdatenew = date_format(date_create_from_format('m d', $launchdate), '*********'); // Here I probably need to convert the "0421" to a readable time, but I dont know how 

setcookie("Launch", $launchdate, $launchdatenew, "/"); // The Cookie-Name should be "Launch", the value "0421", and it should expire when the launch starts 

} ?> 

Könnten Sie mir bitte helfen, das zu beenden? Ich weiß nicht, wie man das "0421" in ein neues Format umwandelt, das als Ablaufdatum für den Cookie gesetzt werden könnte. Meine PHP-Kenntnisse sind leider fast Null.

Vielen Dank! Bye, Imre

+0

Erhalten Sie Fehler? Was funktioniert nicht? Offensichtliche Sache, die hier herausspringt, ist deine vertrauliche Benutzerland-Daten '$ _GET ['Start'];' und dann das Speichern in Benutzerland auch. – ficuscr

+0

Nein, ich habe es noch nicht getestet, da ich sicher bin, dass es nicht funktionieren wird (ich weiß nicht, wie ich das "0421" in ein neues Format umwandeln kann, das als Ablaufdatum für den Cookie gesetzt werden könnte. Es ist kein Problem, dass Benutzer sie manipulieren könnten - sie werden nicht. – Imre

+0

Sie werden. Traue ihnen nie. – ficuscr

Antwort

1

Ich werde Sie zeigt dann, wie die expire auf diesem Cookie, um das Datum in $launch basierte.

dass Angenommen wird immer im Format 'MMTT' dann mit einigen einfachen String-Manipulation ...

$launchDateStr = '0421'; 

$launchTime = mktime(0, 0, 0, substr($launchDateStr, 0, 2), substr($launchDateStr, 2)); 

$ttl = $launchTime - time(); //just an example... find seconds between now and launch 

setcookie("launch", $launchDateStr, $launchTime, "/"); 

Einsprüche ... in diesem Jahr ignoriert. Sie sollten Benutzerdaten nicht vertrauen. All das kann gefälscht werden.

+0

Danke ficuscr, das hilft mir weiter! Wie berechne ich Sekunden zwischen jetzt und $ launchTime? Die Tatsache, dass dies Jahr ignoriert ist kein Problem Vielen Dank für den Hinweis, die Benutzerdaten nicht zu vertrauen - aber sobald sie auf einen Link mit einer "Start" -Variable klicken, wird der Cookie gesetzt - und bestehende Cookies werden nicht überschrieben (ich werde dies mit einem IF tun), also ändern Die Launch-Variable und das Besuchen dieser neuen Verbindung werden nichts tun. BTW, sollte nicht das "$ ttl" das Ablaufdatum sein? – Imre

+0

* "Wie berechne ich Sekunden zwischen jetzt und $ launchTime?" * Siehe TTL-Beispiel. * " Sollte das "$ ttl" nicht das Ablaufdatum sein? "* Nein. Er möchte den Unix-Zeitstempel für dieses Datum haben, nicht die verbleibenden Sekunden. – ficuscr

+0

Und warum brauchen wir den "$ ttl" -Teil? Nach der Berechnung wird es nie benutzt, oder? – Imre