2017-02-14 1 views
1

웹 사이트가 시작될 때까지 홈페이지 (서브 페이지가 아닌)를 닫아야하는 새 제품/웹 사이트에서 작업하고 있습니다. 출시 날짜는이 같은 URL에서 읽어야합니다 :이 예에서PHP로 URL 변수에 따라 쿠키가 만료되도록 설정

website.com/some-subpage?launch=0421 

이 홈페이지는 4 월 21 (21) (04)에서 방문자에 액세스 할 수 있어야합니다.

  • 쿠키 이름 : 나는 누군가가 "일부-서브 페이지"(또는 다른 하위 페이지, 나던 문제를) 방문 할 경우, 쿠키가 다음과 같이 설정해야하고 싶지이를 위해

  • 를 시작합니다
  • 쿠키 값 :이 경우 다음

4월의 21가 지금까지 무엇을 가지고 출시에, 그래서 :

  • 쿠키 만료 0421

    <?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 
    
    } ?> 
    

    끝내시겠습니까? "0421"을 쿠키의 만료일로 설정할 수있는 새로운 형식으로 변환하는 방법을 모르겠습니다. 불행히도 제 PHP 기술은 거의 제로입니다.

    대단히 감사합니다! 안녕, 학자는

  • +0

    오류가 있습니까? 작동하지 않는 것은 무엇입니까? 분명한 점은 신뢰할 수있는 사용자 토지 데이터'$ _GET [ 'launch'];가 사용자 토지에 저장된다는 것입니다. – ficuscr

    +0

    아니요, 나는 아직 작동하지 않을 것이라고 확신합니다. ("0421"을 쿠키의 만료일로 설정할 수있는 새로운 형식으로 변환하는 방법을 모릅니다.) 문제는 사용자가 그것을 조작 할 수 있다는 것입니다 .- 그들은 안됩니다. – Imre

    +0

    그들은 믿을 것입니다. – ficuscr

    답변

    1

    나는 $launch에 날짜를 기반으로하는 쿠키에 expire을 설정하는 방법을 당신을 보여 드리죠. 항상 형식으로 될 것이라고 가정

    이 올해 무시 ... 간단한 문자열 조작과 다음

    $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, "/"); 
    

    주의 '를 MMDD'. 사용자 데이터를 신뢰해서는 안됩니다. 이 모든 것은 스푸핑 될 수 있습니다.

    +0

    감사합니다. ficuscr,이게 더 도움이됩니다! 지금과 $ launchTime 사이의 초를 어떻게 계산합니까?이 연도를 무시한다는 사실은 문제가 아닙니다. . 사용자 데이터를 신뢰하지 않는 힌트를 주셔서 감사합니다. 그러나 "시작"변수가있는 링크를 클릭하자마자 쿠키가 설정되고 기존 쿠키가 덮어 쓰여지지 않습니다 (IF로이를 수행합니다). 그래서 변경합니다 시작 변수와이 새로운 링크 방문은 아무 것도하지 않습니다 .BTW, "$ ttl"이 만료 날짜가 아니어야합니까? – Imre

    +0

    * "TTL 예제를보십시오. *" "$ ttl"이 만료 날짜가 아니어야합니까? "* 아니요. 남은 시간이 아니라 해당 날짜 시간의 유닉스 타임 스탬프를 원합니다. – ficuscr

    +0

    왜 "$ ttl"부분이 필요한가요? 그것을 계산 한 후에, 그것은 결코 사용되지 않았습니까? – Imre

    관련 문제