Ελεγχος session?

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

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

Απάντηση
Άβαταρ μέλους
fefeli
Δημοσιεύσεις: 617
Εγγραφή: 26 Μαρ 2003 23:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από fefeli » 14 Ιούλ 2005 00:50

αρχικά στο index.php έχω βάλει το σχετικό session_start() ακριβώς μετα το

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

<?php 

το index.php περιεχει includes διαφορα πραγματάκια κλπ κλπ
σε κάποιο σημείο έχω βάλει με include το login.php που είναι κάπως έτσι

<?php
$username=$HTTP_POST_VARS&#91;'username'&#93;;
$password=$HTTP_POST_VARS&#91;'password'&#93;;

if&#40;!isset&#40;$username&#41; && !isset&#40;$password&#41;&#41;
    &#123;
       //deikse ti form
       ?>
       εδώ είναι η φόρμα &#58;P
       <?php
      &#125; 
   else
         //psakse sth basi
        &#123;
        $result=mysql_query&#40;"SELECT * FROM users WHERE username='$username' and password='$password' "&#41; or die &#40;"User and password not found"&#41;;

        $worked=mysql_fetch_array&#40;$result&#41;;

        $username=$worked&#91;username&#93;;
        $password=$worked&#91;password&#93;;
        //an yparxei pes ena koukou tza
             if &#40;$worked&#41; &#123;

                 $HTTP_SESSION_VARS&#91;'username'&#93;=$username ;
                 echo  "Welcome " .$HTTP_SESSION_VARS&#91;'username'&#93;;
                 &#125;

             else&#123; 
                //pane mia boltitsa sto register
               echo"<p >Δεν είστε μέλος μας; <a href=register.php>Πατήστε εδώ</a> για εγγραφή </p>";
                &#125;
&#125;

?>
TO ΑΠΟΤΕΛΕΣΜΑ
μέχρι εδώ όλα καλά βγαίνει η φόρμα, βάζω τα στοιχεία, ψάχνει στη βάση και μου δίνει το χαιρετισμό Welcome "oneuser". Κοινώς δουλεύει μια χαρά.

ΤΟ ΠΡΟΒΛΗΜΑ
-> δε μεταφέρερει το SESSION σε άλλες σελίδες, δηλαδή όταν πατάω να μπω σε άλλη σελίδα του site μου ξαναβγάζει τη φόρμα.
Προφανώς πρέπει να βάλω εναν έλεγχο κάπου του στυλ if($_HTTP_SESSION_VARS['username'] { κανε αυτό } else {κάνε εκείνο}
αλλά δε ξέρω που ακριβώς να το βάλω και με ποιο τρόπο
http://www.blogspace.gr - Μια νέα προσπάθεια που φιλοδοξεί να ενώσει τους έλληνες συγγραφείς ιστολογίων.
http://www.magicasland.com

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από xultimatex » 14 Ιούλ 2005 01:34

Μάλλον πρέπει να κάνεις κάτι τέτοιο:

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

if &#40;!$_SESSION&#91;"username"&#93;&#41;
&#123;


$username=$HTTP_POST_VARS&#91;'username'&#93;;
$password=$HTTP_POST_VARS&#91;'password'&#93;;

if&#40;!isset&#40;$username&#41; && !isset&#40;$password&#41;&#41;
&#123;
//deikse ti form
?>
εδώ είναι η φόρμα
<?php
&#125;
else
//psakse sth basi
&#123;
$result=mysql_query&#40;"SELECT * FROM users WHERE username='$username' and password='$password' "&#41; or die &#40;"User and password not found"&#41;;

$worked=mysql_fetch_array&#40;$result&#41;;

$username=$worked&#91;username&#93;;
$password=$worked&#91;password&#93;;
//an yparxei pes ena koukou tza
if &#40;$worked&#41; &#123;

$HTTP_SESSION_VARS&#91;'username'&#93;=$username ;
echo "Welcome " .$HTTP_SESSION_VARS&#91;'username'&#93;;
&#125; 
 else&#123;
//pane mia boltitsa sto register
echo"<p >Δεν είστε μέλος μας; <a href=register.php>Πατήστε εδώ</a> για εγγραφή </p>";
&#125; 
exit&#40;&#41;;

&#125;
Έτσι, αν δεν υπάρχει η μεταβλητή θα δείξει φόρμα κτλ... και θα σταματήσει αλλίως δεν θα εκτελέσει τον κώδικα της φόρμας και θα συνεχίσει με την εμφάνιση της σελίδας... :)
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
fefeli
Δημοσιεύσεις: 617
Εγγραφή: 26 Μαρ 2003 23:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από fefeli » 14 Ιούλ 2005 01:52

