【发布时间】:2015-02-19 11:07:55
【问题描述】:
我用这段代码用 javascript 创建了一个 cookie:
$('#solicita').click(function(){
document.cookie = 'courseId=<?php echo $course[id]?>';
$('#myModal').modal('show');
});
这将创建一个名称为 courseId 的 cookie,并带有一个值。 然后我尝试使用以下 php 代码读取 cookie:
if(isset($_COOKIE['courseId'])) {
$course = ORM::for_table('courses')->find_one($_COOKIE['courseId']);
...
}
但是 isset($_COOKIE['courseId'] 总是假的。这段代码一直有效,直到上周我更改了我的 .htaccess 以获得友好的链接。这是我添加到我的 .htaccess 中的代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteEngine On
RewriteBase /peppers/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cp/artes-escenicas/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
RewriteRule ^cp/ciencia-y-tecnologia/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
RewriteRule ^cp/arte-y-diseno/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
RewriteRule ^cp/deportes/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
RewriteRule ^cp/idiomas/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
RewriteRule ^cp/academico/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
RewriteRule ^cp/rutas/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
RewriteRule ^cp/voluntariado/([^/]+)/?$ cp/course-details.php?name=$1 [NC,L]
请帮忙
更新
【问题讨论】:
-
您的 mod_rewrite 指令中的任何内容如何禁用您的 cookie 并不明显。您是否尝试过:
if ($_COOKIE['courseId'] != '') {echo '<p>courseId cookie contains '.$_COOKIE['courseId'].'</p>';} else {echo '<p>courseId Cookie is empty'</p>';}只是为了检查您的 cookie 的内容? -
是的,试过那个代码,我总是得到“courseId Cookie is empty”
-
您是否在开发者控制台中看到了 cookie,例如萤火虫?
-
是的,我可以看到带有值的 cookie
-
您的 PHP 脚本是否与设置 cookie 的文档所在的路径相同?您可以在屏幕截图中看到您的 cookie 的路径值为
/peppers/cp/artes-escenicas- 因此只有当您请求以相同路径开头的 URL 时,浏览器才会发送。如果您还希望将其发送给该路径之外的其他资源,那么您必须在设置该 cookie 时指定一个限制较少的路径。