PHP session_write_close () boş bir yanıt olur

1 Cevap php

Benim yazısının sonunda bir kapatma fonksiyonu session_write_close () kullanırken - PHP sadece ölür. Hiçbir hata (hatta boşluk!), Yanıt başlıklarını (kundakçı), ya da veri yoktur kaydedilir döndü. Ben etkin KESİN ve PHP 5.2.1 ile raporlama tam PHP hata var.

Benim tahminim session_write_close beri () kapandıktan sonra çağrıldığını - bazı ölümcül hata, çıktı göndermek ya da bir şey açmak için bir şans önce PHP çöker karşılaştı ediliyor.

Bu sadece ilk çıkış sayfasında olur:

...
    //If there is no session to delete (not started)
    if ( ! session_id())
    {
        return;
    }

    // Get the session name
    $name = session_name();

    // Delete the session cookie (if exists)
    if ( ! empty($_COOKIE[$name]))
    {
        //Get the current cookie config
        $params = session_get_cookie_params();

        // Delete the cookie from globals
        unset($_COOKIE[$name], $_SESSION);

        //Delete the cookie on the user_agent
        setcookie($name, '', time()-43200, $params['path'], $params['domain'], $params['secure']);
    }

    // Destroy the session
    session_destroy();
...

sonra 2)) biraz daha fazla şeyler 3 yapmak bir yönlendirme sorunu ve 4) tam sayfa yapıldıktan sonra nihayet, register_shutdown_function(); daha önce çalışır yerleştirilir ve veritabanına oturum kaydeder) (session_write_close çağırır. Sonu.

Bu boş cevabı sadece logout oluşur beri ben Senaryonun sonunda ölümcül ölmek session_write_close () neden olan düzgün oturumunu yeniden başlatmadan değilim olduğunu tahmin ediyorum.

1 Cevap

Tuhaf. Sorun çerezi kaldırmak önce oturumu yok ediyorum ki gerçek gibi görünüyor.

Bu çalışır:

    // Delete the session cookie (if exists)
    if ( ! empty($_COOKIE[$name]))
    {
        //Get the current cookie config
        $params = session_get_cookie_params();

        // Delete the cookie from globals
        unset($_COOKIE[$name], $_SESSION);

        //Delete the cookie on the user_agent
        setcookie($name, '', time()-43200, $params['path'], $params['domain'], $params['secure']);
    }

    // Destroy the session -----------------------------------------
    session_destroy();

Bu sayfayı öldürür ederken:

    // Destroy the session -----------------------------------------
    session_destroy();

    // Delete the session cookie (if exists)
    if ( ! empty($_COOKIE[$name]))
    {
        //Get the current cookie config
        $params = session_get_cookie_params();

        // Delete the cookie from globals
        unset($_COOKIE[$name], $_SESSION);

        //Delete the cookie on the user_agent
        setcookie($name, '', time()-43200, $params['path'], $params['domain'], $params['secure']);
    }

Herkes neden biliyor mu?