login και Sessions!

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

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

Απάντηση
trilos021
Δημοσιεύσεις: 131
Εγγραφή: 04 Νοέμ 2003 18:06

login και Sessions!

Δημοσίευση από trilos021 » 09 Οκτ 2010 17:37

καλησπέρα και παλι.Μέσω κάποιου tutorial έφτιαξα το παρακάτω login

Κώδικας: Επιλογή όλων

<?php include "base.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>έδραOS</title>
<link rel="stylesheet" href="style/style.css" type="text/css" />
</head>
<body>
<div id="main">
<?php
if&#40;!empty&#40;$_SESSION&#91;'LoggedIn'&#93;&#41; && !empty&#40;$_SESSION&#91;'Username'&#93;&#41;&#41;
    
&#123;
?>
<?php
session_start&#40;&#41;;
if &#40;$_SESSION&#91;'level'&#93; == 1 &#41;
&#123;
// admin menu


   header&#40; 'Location&#58; administrator/index.php' &#41; ;


&#125;
else if &#40;$_SESSION&#91;'level'&#93; == 0&#41;
&#123;
// normal user menu
echo "Page 3";
&#125;
?>



     <?php
&#125;
elseif&#40;!empty&#40;$_POST&#91;'username'&#93;&#41; && !empty&#40;$_POST&#91;'password'&#93;&#41;&#41;
&#123;
    $username = mysql_real_escape_string&#40;$_POST&#91;'username'&#93;&#41;;
    $password = md5&#40;mysql_real_escape_string&#40;$_POST&#91;'password'&#93;&#41;&#41;;

    $checklogin = mysql_query&#40;"SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'"&#41;;

    if&#40;mysql_num_rows&#40;$checklogin&#41; == 1&#41;
    &#123;
        $row = mysql_fetch_array&#40;$checklogin&#41;;
        $level = $row&#91;'level'&#93;;

        $_SESSION&#91;'Username'&#93; = $username;
        $_SESSION&#91;'level'&#93; = $level;
        $_SESSION&#91;'LoggedIn'&#93; = 1;

        echo "<h1>Success</h1>";
        echo "<p>We are now redirecting you to the member area.</p>";
        echo "<meta http-equiv='refresh' content='=2;index.php' />";
             
    &#125;
    else
    &#123;
        echo "<h1>Error</h1>";
        echo "<p>Sorry, your account could not be found. Please <a href=\"index.php\">click here to try again</a>.</p>";
    &#125;
&#125;
else
&#123;
    ?>

   <h1>Member Login</h1>

   <p>Thanks for visiting! Please either login below, or <a href="register.php">click here to register</a>.</p>

    <form method="post" action="index.php" name="loginform" id="loginform">
    <fieldset>
        <label for="username">Username&#58;</label><input type="text" name="username" id="username" /><br />
        <label for="password">Password&#58;</label><input type="password" name="password" id="password" /><br />
        <input type="submit" name="login" id="login" value="Login" />
    </fieldset>
    </form>

   <?php
&#125;
?>

</div>
</body>
</html>
θα ήθελα να ρωτήσω ποιο θα είναι το session (που και αναλογα με το level του κάθε χρήστη )θα έχουν πρόσβαση τα μέλη.
Δηλαδή τα απλά member να μην έχουν πρόσβαση στο admin panel.
υ.γ:συγγνώμη αν η ερώτηση είναι ηλίθια.Δεν τα παω καλά με php!

trilos021
Δημοσιεύσεις: 131
Εγγραφή: 04 Νοέμ 2003 18:06

login και Sessions!

Δημοσίευση από trilos021 » 09 Οκτ 2010 18:52

το θέμα του session φτάχτηκε,το πρόβλημα είναι αν ενας μπει ως member έχει πρόσβαση και στο administrator panel δίνοντας το αντίστοιχο link.καμια ιδέα?

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

login και Sessions!

Δημοσίευση από korgr » 09 Οκτ 2010 18:54

Κάνε αυτό:

Κώδικας: Επιλογή όλων

if &#40;$_SESSION&#91;'level'&#93; == 1 &#41; 
&#123; 
// admin menu 


   header&#40; 'Location&#58; administrator/index.php' &#41; ; 


&#125; 
else if &#40;$_SESSION&#91;'level'&#93; == 0&#41; 
&#123; 
// normal user menu 
echo "Page 3"; 
&#125; 
κάπως έτσι:

Κώδικας: Επιλογή όλων

if &#40;$_SESSION&#91;'level'&#93; == 0 &#41; 
&#123; 
// admin menu 


   header&#40; 'Location&#58; administrator/index.php' &#41; ; 


&#125; 
else if  &#40;$_SESSION&#91;'level'&#93; > 0&#41; 
&#123; 
// normal user menu 
echo "Page ".$_SESSION&#91;'level'&#93;; 
//ανάλογα την τιμή της $_SESSION&#91;'level'&#93; εμφάνισε την κατάλληλη σελίδα του χρήστη με δικαιώματα επιπέδου $_SESSION&#91;'level'&#93;
&#125;
Δηλαδή όρισε 0 τον master administrator

trilos021
Δημοσιεύσεις: 131
Εγγραφή: 04 Νοέμ 2003 18:06

login και Sessions!

Δημοσίευση από trilos021 » 09 Οκτ 2010 19:00

ναι αλλα το θέμα είναι οτι θα φτιάξω άλλα 7 επίπεδα χρηστών! οπότε αντι για >0 θα είναι ==1,==2,==3 ...κ.ο.κ.?

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

login και Sessions!

Δημοσίευση από korgr » 09 Οκτ 2010 19:20

