Πρόβλημα με τα SESSIONS

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
gchar
Δημοσιεύσεις: 32
Εγγραφή: 30 Αύγ 2008 18:19

Πρόβλημα με τα SESSIONS

Δημοσίευση από gchar » 30 Αύγ 2008 18:48

Καλησπέρα σε όλους,

Έχω ένα πρόβλημα το οποίο θα το χαρακτήριζα ανεξήγητο και περίεργο και θα εκτιμούσα πάρα πολύ αν μπορούσε κάποιος να με βοηθήσει να ξεκολλήσω.

Το πρόβλημα έχει ως εξής:

έχω μία Login σελίδα (loginPage.php) στην οποία ο χρήστης δίνει Username και password κάνω έλεγχο αν δίνει τα σωστά στοιχεία, και αν τα δίνει τότε αποθηκεύω σε δύο sessions το user id του (uid) και το level του (το οποίο καθορίζει τα δικαιώματα πρόσβασης του), στην συνέχεια αν δίνει τα στοιχεία σωστά τον στέλνει στην Home page (home.php) στην οποία κάνω έναν ελεγχο για το αν υπάρχει session και αν υπάρχει τότε εμφανίζει την home page αν όχι τον κάνει redirect στην logoutPage.

Το πρόβλημα είναι ότι την πρώτη φορά που ανοίγω έναν browser και τρέχω την εφαρμογή τότε όταν βάζω το username Και το password σωστά μου αποθηκεύει στα sessions τις σωστές τιμές (το έχω ελέγξει βάζοντας echo και τυπώνοντας το) όμως με το που με πάει στην home page τα sessions χάνονται(γίνονται κενά) οπότε με πετάει στην logoutPage. Αυτό είναι το ένα περιέργο (όχι και τόσο) το πίο περίεργο από όλα όμως και για το οποίο κοντεύω να τρελλαθώ είναι ότι μόλις με πετάξει στην logoutpage πάταω ένα Link Που έχω σε αυτήν με πάει στην login page βάζω για δεύτερη φορά username και password και τότε με βάζει κανονικά μέσα!!!!!!!!!!!!!!!!!

Σας παραθέτω τον κώδικα για τις εμπλεκόμενες σελίδες και ελπίζω στην παρατηριτικότητα σας την ικανότητα σας και την καλοσύνη σας για τυχόν βοήθεια!!!

loginPage.php

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Είσοδος στο σύστημα</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
include 'library/header.php';
include 'library/config.php';
include 'library/openDB.php';

?>
<div id="main_content">
<p align="center"><B>Είσοδος στο Σύστημα</B></p>
<table align="center" border="0">
<form id="Formlogin" action="loginPage.php" method="POST">
<tr>
<td>Όνομα Χρήστη: </td>
<td><input type="text" name="username" id="username"></td>
</tr>
<tr>
<td>Κωδικός Χρήστη:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan=2 align="center"><input type="submit" value="Είσοδος">
&nbsp;<input name="reset" type="reset" value="Καθαρισμός" /></td>
</tr>
</form>
</table>
<?php
$username=trim($_REQUEST['username']);
$password=trim($_REQUEST['password']);
if (($username=="") && ($password==""))
{
?>


</div>
<?php
}
else
{

//session_register('uid');
//session_register('level');


$sql = mysql_query("SELECT uid,level FROM users WHERE username = '$username' and password='$password'");
$fetch_em = mysql_fetch_array($sql);
$numrows = mysql_num_rows($sql);

if($numrows != '0')
{
$uid=$fetch_em['uid'];
$level=$fetch_em['level'];

$_SESSION['uid']=$uid;
$_SESSION['level']=$level;

//include 'library/closeDB.php';

//$URL="home.php";

echo("<script>window.location.href = 'home.php';</script>");
//header('location : home.php');

}
else
{
?>

<p align="center">*Λάθος Εισαγωγή Στοιχείων</p>

<?php
}
}
?>
</div>
<?php
include 'library/footer.php';
?>

</div>


<script>document.getElementById('username').focus();</script>
</body>
</html>


home.php

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Αρχική Σελίδα</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
include 'library/header.php';
include 'library/menu.php';
include 'library/checkLogin.php';
?>
<div id="main_content">
<table align="center">
<tr>
<td align="center">
Κείμενο
</td>
</tr>
</table>
</div>
<?php
include 'library/footer.php';
?>
</div>
</body>
</html>

logoutPage.php

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Έξοδος απο το σύστημα</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
include 'library/header.php';
?>
<div id="main_content">
<table align="center">
<tr>
<td align="center">
<?php
session_unset();
session_destroy();
echo('Εχετε αποσυνδεθεί απο το σύστημα!<br>Αν θέλετε να ξανασυνδεθείτε τότε πατήστε <a href="loginPage.php">Εδώ</a>');
?>
</td>
</tr>
</table>
</div>
<?php
include 'library/footer.php';
?>
</body>
</html>


checkLogin.phpΕλέγχει αν ο χρήστης έχει κάνει Login

<?php
session_start();
$uid=$_SESSION['uid'];
if ($uid=='' || $uid=='0')
{

$URL="logoutPage.php";
echo("<script>location.href = '$URL';</script>");
}
?>


Αν χρειαστήτε κάτι άλλο που θα σας βοηθήσει για να δείτε καλύτερα το πρόβλημα πείτε μου.

Ευχαριστω πολύ εκ των προτέρων όποιον ασχοληθεί με το προβλημά μου!

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με τα SESSIONS

Δημοσίευση από vassilism » 30 Αύγ 2008 19:11

Στο loginPage.php γιατί βάζεις?
<?php
session_start();
?>
Την session_start την έχεις στο header.php?

gchar
Δημοσιεύσεις: 32
Εγγραφή: 30 Αύγ 2008 18:19

Πρόβλημα με τα SESSIONS

Δημοσίευση από gchar » 30 Αύγ 2008 19:16

Κατρχήν ευχαριστώ για το ενδιαφέρον.

την session_start(); δεν την έχω στο header.php.την βάζω σε κάθε σελίδα ξεχωριστά.
Πιστέυεις θα βοηθούσε καλύτερα αν την είχα εκεί?

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Πρόβλημα με τα SESSIONS

Δημοσίευση από Banavas » 30 Αύγ 2008 19:57

H session_start(); είναι μια χαρά εκεί που είναι.

Τεστάρισα το script που έδωσες και λειτουργεί μια χαρά. Δηλάδή με αναγνωρίζει και με βάζει στην home με την πρώτη.

Το πρόβλημα σε σένα πρέπει να είναι την ανάγνωση από την βάση και στην απόδοση του uid στο ανάλογο session. Αν για κάποιο λόγο δεν σε αναγνωρίσει για χρήστη σε στέλνει στην logoutPage.php και σου διαγράφει τα sessions. Βάλε echo στην login page να δεις αν αναγνωρίζει τον χρήστη. (εγώ έδωσα απέυθέίας τιμές στα session)

H checkLogin.php είναι απαράδεκτο να ελέγχει μόνο αν υπάρχει το session uid όποιο και αν είναι αυτό.
Happy coding....
Μάρκος
http://lasernet.gr

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες