【发布时间】:2015-05-13 18:08:54
【问题描述】:
我正在为如何让一个场景工作而摸不着头脑只能看到它们关联的“类别”。例如,user1 可以访问 cat1,user2 可以访问 cat2,user3 可以访问 cat1 和 cat2 - 我需要一种方法来存储这些 cat 值并允许用户查看它们。所以 cat1 的 id 可能是 1,而 cat 2 的 id 可能是 2,但我不确定这如何转化为使用 SQL 命令获取该数据。
这是我目前显示类别的方式。
<?php
try{
// Selecting entire row from doc_list table
$results = $dbh->query("SELECT * FROM cat_list ORDER BY cat_title ASC ");
}catch(Exception $e) {
echo $e->getMessage();
die();
}
$docs = $results->fetchAll(PDO::FETCH_ASSOC);
foreach($docs as $docs){
echo '
<a href="catView.php?cat_id='.$docs["cat_id"].'">
<div class="indexBox">
<div class="indexBoxHeader"><i class="fa fa-phone" style="font-size: 2em;"></i></div>
<div class="indexBoxFooter">
<p>
'.$docs["cat_title"].'
</p>
</div>
</div>
</a>';}
?>
我的表格是这样组成的:
CREATE TABLE `cat_list` (
`cat_id` int(11) NOT NULL,
`cat_title` varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf16 AUTO_INCREMENT=5 ;
CREATE TABLE `user_login` (
`id` int(11) NOT NULL,
`username` text NOT NULL,
`firstname` varchar(30) NOT NULL,
`lastname` varchar(50) NOT NULL,
`password` varchar(64) NOT NULL,
`psalt` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
我真的很难理解或找出链接它们并指定谁看到什么的最佳方式?我已经研究了 JOINS 以及具有外键的表之间的关系,甚至还有一个单独的新表(规范化) - 但是从上面的形式我需要获取从登录传递的用户 $_SESSION id,然后获取该值和检查他们可以看到哪些类别。
更新
<?
session_start();
if(isset($_SESSION['user'])){
header("Location:home.php");
exit;
}
$dbh=new PDO('mysql:dbname=dashboardr;host=******', '******', '******');
$email=$_POST['username'];
$password=$_POST['pass'];
if(isset($_POST) && $email!='' && $password!=''){
$sql=$dbh->prepare("SELECT * FROM user_login WHERE username=?");
$sql->execute(array($email));
while($r=$sql->fetch()){
$p=$r['password'];
$p_salt=$r['psalt'];
$id=$r['id'];
}
$site_salt="subinsblogsalt";
$salted_hash = hash('sha256',$password.$site_salt.$p_salt);
if($p==$salted_hash){
$_SESSION['user']=$id;
$_SESSION['username']=$email;
$_SESSION['firstname']=$firstname;
header("Location:home.php");
}else{
echo "<h2>Username/Password is Incorrect.</h2>";
}
}
?>
** 更新 2**
这里是需要查看类别的home.php文件:
<?php include 'header.php'; ?>
<?php
if(isset($_SESSION['user'])){ $_SESSION['user']=$id;
$results = $dbh->query("SELECT * FROM cat_list JOIN user_cats ON cat_id = cat_id WHERE user_id = ? ORDER BY cat_title ASC");
?>
【问题讨论】:
-
$user = $_POST['var']; $_SESSION['var'] = $_POST['var']; $id=$_SESSION['var'];类型的东西。这当然是一个粗略的草稿。向我们展示你得到了什么,就登录而言。 -
类别和用户之间没有关系。那么你怎么能说一个用户可以访问 cat1 而另一个是 cat2 等等呢?
-
@anantkumarsingh 我是说这就是我想要达到的目标,用户和类别之间的关系是我想要达到的目标以及如何最好地接近它
-
@Fred-ii- 请参阅我的问题的更新部分
-
这种关系的基础是什么?加入有好处吗?但什么是基础?如果 cat id 和 user id 相同,则表示用户可以访问该类别 - 这种关系是否正常?