簡體   English   中英

PHP中的會話不會阻止用戶

[英]Sessions in PHP not blocking users

我正在創建一個具有登錄名的網站,並使用會話來防止用戶訪問特定頁面(除非已登錄)。我有一個會話檢查器(位於底部),並且沒有看到會話,因此我認為我已經正確注冊了,但是我已經檢查了幾次網絡,它說我的操作方式是$ _SESSION ['myusername'] = $ myusername;。 是較新的方式,但我認為這是我的問題。 非常感謝您抽出寶貴時間為我提供幫助。

登錄腳本:

         <table width="200" border="0" align="center" cellpadding="0" cellspacing="1">
         <tr>
        <form name="form1" method="post" action="checklogin.php">
         <td>
         <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
         <tr>
         <td width="78">Username</td>
         <td width="6">:</td>
         <td width="294"><input name="myusername" type="text" id="myusername"></td>
         </tr>
         <tr>
         <td>Password</td>
         <td>:</td>
         <td><input name="mypassword" input type="password" id="mypassword"></td>
         </tr>
         <tr>
         <td>&nbsp;</td>
         <td>&nbsp;</td>
         <td><input type="submit" name="Submit" value="Login"></td>
         </tr>
         </table>
         </td>
        </form>
         </tr>
         </table>

檢查登錄過程:

$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$encrypted_mypassword=md5($mypassword);


$sql="SELECT * FROM users WHERE username='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
$_SESSION['myusername'] = $myusername; 
header("location: control.php");
}
else {
header("location: failed.php");
}
?>

除非登錄,否則我添加到不允許訪問的頁面的會話橫幅:

<?php
session_start();
if( isset($_SESSION['myusername']) ){
header("Location: login.php");
}
?> 

最后是我的注銷腳本:

<?php
session_start();
$_SESSION = array(); 
session_unset();
session_destroy();

header("Location:login.php");
exit();
?>

任何幫助將不勝感激。 對於許多信息,我很抱歉,只是想確保我列出了所有信息。 我不確定自己在做什么錯。 我有另一個腳本正在使用,以查看會話是否正在運行,甚至在那里都看不到會話。

<?php
$sid = session_id();
if($sid) {
echo "Session exists!";
} else {
session_start();
}
?>

在與會話或$ _SESSION變量有任何關系的每個頁面上都需要session_start(),因此請將其添加到“檢查登錄過程”中。

和這個:

if( isset($_SESSION['myusername']) ){
header("Location: login.php");

應該不是!

if( !isset($_SESSION['myusername']) ){
header("Location: login.php");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM