因此,我要做的是通过权限DB过滤文件夹中的应用程序,以决定当前用户是否能够访问该应用程序。在这个文件的开头,我打印会话id以确保它的设置并返回我的id。但是,当我到达if语句时,它会返回一个值是否天气,我的sql语句为true或false。判断sql语句是否返回true或false的正确方法是什么?
<?php
Print_r($_SESSION[user_id]);
$matches = glob("Apps/*.php");
if (is_array($matches)) {
foreach ($matches as $filename) {
$filenamesans = basename($filename, ".php"); // $file is set to "index"
include"db.inc.php"; //database connection
$item = "SELECT * FROM Apps WHERE UserID='$_SESSION[user_id]' AND App ='$filenamesans'";
$result = mysql_query($item);
if ($result == TRUE) {
echo "<a class='nav2' href='Apps/$filenamesans/index.php'>$filenamesans</a></br>";
}
}
}
?>发布于 2013-12-26 09:37:06
应该注意的是,您正在为循环的每一次迭代建立到数据库的连接,而且在循环中使用查询通常是个坏主意,因为它几乎肯定可以得到改进。
试试这个:
include("db.inc.php");
$items = mysql_query("SELECT `App` FROM `Apps` WHERE
`UserID`='".mysql_real_escape_string($_SESSION['user_id'])."'");
$itemarr = array();
while($item = mysql_fetch_assoc($items)) $itemarr[$item['App']] = true;
$files = glob("Apps/*.php");
foreach($files as $file) {
$basefile = basename($filename,".php");
if( isset($itemarr[$basefile])) {
echo "<a class='nav2' .......>...</a>";
}
}这使用一个查询来获取用户的应用程序,然后在数组中查找它们--这是一个非常快的操作。
https://stackoverflow.com/questions/20782278
复制相似问题