login με δικαιωματα

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

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

Απάντηση
dourvas
Δημοσιεύσεις: 26
Εγγραφή: 05 Δεκ 2008 15:33

login με δικαιωματα

Δημοσίευση από dourvas » 13 Δεκ 2008 10:45

Γεια σας.

εχω φτιαξει ενα login script το οποιο δουλευει μια χαρα αλλα θελω να κανω καποιεσ αλλαγες σε αυτο. θελω να ορισω δικαιωματα ωστε καποιοι συνδεδεμένοι χρηστες να μπορουν να εισερχονται σε καποιες σελίδες και καποιοι αλλοι σε άλλες. Στην βαση έχω τον πινακα members που εκτος απο το username kai to psw εχει ακόμα το πεδιο class που μπορει να περιεχει 2 τιμές (1 ή 2) αναλογα με την κατηγορια που ο χρήστης ανήκει. Στο login script παιρνω την τιμη του class και την καταχωρς σε ενα session (οταν το login ειναι σωστο):
[$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
$_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
$_SESSION['SESS_LAST_NAME'] = $member['lastname'];
$_SESSION['SESS_CLASS'] = $member['class'];]

στην συνέχεια στέλνω τον χρήστη στην αρχική σελίδα. Σε δοκιμές εμφανισης που εκανα σε αυτήν την σελίδα με
echo $_SESSION['SESS_CLASS']
η τιμή παραμένει μέσα στο session σωστα.
Για να εισελθω σε μια ιστοσελίδα που ειναι μεν για συνδεδεμενουσ χρήστες αλλά αναλογα με το class τους μπορεί και να μην τουσ επιτρεπετε η πρόσβαση εχω στην αρχη της σελίδας αυτόν τον κωδικα:
session_start();
if ($_SESSON['CLASS']==1I){
if(!session_is_registered(authenticated)){
echo "
<html>
<head>
// εμφανισε απογορευεται αλλιως συνεχισε παρακατω στην σωστη σελιδα

το αποτελεσμα πλεον ειναι να γινεται παντα επιτυχημενη εισοδο στην σελιδα
Δυστηχως αντιλαμβάνομαι πως η μεταβλητη SESSON['CLASS'] δεν έχει κρατησει την τιμη της και μαλλον ειναι κενη??
Μπορειτε να με συμβουλέψετε τι πρπει να κανω?

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

login με δικαιωματα

Δημοσίευση από ThyClub » 13 Δεκ 2008 12:24

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

if &#40;$_SESSON&#91;'CLASS'&#93;==1I&#41;&#123;
$_SESSION['CLASS'] ίσως?

dourvas
Δημοσιεύσεις: 26
Εγγραφή: 05 Δεκ 2008 15:33

login με δικαιωματα

Δημοσίευση από dourvas » 13 Δεκ 2008 13:03

:)

Μακαρι να ηταν τοσο ευκολο. το Ι το σβησα καταλαθος στην αντιγραφη του κωδικα στο forum.

το ζήτημα ειναι οτι οι μεταβλητες μέσα στο session χανουν τισ τιμές τους με το που ανοιγω μια σελιδα του ιδιου σιτε και ετσι δεν μπορει να γινει ελεγχος. πως θα κρατήσω την μεταβλητη $_SESSION['CLASS']? με το που την περνω στο login script ανοιγω την σελιδα ινδεχ. εκει μεσα η μεταβλητη $_SESSION['CLASS'] εχει αυτο που πρεπει. μετα μέσα απο το ινδεχ ανοιγω την σελιδα teacher (ιδιο durectory). Μέσα στο teacher φαινεται πως η $_SESSION['CLASS'] δν εχει τιμη

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

login με δικαιωματα

Δημοσίευση από ThyClub » 13 Δεκ 2008 13:17

Δώσε όλο τον κώδικα. Χωρίς αυτόν μόνο εικασίες μπορώ να κάνω ;)

