Bir Tarayıcıda görüntüle ve değişim oturumları değişkenleri

4 Cevap php

Bir PHP programı ayıklama, ben oturumları değişkenleri (bu PHP $ _SESSION ["filanca"]) görüntüleyebilirsiniz tarayıcısı için herhangi add-on/plug-in var?

Ben değişkenleri değerini değiştirebilirsiniz iyi değilse.

4 Cevap

There is no way to manipulate the values stored in sessions from the client side.

That's one of the main reasons you'd use a session over a cookie - YOU control the data. With cookies, the user can manipulate the data.

Istemci tarafında oturum verilerini işlemek / erişmek için tek yol session_ aracılığıyla oturum veri alma / manipülasyon yapıyor olurdu başka bir php komut dosyası, aramak için bir Ajax çağrısı veya diğer JavaScript mekanizmasına sahip olacaktır fonksiyonları.

$_SESSION değişkenlerin bir sunucu tarafı dizidir. Okuduğumuz veya değerleri değiştirmek olsaydı, biz ne başka kötü şeyler kesmek veya neden için yapabileceği pek çok şey vardır.

Ama biz değerini değiştiremezsiniz - Ancak, phpinfo(); biz oturum değişkenlerini kullanarak görüntüleyebilirsiniz.

Daha da iyisi, biz tüm oturum değişkenleri hata ayıklama

print_r($_SESSION); 
//if you echo "<pre>" before, and a closing "</pre>" after, it prints very cleanly.

diğer bazı yararlı komutlar:

session_start(); // start session  -- returns Session ID
session_destroy(); // unset all session variable

Oturum bir dizidir ayarlarsanız $_SESSION['key']='value'; o $array['key']=value; gibi aynı nedenle - sadece, özel ne olduğu hakkında $ _SESSION - pencere kapanıncaya kadar devam ettiğini, ya {[( 2)]} adlandırılır.

Bu kod aşağıdaki kullanabilirsiniz:

<?php
error_reporting(E_ALL);
session_start();
if (isset($_POST['session'])) {
    $session = eval("return {$_POST['session']};");
    if (is_array($session)) {
        $_SESSION = $session;
        header("Location: {$_SERVER['PHP_SELF']}?saved");
    }
    else {
        header("Location: {$_SERVER['PHP_SELF']}?error");
    }
}

$session = htmlentities(var_export($_SESSION, true));
?>
<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title>Session Variable Management</title>
        <style>
            textarea { font: 12px Consolas, Monaco, monospace; padding: 2px; border: 1px solid #444444; width: 99%; }
            .saved, .error { border: 1px solid #509151; background: #DDF0DD; padding: 2px; }
            .error { border-color: #915050; background: #F0DDDD; }
        </style>
    </head>
    <body>
        <h1>Session Variable Management</h1>
<?php if (isset($_GET['saved'])) { ?>
        <p class="saved">The session was saved successfully.</p>
<?php } else if (isset($_GET['error'])) { ?>
        <p class="error">The session variable did not parse correctly.</p>
<?php } ?>
        <form method="post">
            <textarea name="session" rows="<?php echo count(preg_split("/\n|\r/", $session)); ?>"><?php echo $session; ?></textarea>
            <input type="submit" value="Update Session">
        </form>
    </body>
</html>

Farkında olun ancak bu oturumun 'değişkenler' sunucu tarafında kaydedilmiş ise, Session ID, (iyi güvenlik) GET / POST URL (çok kötü bir fikir) veya bir tarayıcı çerez saklanan ya, ama manipülasyon hala duyarlı / saldırı / etc Cookie tabanlı oturum kimlikleri özenle el yoksa.

http://en.wikipedia.org/wiki/Session_fixation

http://en.wikibooks.org/wiki/PHP_Programming/sessions#Avoiding_Session_Fixation