使用PHP会话进行年龄验证

使用PHP会话进行年龄验证,php,session,Php,Session,我实现了一个年龄验证系统,用户只有在选中主页上的“我是21岁”复选框时才能查看网站页面 我这样做的方式是在他们选中该框时设置一个PHP会话变量。然后,对于所有php网页,我的代码检查以确保设置了I am 21会话变量 这适用于我想要阻止的任何php网页。但缺点是,我必须在每个php文件的顶部添加年龄块php代码段,并且它不能用于任何非php文件 所以我的问题是,我是否可以使用I am 21会话变量来简单地阻止/允许访问整个目录?这样我就不必在每个PHP文件中都加上年龄块,这样我就可以阻止一些不是

我实现了一个年龄验证系统,用户只有在选中主页上的“我是21岁”复选框时才能查看网站页面

我这样做的方式是在他们选中该框时设置一个PHP会话变量。然后,对于所有php网页,我的代码检查以确保设置了I am 21会话变量

这适用于我想要阻止的任何php网页。但缺点是,我必须在每个php文件的顶部添加年龄块php代码段,并且它不能用于任何非php文件


所以我的问题是,我是否可以使用I am 21会话变量来简单地阻止/允许访问整个目录?这样我就不必在每个PHP文件中都加上年龄块,这样我就可以阻止一些不是PHP文件的东西,比如PDF。例如,是否可以访问.htaccess中的PHP会话变量?

您可以在cookie中设置它,然后添加一些httpd.conf和/或.htaccess规则来检查cookie是否存在。差不多

RewriteCond %{HTTP_COOKIE} !/IsOldEnough=1/ [NC]
RewriteRule ^.* http://www.disney.com

如果语法正确的话,可以将IsOldEnoughCookie未设置和/或不等于1的任何人重定向到迪斯尼网站。

您可以在cookie中设置它,然后添加一些httpd.conf和/或.htaccess规则来检查该cookie是否存在。差不多

RewriteCond %{HTTP_COOKIE} !/IsOldEnough=1/ [NC]
RewriteRule ^.* http://www.disney.com

如果语法正确的话,可以将IsOldEnoughCookie未设置和/或不等于1的任何人重定向到迪斯尼网站。

让PHP包装pdf。制作一个脚本,首先检查会话中是否存在年龄变量,如果存在,则加载pdf,模拟键入标题并将其输出到浏览器。如果缺少会话值,则发送位置标头以重定向

define('PDF_PATH', '../pdf/path');

if(isset($_SESSION['age_enough']) && $_SESSION['age_enough']==TRUE){
  $contents = file_get_contents(PDF_PATH . 'naughty.pdf');
  header('Content-type: application/pdf');
  echo $contents;
}else{
  header('Location:http://www.yourdomain.com/tooyoung.php');
}  
如果要阻止某些用于PDF读取的插件激活,可能还需要设置内容处置标头。根据您的Web服务器配置,您可能还需要将mimetype添加到.htaccess文件中


此方法可用于许多文件。

让PHP包装pdf。制作一个脚本,首先检查会话中是否存在年龄变量,如果存在,则加载pdf,模拟键入标题并将其输出到浏览器。如果缺少会话值,则发送位置标头以重定向

define('PDF_PATH', '../pdf/path');

if(isset($_SESSION['age_enough']) && $_SESSION['age_enough']==TRUE){
  $contents = file_get_contents(PDF_PATH . 'naughty.pdf');
  header('Content-type: application/pdf');
  echo $contents;
}else{
  header('Location:http://www.yourdomain.com/tooyoung.php');
}  
如果要阻止某些用于PDF读取的插件激活,可能还需要设置内容处置标头。根据您的Web服务器配置,您可能还需要将mimetype添加到.htaccess文件中


这种方法可以用于许多文件。

21岁的人有什么特别之处简短回答否,您无法从php脚本外部访问php的会话变量。以下内容可能会对您有所帮助:@knittl:当然可以。默认会话处理程序只是一个包含序列化$\会话数组的文件。任何可以进行字符串操作和/或理解PHP序列化格式的东西都可以轻松地读取会话文件。21岁的人有什么特别之处简短回答否,您无法从php脚本外部访问php的会话变量。以下内容可能会对您有所帮助:@knittl:当然可以。默认会话处理程序只是一个包含序列化$\会话数组的文件。任何可以进行字符串操作和/或理解PHP序列化格式的操作都可以轻松地读取会话文件。