我在這個網站比較新。我潛伏了很長時間,但從來沒有真正自問過一個問題。爲什麼我有一個頁面,只有一個頁面,訪問後失去登錄會話?
我正在開發一個網站使用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標籤可以被刪除。 –