Πρόβλημα με Cookies

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

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

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

Πρόβλημα με Cookies

Δημοσίευση από GRaecuS » 09 Αύγ 2005 13:22

Στην σελίδα που κατασκευάζω θέλω να χρησιμοποιήσω cookies για το login. Ενώ καλώ μέσα στον php κώδικα την συνάρτηση session_start(), κατά την εκτέλεση μου εμφανίζει το μήνυμα:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at E:\Projects\Sites\testing.php) in E:\Projects\Sites\testing.php on line 11

και

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at E:\Projects\Sites\testing.php:7) in E:\Projects\Sites\testing.php on line 11

μπορεί να μου δώσει κανείς μια λύση? και ποιά headers υποτίθεται οτι έχουν ήδη σταλεί?

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Πρόβλημα με Cookies

Δημοσίευση από cordis » 09 Αύγ 2005 14:19

Κάτι έχεις κάνει echo ή print ή έχεις στείλει HTML στον browser πριν εκτελέσεις αυτήν την function..

Ένα συχνό "λάθος" που δημιουργεί τέτοια προβλήματα είναι όταν ξεχνάμε κενές γραμμές πριν το <?PHP ή μετά το ?> στο αρχείο που γίνετε η κλήση της function ή σε κάποιο αρχείο που κάνουμε include.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

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

Πρόβλημα με Cookies

Δημοσίευση από GRaecuS » 09 Αύγ 2005 14:49

Τελικά έχεις δίκιο, την function την είχα βάλει πρώτη μέσα στο script αλλά το script δεν ήταν στη αρχή της σελίδας. Έτσι διορθώθηκε.

Αλλά πως μπορώ να στείλω την μεταβλητή $valid_user στην επόμενη σελίδα? - την έχω κάνει session_register("valid_user")
<?
session_start();
global $valid_user;

echo "Members Only<br>";
echo $valid_user;
echo "<br>";

if(session_is_registered("valid_user")) {
echo "Logged as $valid_user";
} else {
echo "Not logged in";
}
?>
Και επιπλέον μόλις κάνω back, μου εμφανίζει "Warning: Page has Expired" (η είσοδος γίνεται φυσικά μέσω φόρμας)

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Πρόβλημα με Cookies

Δημοσίευση από cordis » 09 Αύγ 2005 14:57

Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

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

Πρόβλημα με Cookies

Δημοσίευση από GRaecuS » 09 Αύγ 2005 17:48

thx Cordis, τα διάβασα αλλά και πάλι δεν νομίζω να βρήκα λύση στο πρόβλημα μου.
Διάβασα και το http://www.phpfreaks.com/tutorials/41/8.php αλλά και πάλι το ίδιο πρόβλημα.

Έτσι δίνω όλο το project από πλευρά login:

Αυτό είναι το login.php που γίνεται include στην index.php (η οποία περιέχει την session_start())
<?
$username = $_POST['username'];
$password = $_POST['password'];
if($username && $password) {
@ $db = mysql_connect("localhost","root","admin");
if (!$db) {
echo "Error: Could not connect to database. Please try again later.";
exit;
}
mysql_select_db("sdkth");
$query = "SELECT login FROM users WHERE "
."login = '".$username."' AND pwd = '".$password."'";
$result = mysql_query($query);
$count = mysql_num_rows($result);
if(mysql_num_rows($result) > 0) {
$_SESSION['username'] = $username;
}
}
if (session_is_registered("username")) {
echo "Welcome Mr. $username<br>";
echo "<br>";
include("login_menu.inc"); //To menu που βλέπει κάποιος που έχει κάνει login
print_r($_SESSION); //απλά το έβαλα για να δώ τι περιέχει το session και είναι οκ
}
else {
include("login.inc"); //η φόρμα εγγραφής
}
?>
μέχρι εδώ όλα οκ. Κάνει σωστά το query στη βάση και εμφανίζει τα ανάλογα

αυτή ειναι η testing.php που μπορεί να πάει κάποιος από το user menu
<?
session_start();
header("Cache-control: private"); // IE 6 Fix.
echo "Members Only";
echo "<br>";
echo "<br>";
if(session_is_registered("username")) {
echo "Logged as ".$_SESSION['username'];
} else {
echo "Not logged in";
}
?>
και η οποία το μόνο που εμφανίζει είναι το Members Only.

Άρα το μόνο πρόβλημα φαίνεται να είναι οτι δεν περνάει το session στην template.php μιας και εμφανίζονται όλα τα στοιχεία του session στην index.php μετά από επιτυχημένο login.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Πρόβλημα με Cookies

Δημοσίευση από cordis » 10 Αύγ 2005 12:57

Απ' ότι βλέπω εδώ θα πρέπει και στο login.php να βάλεις

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

// start the session 
session_start&#40;&#41;; 
header&#40;"Cache-control&#58; private"&#41;; //IE 6 Fix
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

Πρόβλημα με Cookies

Δημοσίευση από shadow » 10 Αύγ 2005 13:43

Το session_id πως το περνάς από σελίδα σε σελίδα, με cookies ή μέσω του url? Ριξε μια ματιά και εδώ
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

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

Πρόβλημα με Cookies

Δημοσίευση από GRaecuS » 11 Αύγ 2005 00:30

cordis έγραψε:Απ' ότι βλέπω εδώ θα πρέπει και στο login.php να βάλεις

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

// start the session 
session_start&#40;&#41;; 
header&#40;"Cache-control&#58; private"&#41;; //IE 6 Fix
λογικά όχι, αφού πρέπει να γίνει στην αρχή του script και μιας η login.php είναι ενσωματωμένη στην index.php
shadow έγραψε:Το session_id πως το περνάς από σελίδα σε σελίδα, με cookies ή μέσω του url? Ριξε μια ματιά και εδώ
με το μόνο που δούλεψε μέχρι τώρα είναι μέσω του url (π.χ "index.php?<?=SID?>") και το οποίο εμφανίζει στο ΙΕ: index.php?PHPSESSID=....
Πως το κάνω με cookie?
Πάντως στο php.ini το session.use_cookies είναι 1 και το session.use_only_cookies είναι σε σχόλια

Απάντηση

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

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

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