用php点击设置cookie

时间:2016-07-12 11:34:25

标签: php cookies

嗨我想在点击按钮时设置一个cookie,但我有一个问题 这是我的第一个代码版本,它工作正常



<?php
$ID = is_numeric($_GET['ID']) ? $_GET['ID'] : 1;

$cookie_name = "favoritepost";

if ( isset($_COOKIE[$cookie_name]) ) {
    $kookie = unserialize($_COOKIE[$cookie_name]);
} else {
    $kookie = array();
}
if ( ! in_array($ID, $kookie) ) {
    $kookie[] = $ID;
}

setcookie($cookie_name, serialize($kookie), time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
&#13;
&#13;
&#13;

然后正如我所说我想将cookie设置更改为按钮单击所以我写了这个代码,但它不是workinf它并没有给我cookie设置是什么问题。感谢

&#13;
&#13;
<!doctype html>
<?php
$ID = is_numeric($_GET['ID']) ? $_GET['ID'] : 1;

$cookie_name = "favoritepost";

if ( isset($_COOKIE[$cookie_name]) ) {
    $kookie = unserialize($_COOKIE[$cookie_name]);
} else {
    $kookie = array();
}
if ( ! in_array($ID, $kookie) ) {
    $kookie[] = $ID;
}
?>

<button type="button" onclick="setcookie('<?php echo $cookie_name;?>', '<?php echo serialize($kookie);?>', time() + (86400 * 30), "/")">Click Me!</button> 
<html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

你正在混合 JS PHP ,这是一个致命的组合。 JS是一种客户端语言,因为PHP是一种服务器端语言。

您在 PHP 中编写的所有内容都是执行服务器,而您在 JS 中编写的所有内容都在客户端执行。

第一个解决方案是使用 AJAX 调用将 PHP 脚本与 JS 连接起来。单击调用服务器端PHP脚本的按钮调用AJAX函数以保存cookie。

参考:http://www.w3schools.com/PHP/php_ajax_php.asp

另一种解决方案是在客户端执行操作,仅用于保存/检索cookie。

参考:http://www.w3schools.com/js/js_cookies.asp

  

最好在服务器端执行它,因为它提供了更多的安全性   客户端代码。