我在这个网站比较新。我潜伏了很长时间,但从来没有真正自问过一个问题。为什么我有一个页面,只有一个页面,访问后失去登录会话?
我正在开发一个网站使用PHP,HTML,引导CSS,我自己的CSS和JavaScript。该页面以用户必须登录才能访问的方式工作。如果他们没有登录,他们只是重定向回登录页面。如果他们登录,他们可以使用该网站。
现在,我有这个问题,一切似乎工作正常。该网站似乎将登录用户的会话正常进行,除了在一页上。我不知道为什么。所有页面调用excact相同的会话变量
这是写在顶部,在任何其他事情发生之前。
<?php
// if session is not set this will redirect to login page
if(!isset($_SESSION['user'])) {
header("Location: index.php");
exit;
}
// select loggedin users detail
$res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
@$userRow=mysql_fetch_array($res);
<?
并检查用户是否登录,进行会话。在生成任何其他html之前,我已将其作为我身体标记中的第一件事物。
<?php
if(!isset($_SESSION['user']))
{
header("Location: home.php".SID);
exit;
}
?>
现在这是来自会话实际携带并且正常工作的页面之一的示例。然而,奇怪的部分是每个页面都以这种方式构建并且工作正常,除了最后一页。最后一页以某种方式丢弃会话,并且在离开所述页面后您将被重定向回索引页面。我寻找错别字和一切。确保会话的目标是正确的页面。
所有各自的数据库和各种PHP文件都包含在内。我故意将它们排除在外,因为我不相信它们是问题所在。如果其他人可能指向可能是外部的问题,我可以提供有关包含的文件的信息,例如dbconfig等。但是,它们应该很好。
现在我的问题是,为什么我的最后一页失去了会话?
PS:所有这些都在本地主机上运行。
编辑:这里是丢弃会话的页面的整个代码。
<?php
session_start();
ob_start();
require_once 'dbconnect.php';
include_once 'dbconfig.php';
// if session is not set this will redirect to login page
if(!isset($_SESSION['user'])) {
header("Location: index.php");
exit;
}
// select loggedin users detail
$res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
@$userRow=mysql_fetch_array($res);
?>
<!DOCTYPE html>
<html>
<head>
<title>Konsulent Info</title>
<link rel="stylesheet" href="assets/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="style.css" type="text/css" />
<link rel="stylesheet" href="style2.css" type="text/css" />
<meta charset="utf-8">
</head>
<body>
<?php
if(!isset($_SESSION['user']))
{
header("Location: view.php".SID);
exit;
}
?>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="http://localhost/stconsulttest/home.php">ST-Consult</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="http://localhost/stconsulttest/home.php">Hjem</a></li>
<li><a href="http://localhost/stconsulttest/consult.php">Uploads</a></li>
<li><a href="http://localhost/stconsulttest/view.php">Info</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-user"></span> Bruger <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="logout.php?logout"><span class="glyphicon glyphicon-log-out"></span> Sign Out</a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div id="header">
<label>Uploads</label>
</div>
<div id="body">
<?php session_start(); ?>
<?php $_SESSION['user'] = $row['userId']; ?>
<table width="80%" border="1">
<tr>
<th colspan="4">Dine CV uploads <label><a href="index.php">upload nye filer</a></label></th>
</tr>
<tr>
<td>Filnavn</td>
<td>Filtype</td>
<td>Filestørrelse (KB)</td>
<td>Se filer</td>
</tr>
<?php
$sql="SELECT * FROM tbl_cv";
$result_set=mysql_query($sql);
while($row=mysql_fetch_array($result_set))
{
?>
<tr>
<td><?php echo $row['file'] ?></td>
<td><?php echo $row['type'] ?></td>
<td><?php echo $row['size'] ?></td>
<td><a href="uploads/<?php echo $row['file'] ?>" target="_blank">Åben</a></td>
</tr>
<?php
}
?>
</table>
<br /><br />
<br /><br />
<br /><br />
<table width="80%" border="1">
<tr>
<th colspan="4">Dine reference uploads <label><a href="index.php">upload nye filer</a></label></th>
</tr>
<tr>
<td>Filnavn</td>
<td>Filtype</td>
<td>Filstørrelse (KB)</td>
<td>Se filer</td>
</tr>
<?php
$sql="SELECT * FROM tbl_referencer";
$result_set=mysql_query($sql);
while($row=mysql_fetch_array($result_set))
{
?>
<tr>
<td><?php echo $row['file'] ?></td>
<td><?php echo $row['type'] ?></td>
<td><?php echo $row['size'] ?></td>
<td><a href="uploads/<?php echo $row['file'] ?>" target="_blank">Åben</a></td>
</tr>
<?php
}
?>
</table>
<br /><br />
<table width="80%" border="1">
<tr>
<th colspan="11">Din kontakt information <label><a href="index.php">upload new contact information</a></label></th>
</tr>
<tr>
<td>Fornavn</td>
<td>Mellemnavn</td>
<td>Efternavn</td>
<td>Telefon</td>
<td>Email</td>
<td>Adresse</td>
<td>Postnummer</td>
<td>Land</td>
<td>CVR#</td>
<td>CPR#</td>
<td>LinkedIn</td>
</tr>
<?php
$sql="SELECT * FROM tbl_kontaktoplysninger";
$result_set=mysql_query($sql);
while($row=mysql_fetch_array($result_set))
{
?>
<tr>
<td><?php echo $row['Fornavn'] ?></td>
<td><?php echo $row['Mellemnavn'] ?></td>
<td><?php echo $row['Efternavn'] ?></td>
<td><?php echo $row['Telefon'] ?></td>
<td><?php echo $row['Email'] ?></td>
<td><?php echo $row['Adresse'] ?></td>
<td><?php echo $row['Postnummer'] ?></td>
<td><?php echo $row['Land'] ?></td>
<td><?php echo $row['Cvrnummer'] ?></td>
<td><?php echo $row['Cprnummer'] ?></td>
<td><a href="//<?php echo $row['LinkedIn'] ?>" target="_blank">LinkedIn</a></td>
</tr>
<br /><br />
<br /><br />
<br /><br />
<?php
}
?>
</table>
</div>
<script src="assets/jquery-1.11.3-jquery.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
</body>
</html>
<?php ob_end_flush(); ?>
你为什么要检查两次,为什么不同的重定向,如果没有登录? 'header(“Location:index.php”);'和'header(“Location:home.php”.SID);' - 我们需要查看所有正在破解的页面的代码,我们不能如果没有这些信息,真的知道发生了什么 –
[为什么不应该在PHP中使用mysql \ _ \ *函数?](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql -phunctions-in-php) –
@MasivuyeCokile虽然确实,人们应该停止使用mysql_ *扩展,这个问题是关于看似相同页面的不同行为,而不是mysql。实际上,mysql标签可以被删除。 –