Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CHECK PHP SESSION - ISSET($SESSION - IS NOT WORKING [closed]

Tags:

php

session

login

This is in my page, and it should check that a user is logged in on http://carbonyzed.co.uk/Websites/Jason/sites/2/test/login_success.php

but anybody can assess it, not just those logged in

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

I have tried

if( isset($_SESSION["myusername"]) ){

and

if( isset($_SESSION[$myusername]) ){

LOGIN CODE perhaps a session isn't being created?

<?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();
?>
like image 671
Henry Aspden Avatar asked Nov 23 '12 17:11

Henry Aspden


People also ask

Is Isset a session?

isset is a function that takes any variable you want to use and checks to see if it has been set. That is, it has already been assigned a value. With our previous example, we can create a very simple pageview counter by using isset to check if the pageview variable has already been created.

How check session is start or not in PHP?

Use session_id(), it returns an empty string if not set. It's more reliable than checking the $_COOKIE.

How check session expired in PHP?

You need to use session_encode() and session_decode(). The former will only read data from the $_SESSION array so eavesdropping on sessions requires some careful subversion of session_id() and session_start() . session_decode() however will happily convert anything you throw at it.


1 Answers

Add the NOT operator ! to the if statement. Also don't forget to add exit() after your header. The location header is telling the browser to redirect, but an attacker could view your page and simply ignore the location header, thus bypassing your authentication system becuase your PHP code would continue to execute.

if( !isset($_SESSION["myusername"]) ){
    header("location:main_login.html");
    exit();
}

Furthermore, you aren't calling session_start() in the login code that you posted, therefore the session is not accessible.

like image 161
MrCode Avatar answered Sep 27 '22 19:09

MrCode