dourvas
Δημοσιεύσεις: 26
Εγγραφή: 05 Δεκ 2008 15:33

login με δικαιωματα

Δημοσίευση από dourvas » 13 Δεκ 2008 14:20

ok

το login script που ελεγχει αν οι κωδικοι ειναι σωστοι
.....
[$qry="SELECT * FROM members WHERE login='$login' AND passwd='$password'"; $result=mysql_query($qry);

if($result) {
if(mysql_num_rows($result) == 1) {
//Login Successful
session_regenerate_id();
session_register("authenticated");
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
$_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
$_SESSION['SESS_LAST_NAME'] = $member['lastname'];
$_SESSION['SESS_CLASS'] = $member['class'];
session_write_close();

header("location: index.php");
exit();
}else {
//Login failed
header("location: login-failed.php");
exit();]

to index που παει μετα απο επιτυχημενο login
[.....
<td class='left-menu' valign='top' align='center' width ="20%" >&nbsp;<br>&nbsp;
TEACHER&nbsp;<br>
<a href="/IEK/teacher.php"><img src="images/teacher.gif" border='0' width="100" height="90" align='center' alt=""> </a><br><br>&nbsp;
<!--/*LOGIN FORMA*/-->
<form method="POST" action="login-exec.php" class="login">
<fieldset width ="20%">
<legend class = 'login'>LOGIN</legend>
<blockquote align="center">
USERNAME: <input name="login" type="text" id="login" size='12' value="" class="small-login"/>
PSW:&nbsp;<input name="password" type="password" id="password" size = '12' value="" class="small-login"/><br>
<input type="submit" name="Submit" value="&#207;&#202;" class="small-login">
</blockquote>
</fieldset>
</form>

<?php
if(session_is_registered(authenticated))
//if (isset($_SESSION['SESS_LAST_NAME']))
{
echo "ΚΑΛΩΣ ΟΡΙΣΕΣ.". $_SESSION['SESS_LAST_NAME'];
echo "<html> <form method='POST' action='logout.php' class='login'>
<input type='submit' name='Submit' value='aaposyndesh' class='small-login'>
</form> </html> ";
}
?>........]
επιστρεφει στο index εμφανιζει το μηνυμα ΚΑΛΩΣ ΟΡΙΣΕΣ , USER

οταν ακολουθήσω το link teacher. στην πρωτη γραμμη(tou teacher) κανω inlude to auth. php
auth.php:
[
<?php
session_start();
if(!session_is_registered(authenticated) || ($_SESSION['CLASS']!='1' ))
header("location: access-denied.php");
exit();}?>
]

φαινεται ομως οτι $_SESSION['CLASS'] ειναι παντα διαφορετικο του 1 γιατι παντα βγαζει
access denied
το δοκιμασα με echo δν εχει τιποτα μεσα. πωσ 8α κρατησει την τιμη του?

dourvas
Δημοσιεύσεις: 26
Εγγραφή: 05 Δεκ 2008 15:33

login με δικαιωματα

Δημοσίευση από dourvas » 13 Δεκ 2008 14:40

ΤΟ ΒΡΗΚΑ!!!
ΕΙΧΑ ΟΡΙΣΕΙ ΛΑΘΟΣ ΟΝΟΜΑ ΣΤΗΝ ΜΕΤΑΒΛΗΤΗ!!4 ΩΡΕΣ ΕΨΑΧΝΑ
ΠΟΣΤΑΡΩ ΤΟ ΣΩΣΤΟ auth.php μηπως καποιος το χρειαστει
<?php
session_start();
if(!session_is_registered(authenticated) || ($_SESSION['SESS_CLASS']!='1' )) {
header("location: access-denied.php");
exit();}

ΣΥΓΝΩΜΗ ΑΝ ΣΠΑΤΑΛΗΣΑ ΤΟΝ ΧΡΟΝΟ ΣΑΣ ΑΔΙΚΑ

Απάντηση

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

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

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