Giriş yaptıktan sonra Değişkenler Bakım GET Yöntemi Kullanma

4 Cevap

Ben bir giriş sistemi kullanıyorum. Ben giriş yapmadan yorum / index.php gidin, bazı değişkenler gayet GET yöntemini kullanarak boyunca geçmiş olsun. Ben bu sayfada olduğum sürece ben oturum sonra, eğer, bu değişkenler ortadan kalkar. Yok değişkenleri $ sunulması, $ submissionid ve $ url vardır.

Ben ?submission='.$submission.'&submissionid='.$submissionid.'&url='.$url.', aşağıda görüldüğü gibi giriş formu eylem URL ekleyerek giriş yaptıktan sonra onları canlı tutmak için GET yöntemini kullanabilirsiniz düşündüm. Ben bu ek yaptı ama sonra değişkenler yine kayboldu.

Ben kullanmaya çalışıyorum ilgili kod aşağıda.

Bunu ben istiyorum ne yapmak ne yapabilirim herhangi bir fikir?

Teşekkür peşin,

John

Comments / index.php:

 require_once "header.php"; 

 include "login.php";

 include "comments.php";

Login.php içinde:

if (!isLoggedIn())
{

    if (isset($_POST['cmdlogin']))
    {

        if (checkLogin($_POST['username'], $_POST['password']))
        {
            show_userbox();
        } else
        {
            echo "Incorrect Login information !";
            show_loginform();
        }
    } else
    {

        show_loginform();
    }

} else
{

    show_userbox();
}

Comments.php in:

$url = mysql_real_escape_string($_GET['url']);
echo '<div class="subcommenttitle"><a href="http://www.'.$url.'">'.$submission.'</a></div>';




$submission = mysql_real_escape_string($_GET['submission']);
$submissionid = mysql_real_escape_string($_GET['submissionid']);

Oturum açma işlevi:

function show_loginform($disabled = false)
{

    echo '<form name="login-form" id="login-form" method="post" action="./index.php?submission='.$submission.'&submissionid='.$submissionid.'&url='.$url.'"> 

    <div class="usernameformtext"><label title="Username">Username: </label></div> 
    <div class="usernameformfield"><input tabindex="1" accesskey="u" name="username" type="text" maxlength="30" id="username" /></div> 


    <div class="passwordformtext"><label title="Password">Password: </label></div> 
    <div class="passwordformfield"><input tabindex="2" accesskey="p" name="password" type="password" maxlength="15" id="password" /></div> 


    <div class="registertext"><a href="http://www...com/sandbox/register.php" title="Register">Register</a></div> 
    <div class="lostpasswordtext"><a href="http://www...com/sandbox/lostpassword.php" title="Lost Password">Lost password?</a></div> 

  <p class="loginbutton"><input tabindex="3" accesskey="l" type="submit" name="cmdlogin" value="Login" ';
    if ($disabled == true)
    {
        echo 'disabled="disabled"';
    }
    echo ' /></p></form>';


}

4 Cevap

$submission & c. show_loginform yerel vardır. Sen (yech), işleve argüman olarak onları geçmek global bunları yayınlama ya da gerekir:

function show_loginform($submission, $submissionid, $url, $disabled = false) {
    ...

//login.php:
...
    // warning: vulnerable to injection attack.
    show_loginform($_GET['submission'], $_GET['submissionid'], $_GET['url']);

ya da benzeri bir şey yapmak:

function show_loginform($disabled = false) {
    // vulnerable to injection attacks
    ?><form name="login-form" id="login-form" method="post" action="./index.php?<?php echo $_SERVER['QUERY_STRING']; ?>">
    ... 

Geçen sadece yerine onu yeniden daha, sorgu dizesinde geçen, temiz ve basit olduğunu.

Eğer elle geçmek gerekir bu yüzden $ _GET değişkenleri sadece ilk sayfasına geçirilir alacak. İlk kullanıcı onlar değilse, formu görüntülemek oturum olup olmadığını görmek için kontrol edin. Sonra aşağıdaki kullanın:

$query = http_build_query($_GET)

Bu $ _GET değişkenleri dışında bir sorgu dizesi inşa edecek. Şimdi formu için eylem niteliğinde koymak ./index.php?$query.

Bu, kullanıcı oturum sonrasında birlikte geçirilen emin olacaktır

? Sen QueryString bir yazım hatası var: sunulması = '$ gönderme..' & Submissionid = '$ submissionid..' & Url = '$ url..'

Bir uppersand sunulmadan önce $ işaretini değiştirin ve.

Gerçi enjeksiyon güvenlik açıkları için yukarıdaki mesajları kontrol etmelisiniz.

İyi şanslar

Kullanıcı oturumları ...

<?php
session_start();


$result = checkLogin($_POST['username'], $_POST['password']);

if($result) {
    unset($_POST['password']);
    foreach($_POST as $k => $v) {
        $_POST[$k] = trim(strip_tags($v)); // Fix injection
    }
    $_SESSION = $_POST;
    $_SESSION['authenticated'] = true; // Changed the order to show authenticate
}