检查PHP会话-ISSET($SESSION)-不工作

检查PHP会话-ISSET($SESSION)-不工作,php,session,login,Php,Session,Login,这在我的页面中,它应该检查用户是否已登录 但任何人都可以评估,不仅仅是那些登录的人 <?php session_start(); if( isset($_SESSION["myusername"]) ){ header("location:main_login.html"); } ?> 我试过了 if(isset($\u会话[“myusername”]){ 及 if(isset($\u会话[$myusername]){ 登录代码可能没有创建会话 <?php ob_st

这在我的页面中,它应该检查用户是否已登录

但任何人都可以评估,不仅仅是那些登录的人

<?php
session_start();
if( isset($_SESSION["myusername"]) ){
header("location:main_login.html");
}
?>

我试过了

if(isset($\u会话[“myusername”]){

if(isset($\u会话[$myusername]){

登录代码可能没有创建会话

<?php

ob_start();
$host="ClubEvents.db.9606426.hostedresource.com"; // Host name 
$username="ClubEventsRead"; // Mysql username 
$password="Pa55word!"; // Mysql password 
    $db_name="ClubEvents"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
    $myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>


您需要取消检查。

将NOT运算符
添加到if语句中。另外,不要忘记添加
exit()
在你的头之后。
位置
头告诉浏览器重定向,但是攻击者可以查看你的页面,只需忽略
位置
头,从而绕过你的身份验证系统,因为你的PHP代码将继续执行

if( !isset($_SESSION["myusername"]) ){
    header("location:main_login.html");
    exit();
}
此外,您在发布的登录代码中没有调用
会话\u start()
,因此无法访问该会话。

您还可以使用:

<?php

session_start();
if (empty($_SESSION['myusername'])) {
    header('Location: main_login.html');
}

?>


好的,我使用了这个,现在它不会登录-可能我的登录没有创建会话?+1记住退出,doh on me=oP.Add
session_start();
到你的另一个页面,并将if语句更改为如图所示。+2 I double@crypticツ 评论,我几乎把所有的头发都撕了,就在剩下的头发不多的时候,我看到了退出()注释:)session_register()从php版本5.3开始折旧,并从php版本5.4中删除。因此,请不要再使用它。感谢您发布有效的数据库凭据和服务器的主机名。您可能应该为您的
管理
用户选择一个比
密码
更强大的密码,并且至少考虑使用salt密码将其存储为纯MD5。最后,不要只编辑本文中的凭据,它们仍将在编辑日志中。您必须在服务器上更改它们。此外,如果您将
成员
密码存储为纯文本,您将在夜间被疯狂的山羊吃掉。这是一个测试数据库,我的实际数据库不同我想添加它,以便如果他们觉得有必要,我可以测试一下你的葬礼。如果你付钱给我,我甚至不会在互联网上公开像这样的只读mySQL帐户。
<?php

session_start();
if (empty($_SESSION['myusername'])) {
    header('Location: main_login.html');
}

?>