在用户登录时从另一个脚本获取表列值

时间:2019-02-14 19:27:10

标签: php mysql

我有一个标头脚本,它运行一些用户检查等。这些检查之一是他的用户名,他的权限和剩余的答案数。

这是一个名为header.php的脚本

if(isset($_SESSION['activeUser']))
{
 $activeUser=$_SESSION['activeUser'];
 $activeUserName=$_SESSION['activeUserName'];
 $activeUserType=$_SESSION['activeUserType'];
 $activeUserId=$_SESSION['activeUserId'];
 $odgovori=$_SESSION['preostaliOdgovori'];

}


   if(isset($_SESSION['activeUser']))
 {

    echo "<div style='float: right;'>";
    echo "<h3>Prijavljeni ste kao: ".$_SESSION['activeUser']."</h3>";
    echo "<h3>Prava: ".$_SESSION['tipNaziv']."</h3>";
    echo "<h3>Preostali odgovori: ".$odgovori."</h3>";
    echo"</div>"; 
}
else
{
    echo "<h3 style='float: right;'>Niste prijavljeni!</h3>";
}

所以我想从另一个脚本中读取preostaliOdgovori(preostaliOdgovori是表列)mojaTvrtka.php是发生这种情况的脚本

$connect = connectDB();
$query ="SELECT pitanje.pitanje_id,naslov,pitanje.tvrtka_id, tvrtka.tvrtka_id,preostaliOdgovori ,
    zaposlenik.tvrtka_id,korisnik_id
    FROM pitanje 
    INNER JOIN tvrtka ON tvrtka.tvrtka_id = pitanje.tvrtka_id
    INNER JOIN zaposlenik ON zaposlenik.tvrtka_id = pitanje.tvrtka_id
    WHERE korisnik_id = '$activeUserId'";



if(isset($_SESSION['activeUser']))
{
$query1="SELECT tvrtka.tvrtka_id,preostaliOdgovori,zaposlenik.tvrtka_id,korisnik_id
    FROM tvrtka
    INNER JOIN zaposlenik ON zaposlenik.tvrtka_id = tvrtka.tvrtka_id
    WHERE korisnik_id = '$activeUserId'";

$result2=queryDB($connect,$query1);
 while($row=mysqli_fetch_array($result2))
 {
   $odgovori=$row['preostaliOdgovori'];
 }
}
$_SESSION['preostaliOdgovori']=$odgovori;

所有这些实际上都有效,但是仅当我手动加载mojaTvrtka.php时才有效。我想说的是,当用户登录时,此号码会自动打印在header.php中,但我得到的只是未定义的索引。我不确定我在做什么错。

2 个答案:

答案 0 :(得分:0)

在您的流程中,您需要包括NotifyWaitingThreadFunction,以便它在加载mojaTvrtka.php并随后获得header.php数据之前发生。您可能只需要在顶部$_SESSION

如果您将该文件包括在include_once('../PATH/TO/mojaTvrtka.php');的顶部,则可能会起作用。但是您应该知道的是,如果在每个header.php中都包含此代码,不是每个页面都运行此SQL代码吗?您应该拥有它,以便代码进行检查以确保在包含header.php之前它不存在。

答案 1 :(得分:0)

您正在将会话存储在变量中,并尝试使用变量

在另一个页面中调用变量

由于会话是全局变量,因此可以在mojaTvrtka.php中调用$ _SESSION ['activeUserId'],直接将其传递到mysqlquery中,如下所示。

$query ="SELECT pitanje.pitanje_id,naslov,pitanje.tvrtka_id, tvrtka.tvrtka_id,preostaliOdgovori ,
    zaposlenik.tvrtka_id,korisnik_id
    FROM pitanje 
    INNER JOIN tvrtka ON tvrtka.tvrtka_id = pitanje.tvrtka_id
    INNER JOIN zaposlenik ON zaposlenik.tvrtka_id = pitanje.tvrtka_id
    WHERE korisnik_id = $_SESSION['activeUserId']";