PHP munkamenet nem működik rendesen, talán azért, mert a fb? kérem, segítsen

szavazat
0

Van egy kérdésem a PHP-ülés. ÉN használ egy munkamenet tartani a látogató bejelentkezve. Tettem egy telek előtt ezzel, és tökéletesen működik. Most teszek a Facebook app.

Amikor bejelentkezik (ellenőrzés, ha a felhasználó regisztrált az adatbázisban), regisztrálok id. Ezután ezt használom:

if(session_is_registered(id))
{
echo Logged in;
}

Tehát, ha azt jelzi „bejelentkezett” a böngésző, egészen biztos vagyok benne, hogy a kapcsolat regisztrálva. De mikor megy a következő oldalra (ami session_start (); a lap tetején), nincs ülés többé. De ha megy a kijelentkezési oldalán (a session_destroy ();), majd folytassa a bejelentkezési, a munkamenet megfelelően van regisztrálva. Akkor is, ha becsukom az összes böngészőablakot, majd menj a bejelentkezéshez, akkor nem regisztrálja helyesen.

Próbáltam elpusztítja a munkamenet előtt jobbra regisztráció az „id”, de ez szintén nem működik.

Gondolom tettem az alap hiba, hogy valaki itt képesnek kell lennie arra, hogy segítsen nekem pazarlás nélkül sok időt.

Kérlek segíts. Azt már elvesztegetett nap erre. Előre is köszönöm.


Több kód:

Amennyiben munkamenet regisztrált:

$id_query = mysql_query (
    SELECT * FROM Tour11_deelnemers WHERE fb_id = '$user');
    while ($record = mysql_fetch_assoc ($id_query))
        {
        $id = $record['deelnemer_id'];
        }
if($id > 0)
{
$speelid = $id;
session_register(speelid);
}

Ezután hogy ellenőrizze, ha van regisztrálva:

if(session_is_registered(speelid))
{
echo Ingelogd;
}

session_is_registered () megegyezik isset () a $ _SESSION.

Tehát a dolog, amit nem értek, míg session_is_registered () igaz, miután nyilvántartásba vették, a következő oldalon ez hamis megint :( hacsak tudok belépni után azonnal megy bejelentkezés oldalát (session_destroy ();). Tehát ha i elpusztítsa az ülés előtt újraindítja és újra regisztrálni, nem segít.

A kérdést 12/06/2011 12:53
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Itt van egy megoldás az Ön számára.

Állítsa be az ülés, mint ez:

if(!isset($_SESSION['speelid'])){
   $id_query = mysql_query ("SELECT * FROM Tour11_deelnemers WHERE fb_id = '$user'");
        while ($record = mysql_fetch_assoc ($id_query)){
            $id = $record['deelnemer_id'];
        }
    if($id > 0){
        $_SESSION['speelid'] = $id;
    }
}

Ellenőrizze, hogy a munkamenet van beállítva, mint ez:

if(isset($_SESSION['speelid'])){
    echo "Ingelogd";
}

frissítés

Úgy tűnik, hogy a probléma összefügg a> = IE6 hajlandó elfogadni a session cookie által generált php, ha a .phpfájl említett egy .htmlfájlt egy másik szerverre.

Html-.PHP ülésen IE kérdés

Amikor a munkamenet változókat .php fájlban hivatkozott egy keret (.html, vagy más fájl típus) egy másik szerverre, mint a kiszolgáló .php:

Ilyen körülmények között a IE6 vagy újabb csendben megtagadja a session cookie, amely megpróbált létrehozni (implicit vagy explicit módon a invoquing session_start ()).

Ennek következtében a munkamenet változót ad vissza üres értéket.

Szerint MS kb, a megoldás az, hogy adjunk egy fejléc, amely azt mondja a távoli .php oldal nem visszaélni az a tény, hogy az engedélyt megadták.

Helyezzük ezt a fejlécet a .php fájlt fog létrehozni / frissíteni a session változókat akarsz:

Itt van egy teljes menet ebben a kérdésben

Megoldás

A megoldás az, hogy adjunk ennek a legtetején a lap, amely meghatározza a munkamenetet.

<?php header('P3P: CP="CAO PSA OUR"'); ?>
Válaszolt 12/06/2011 13:13
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more