我目前正在尝试使用一个脚本来确保用户登录到中央登录系统。
问题是,包含此文件夹中的任何文件(包括PHP和图像文件)都无法访问,无论是仅使用<?php include 'file.php' ?>
时,还是作为图像,即<img src="image.png" />
等。
我在.htaccess文件中使用的代码如下:
RewriteEngine on
# The original URL is set as an environment variable SSO_REQUESTED rather than
# a query parameter, so it's not vulnerable to hacking.
# It shows up in PHP as $_SERVER['REWRITE_SSO_REQUESTED'].
RewriteCond %{REQUEST_URI} !ssoclient
RewriteRule (.+) /sso/ssoclientfilter.php [E=SSO_REQUESTED:$1,L]
非常感谢任何帮助。
答案 0 :(得分:0)
使用include的相对路径是非常糟糕的行为。您真的应该在脚本中使用文档根路径设置一些变量或常量。对于HTML也是如此:您应该在标题中包含BASE标记,以便为图像,样式,脚本等的相对路径设置基础(根)。此外,在您的htaccess中设置RewriteBase也很有用。
然而,奇怪的是,htaccess也会影响php的include,它通常使用文件系统的路径,而不是URI。
答案 1 :(得分:0)
如果您的代码要确保您的用户登录到中央登录系统,则不会使用PHP代码:
<?php
if (!isset ($_COOKIE[ini_get('session.name')])) {
session_start();
}else{
print "<SCRIPT>window.location='/sso/ssoclientfilter.php';</SCRIPT>";
}
在上面的代码中,没有先前启动会话的任何人都会被定向到您的ssoclientfilter.php,并且不会触及您的其他图像和文件夹。这位于session_start()所在的位置应该可以解决您的问题。