Возникли проблемы с этим javascript и php cookie-кодом - PullRequest
0 голосов
/ 22 октября 2018

Вот что я пытаюсь сделать: Создайте cookie-файл, используя php и javascript.Код, который я использую (ниже), не работает, потому что я действительно не знаю, что я делаю.Мне нужно, чтобы он использовался в моем домене и истекал через пять минут.Может ли кто-нибудь помочь мне исправить этот фрагмент?Спасибо.

<?php
// name of the cookie
$cookie_name = 'testcookie';

// expires in five minutes, also the value of the cookie
$cookie_expire_time = time() + 300;

// check if cookie is set
if(!isset($_COOKIE[$cookie_name])) {
// if NOT set
echo 'Cookie is NOT set. <a href="https://MyTestPage.com/" onClick="window.open(\'https://google.com/\'); setCookie(\''.$cookie_name.'\', \''.$cookie_expire_time.'\', '.$cookie_expire-time.');">Click here to set the cookie, reload the page, and open google in a new tab.</a>';
} else {
// if IS set
echo 'Cookie IS set now.';
}
echo '<script>
function setCookie(cname, cvalue, exdays) {
    var expires = "expires="'.$cookie_expire_time.';
    document.cookie = cname + "=" + cvalue + "; " + expires;
}
</script>';
?>

Мой оригинальный тестовый фрагмент сработал (ниже), просто не могу заставить первый пример работать так, как этот.Этот истекает через 30 дней.Как я могу передать срок действия в минутах, используя PHP?

<?php
$cookie_name = 'testcookie2';
if(!isset($_COOKIE[$cookie_name])) {
echo 'Cookie is NOT set. <a href="https://MyTestPage.com/" onClick="window.open(\'https://google.com/\'); setCookie(\'testcookie2\', \'yes\', 30);">Click here to set the cookie, reload the page, and open google in a new tab.</a>';
} else {
echo 'Cookie IS set now.';
}
echo '<script>
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}
</script>';
?>

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Спасибо в любом случае всем.Я получил код, работающий как есть, с несколькими изменениями.Это "хоккей", но делает то, что я просил.Вот что я использовал:

<?php
$cookie_name = 'testcookie5';
$cookie_time = '1';
if(!isset($_COOKIE[$cookie_name])) {
echo 'Cookie is NOT set. <a href="https://MyTestPage.com/" onClick="window.open(\'https://google.com/\'); setCookie(\'testcookie5\', \'\', '.$cookie_time.');">Click here to set the cookie, reload the page, and open google in a new tab.</a>';
} else {
echo 'Cookie IS set now. Value is: '.strtotime($_COOKIE[$cookie_name]).'<br />';
}
echo '<script>
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*60*1000));
    var expires = "expires="+d.toUTCString();
    var cevalue = d.toUTCString();
    document.cookie = cname + "=" + cevalue + "; " + expires;
}
</script>';
?>
0 голосов
/ 23 октября 2018

Чтобы сделать это в PHP, вам нужно позвонить setCookie

<?php
$CookieName = "userName";
$userName = "Test";
$expireAt = time() + 300;
//setcookie(name, value, expire, path, domain, secure, httponly);

setcookie($CookieName, $userName, $expireAt, "/");

Подробнее здесь http://php.net/manual/en/function.setcookie.php

Или вы можете использовать js, который у вас есть, но он заключен вфункция, которая не вызывается, по крайней мере, не то, что я могу сказать.Поэтому, если вы сделали что-то похожее на приведенное ниже, оно просто устанавливает его при загрузке страницы.

<script>
    var minutes = 5;
    var dt = new Date();

    var expireAt = new Date(dt.getTime() + minutes*60000);

    document.cookie = "username=John Doe; expires=${expireAt}; path=/";
</script>

Edit

Я считаю, что вы хотите установить переменные в PHP, а затемположить это в сценарии JS.Это можно сделать, и вы были близки.

Если это страница, которую вы выводите, и она выглядит так, то вы можете заходить и выходить из php

<?php
    //You are doing PHP here
    $CookieName = "userName";
    $userName = "Test";
    $expireAt = time() + 300;
    //This is stopping the php interpreter
?>
<!-- Here is html-->
<script>    
    //This is js on that html the <?= > opens php and you can access variables
    document.cookie = `<?=$CookieName?>=<?=$userName?>; expires=<?=$expireAt?>; path=/`;
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...