PHP Form Key Niggle?

0 Cevap php

Birisi aşağıda benim iki fonksiyonları bakmak ve ben ne yapabilirim önerebilirsiniz?, Ben temelde benzersiz bir anahtar oluşturur ve bu formda bir gizli alanında yankılandı ve sonra ben kontrol düz sonra formu ibraz edilmiş ise iki fonksiyon oluşturduk İkinci fonksiyon gizli alanında anahtar oturumda anahtarı eşleşen olmadığını denetler. I yaşıyorum sorun şimdi ve yine sadece ben test etmek benim firefox web dev araçları kullanarak delibrately formu anahtarı düzenlenen olmama rağmen tuşları eşleşmiyor düşündüren yasak sayfasına beni yönlendirir.

Ben orada ben dışarı eksik bir şey ya da artırabilirsiniz olmadığını herkes görebilir, bir önbellek sorunu ya da değil emin değilim? , I formu o zaman sadece gizli bir alanda anahtar oturumda anahtarı ile uyuşmuyor anlaşılacağı yasak sayfasına gidebilir bir kaç kez göndermek eğer ben yanlış bir şey görmüyorum sadece rağmen, örneğin, şimdi tekrar olur benim iki fonksiyon, i Açıkçası ben çok insanlar bu tür sorunlar yaşıyorsanız söyleyerek bana e-posta yok gibi denemek ve çözmek istiyorum.

İşte benim ilk işlevi, bu benzersiz bir anahtar oluşturur ve bu formda gizli bir alanda dışarı yankılandı vardır. Ben de bir kullanıcı formu göndermek için ne kadar uzun bir zaman sınırı var ama etkin olduğunda daha sık gerçekleşmesi gibi görünüyor, çünkü ben şimdi olarak ortaya yorumladı.

function GenerateFormTokenHash($token)
{
    $token = $_SESSION['token'] = md5(uniqid(mt_rand(), true));
    //$token_time = $_SESSION['token_time'] = time();
    return htmlspecialchars($token);
    //return $token_time;
}

Ben sadece GenerateFormTokenHash ($ belirteci) echo yukarıdaki işlevini kullanmak için; Bir gizli denilen belirteci.

Aşağıdaki fonksiyonu formu ibraz edilmiş ise ben kontrol düz sonra kullanılır.

# Form Token Hash Validator
function IsValidFormTokenHash()
{
    /*global $websiteaddress;
        $token_age = time() - $_SESSION['token_time'];
        if($token_age >= 300) {
            echo 'Session Expired';
            echo 'This form has now expired. ';
            echo 'Please click here to go back to the form.';
            $_SESSION = array();
            setcookie(session_name(), '', time()-42000, '/');
            # Destroy the session
            session_destroy();
            # Generate new seesion id
            session_regenerate_id(true);
            exit;
        }*/
    if(isset($_POST['token']) && $_POST['token'] != $_SESSION['token'] || !isset($_POST['token']) || !isset($_SESSION['token']))
    {
                $_SESSION = array();
                setcookie(session_name(), '', time()-42000, '/');
                # Destroy the session
                session_destroy();
                # Generate new seesion id
                session_regenerate_id(true);
        redirect("/error/forbidden.php");
        exit;
    }
}

I formu ibraz edilmiş ise aşağıdaki gibi ben sadece işlevini çağırmak kontrol ettikten sonra, bunu tekrar bu işlevi benim functions.php dosyasına şöyledir:

if(isset($_POST['submit'])) {
    IsValidFormTokenHash();
}

Yani ben temelde neden şimdi bazen çalışmak için çalışıyorum ve sonra sadece gizli alanında oturum anahtarı ve anahtar bir önbellek sorunu falan ben düzgün çalışmasını sağlamak için ne yapabilirim, belki uymuyor düşünüyor?

Herhangi bir yardım için teşekkür ederiz.

Thank you, PHPLOVER

0 Cevap