Όχι!
Ο έλεγχος πλέον γίνεται μόνο στο αν είναι μεγαλύτερο από μηδέν.
Εκμεταλεύεσαι την θετική τιμή μετά και κάνεις το redirect κάπως έτσι:

Κώδικας: Επιλογή όλων

if &#40;$_SESSION&#91;'level'&#93; == 0 &#41; 
&#123; 
// admin menu 


   header&#40; 'Location&#58; administrator/index.php' &#41; ; 


&#125; 
else if  &#40;$_SESSION&#91;'level'&#93; > 0&#41; 
&#123; 
// normal user menu 
header&#40; 'Location&#58; userProfiles.php?userID='.$row&#91;'id'&#93;.'&accessLevel='.$_SESSION&#91;'level'&#93; &#41; ; 
&#125;

trilos021
Δημοσιεύσεις: 131
Εγγραφή: 04 Νοέμ 2003 18:06

login και Sessions!

Δημοσίευση από trilos021 » 09 Οκτ 2010 19:37

μετα ο χρήστης απο το επίπεδο 5 δεν θα μπορεί να μπεί σε καποιον που είναι επιπεδο 6?εγώ σκεφτόμουν να κάνω κάτι με το session που βάζω στις σελίδες που θέλω να βλέπουν οι συνδεδεμένοι χρήστες.

Κώδικας: Επιλογή όλων

<?
session_start&#40;&#41;;
if&#40;!session_is_registered&#40;authenticated&#41;&#41;&#123;
header&#40;"location&#58;../index.php"&#41;;
&#125;
?>
σχεδιάζω το κάθε level να έχει δικό του layout.δηλ:
user_level2---->level2.php
k.o.k.

trilos021
Δημοσιεύσεις: 131
Εγγραφή: 04 Νοέμ 2003 18:06

login και Sessions!

Δημοσίευση από trilos021 » 09 Οκτ 2010 22:20

λύθηκε τελικά βάζοντας αυτο σε κάθε σελίδα "επιπέδου"

Κώδικας: Επιλογή όλων

<?
session_start&#40;&#41;;
if&#40;!session_is_registered&#40;authenticated&#41;&#41; &#123;
header&#40;"location&#58;../index.php"&#41;;
&#125;
else if&#40;!$_SESSION&#91;'level'&#93; == 1&#41;&#123;
header&#40;"location&#58;../index.php"&#41;;
&#125;
?>
Είναι οκ απο θέμα ασφάλειας όμως?

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

login και Sessions!

Δημοσίευση από Apostolis_38 » 10 Οκτ 2010 12:59

Τι εννοείς από θέμα ασφάλειας;

Γενικώς τα sessions είναι πιο δύσκολο να ανακαλύψει κάποιος αν χρησιμοποιούντα και πότε.
Δεν εμφανίζονται στο address bar όπως οι $_GET, ούτε φαίνονται με view source όπως οι $_POST.
Βέβαια αν χρησιμοποιείς cookies μπορεί κάποιος να το καταλάβει.
Αλλά και πάλι στα sessions μπορείς να χρησιμοποιήσεις οποιαδήποτε παραμέτρο (int,text,varchar κ.λ.π. κ.λ.π.) οπότε είναι δύσκολο να βρει κάποιος τι ακριβώς χρησιμποποιείς.

Δεν ξέρω αν υπάρχει τρόπος να "hackάρουν" το session.


Σαν πρόσθετη ασφάλεια θα μπορούσες να χρησιμοποιήσεις

Κώδικας: Επιλογή όλων

else if&#40;!$_SESSION&#91;'level'&#93; === 1&#41;
αντί για

Κώδικας: Επιλογή όλων

else if&#40;!$_SESSION&#91;'level'&#93; == 1&#41;
αλλά πρόσεχε μήπως σου δημιουργήσει προβλήματα αντί να σε βοηθήσει.

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

login και Sessions!

Δημοσίευση από nbc » 10 Οκτ 2010 22:10

Apostolis_38 έγραψε:Δεν ξέρω αν υπάρχει τρόπος να "hackάρουν" το session.
LOL (ψάξε για session hijacking).

Απόστολε, το native session handling της PHP είναι ο εύκολος τρόπος και όχι ο ασφαλής. Όποιος θέλει ασφάλεια δεν ασχολείται με τη $_SESSION.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

login και Sessions!

Δημοσίευση από Apostolis_38 » 10 Οκτ 2010 23:51

Ναι, έχεις δίκιο μαν.
Με μια ματιά στη wikipedia, δεν είναι και τόσο δύσκολο.
http://en.wikipedia.org/wiki/Session_hijacking

Εσύ τι προτείνεις σαν πιο ασφαλή τρόπο; Αυτούς που αναφέρει εκεί (long random numbers, encryption κ.λ.π.) ή κάτι άσχετο με sessions;

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

login και Sessions!

Δημοσίευση από nbc » 11 Οκτ 2010 00:27

Είναι μεγάλη ιστορία αυτή, Απόστολε, θέλει κατεβατά...

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

login και Sessions!

Δημοσίευση από gvre » 14 Οκτ 2010 12:44

trilos021 έγραψε:ναι αλλα το θέμα είναι οτι θα φτιάξω άλλα 7 επίπεδα χρηστών! οπότε αντι για >0 θα είναι ==1,==2,==3 ...κ.ο.κ.?
Άσε τα levels και χρησιμοποίησε ρόλους στη θέση τους. Ψάξε για RBAC στο Google για περισσότερες λεπτομέρειες.

Απάντηση

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

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

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