οκ τώρα, το είχα δοκιμάσει αλλα είχα βάλει το ιf μετά τα

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

$username=$HTTP_POST_VARS&#91;'username'&#93;; 
$password=$HTTP_POST_VARS&#91;'password'&#93;; 
και δεν δουλευε :P

αντε τώρα να δω πως θα κάνω το register kai to logout :)

thanks xultimatex
http://www.blogspace.gr - Μια νέα προσπάθεια που φιλοδοξεί να ενώσει τους έλληνες συγγραφείς ιστολογίων.
http://www.magicasland.com

Άβαταρ μέλους
beredim
Δημοσιεύσεις: 26
Εγγραφή: 28 Ιαν 2004 10:04

Ελεγχος session?

Δημοσίευση από beredim » 14 Ιούλ 2005 05:15

Μερικά σχόλια:
Μην χρησιμοποιείς τις global $_HTTP_POST_VARS $_HTTP_SESSION_VARS κλπ
Είναι deprecated και θα πάψουν να υπάρχουν από την επόμενη έκδοση της PHP. Δοκίμασε να παίξεις με τις $_GET, $_POST, $_REQUEST και $_SESSION.

Επίσης δεν βλέπω πουθενά κάποια κλήση session_start();
Να υποθέσω ότι έχεις session.auto_start = 1 στο php.ini? Αν ναι να ξέρεις ότι ίσως να αντιμετωπίσεις προβλήματα στο μέλλον αν θες να παίξεις με serialised session objects. Ίσως θα ήταν καλύτερα να έχεις session.auto_start = 0 και να χρησιμοποιείς την session_start()....
ΠΑ ΒΩ ΚΑΙ ΚΙΝΩ ΤΑΝ ΓΑΝ

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από Rapid-eraser » 14 Ιούλ 2005 09:25

ektos aftou sto session_start orizeis tnv me8odo pou pervas to session apo selida se selida.

(meso cookie n meso casscade tou SID)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από xultimatex » 14 Ιούλ 2005 11:58

beredim, είπε ότι έχει ένα index.php στο οποίο αρχίζει την session και αυτό το κομμάτι είναι απλώς το login.php που το κάνει include.
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από Rapid-eraser » 14 Ιούλ 2005 12:14

yeap parola afta to parapavo dev pabei va eivai logos sto oti dev metaferete to session apo selida se selida :)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από xultimatex » 14 Ιούλ 2005 12:23

Γιατί;
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από Rapid-eraser » 14 Ιούλ 2005 12:24

Giati n diaxirisi twv session dev givete magika.
Iparxei diadikasia meso cookies n casscade.
av dev ta exeis orisei sosta eivai fisiko vamiv doulebei
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από xultimatex » 14 Ιούλ 2005 12:30

Τί μου λες τωρα! :D Δηλαδή Αν βάλεις ένα session_start() και μετά ένα session_register() και αν παίζεις με το session_is_registered() δεν δουλεύει; Θέλει κάτι πιο σύνθετο;
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από Rapid-eraser » 14 Ιούλ 2005 12:36

Diabase please to manual tis php gia ta sessions gia va katalabeis ti eivai afto pou sou lew.

To va metafereis eva session apo mia selida se mia alli
exei diadikasia (to lew triti fora isos givo pio katavoitos twra)
H proti me8odos eivai meso cookies. apo8ikebei to session_start() se eva cookie to session id to opio otav ksava kaleseis session_start() koitaei to cookie tsimpaei tnv SID kai sivexizei to session.
H alli me8odos exei casscade tou SID apo link se link.

Kai oi dimo me8odous 8elouv kapoio sxetiko cofniguration (n me8odos tou cookie paizei kai xoris config alla eivai profaves oti eivai poli problimatiki etsi [giati setarei to cookie se eva zero name domain kai path])
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Ελεγχος session?

Δημοσίευση από soteres2002 » 14 Ιούλ 2005 16:34

basika auto pou fteei einai oti aplos mesa sto if exei to $worked kai fisika efoson iparxei epistrefei panta true. gia na kaneis kopelia auto na doulepsei ok, tha prepei na elegkseis tis egrafes pou epistrefontai apo to query, dld tha to kaneis os ekseis. if(mysql_affected_rows() > 0) i if(mysql_num_rows() > 0). an i protasi einai true tote simainei oti simfona me tis parametrous pou sou edose o xristis, einai pragmati xristis afou iparxei match. me to na bazeis aplos if($worked) tha pairneis panta true kai me kamia kibernisi true/~false. tespa akoma ki an doulebei den einai asfalis tropos. dokimases na baleis lathos stixeia stin forma na deis ti tha ginei?????

tora gia ta sessions prepei na pas sto php.ini arxeio kai na rithmiseis tis directives [session], nomizo exei kai orismeni directiva pou anaferete sto problima sou... an tin breis me cookie tote sto domain min ksehaseis na baleis kana . gia na min exeis problima kai me subdomains meta!!!! :hammer:

episis, opos eipe kapoios pio pano prospathise na xrisimopoieis tis $_GET, $_POST, kai $_SESSION

pantos gia na to kaneis na doulebei ok bale kai ena || !sset($SESSION["somevar"]) gia na deis an den iparxei mesa sto mitroo, etsi oste na tou bgainei i forma..., opou $_SESSION["somevar"] einai ena stixeio pou to kaneis set mesa sto block opoy i eksakribosi ton stixeion tou xristi einjai epitixis episis, mia paratirisi: einai pio boliko na ta exeis se ksehorista formes xrisimes kai diafora alla html blocks kai na ta kaneis include analoga me kapoia sinthiki...

Άβαταρ μέλους
fefeli
Δημοσιεύσεις: 617
Εγγραφή: 26 Μαρ 2003 23:56
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από fefeli » 14 Ιούλ 2005 21:15

an kataxwrisw lathos stoixeia douleyei kai moy leei na paw gia register apla pros8esa ki ena kommati gia katastrofi session kai ekei egine o megalos xamos, dld leitoyrgouse alla i8ele na kaneis refresh page gia na piasei :hammer: peiramatizome twra me diafora, na doume poio tha epikrathsei
kisses se olous
http://www.blogspace.gr - Μια νέα προσπάθεια που φιλοδοξεί να ενώσει τους έλληνες συγγραφείς ιστολογίων.
http://www.magicasland.com

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Ελεγχος session?

Δημοσίευση από soteres2002 » 14 Ιούλ 2005 23:46

mia lisi gia to reload pou les einai na kaneis tin selida na fortonei aplos ston buffer tou browser alla na min bainei stin cache. auto profanos tha ksereis ginetai xrisimopoiontas tin sinartisi header("someheader"). px boreis na baleis header("Cache-control:no-store,must-revalidate") kai den tha exeis kanena prob. Epipleon boreis na theseis kai alles paramatrous px to maxage pou tha einai uncached ktl. mia alli lisi einai px na odigei se mia ksexoristi selida px logout.php kai meta na kanei redirect stin kentriki... pali me header("Location:index.php") sto eggrafo den tha prepei na exeis html ontotites, sketi php... kai gia extra elegxo na baleis: if(!headers_sent()) { header("Location:index.php"); }. auti einai mia koini logiki pou akolouthoun oloi oi programmers paropmoin projects...

Άβαταρ μέλους
GRaecuS
Δημοσιεύσεις: 113
Εγγραφή: 02 Απρ 2003 10:21
Τοποθεσία: Thessaloniki
Επικοινωνία:

Ελεγχος session?

Δημοσίευση από GRaecuS » 20 Σεπ 2005 00:34

@soteres2002

επειδή σε βλέπω πως κατέχεις, έχω βάλει μια επιλογή στο site μου με την οποία κάνεις logout (δηλαδή καταστρέφει το session) και σε ξαναπηγαίνει στην αρχική σελίδα όπου εμφανίζεται και η φόρμα του login. Αλλά αν κάνω back μου εμφανίζει αυτά που έβλεπα ως logαρισμένος.
Πως μπορώ να το κάνω έτσι ώστε όταν κάνεις back να μην το εμφανίζει και να εμφανίζει την φόρμα εισαγωγής?

ο κώδικας για την καταστροφή του session που χρησιμοποιώ είναι ο παρακάτω:
if($action == "logout") {
$old_user = $valid_user;
$result_unreg = session_unregister('valid_user');
$result_dest = session_destroy();
if (!empty($old_user)) {
if($result_unreg && $result_dest) {
echo "Logged out";
} else {
echo "Could not log you out";
}
}
}

Απάντηση

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

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

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