oturum yönetimi: başlığında sorun görüntüleyen kullanıcı adı

1 Cevap php

Ben herhangi bir güvenlik olmadan benim web sitesi için basit bir giriş ve çıkış modülü üzerinde çalışıyorum. Bir windows xp makinede wamp kullanıyorum. Bir kullanıcı oturum değişkenlerini yaratır ve oturumu başlatır process.php dosyaya yönlendirir giriş informaton gönderdiğinde ben oturumu oluşturma. Şimdi giriş başarılı bir kullanıcı bir başlık dosyası (imzalıyorum çıkış yardım seçenekleri içeren başlığını görüntüler) sorun başlığı başarıyla kullanıcı günlükleri olarak çıkış için imzalıyorum linki değişiyor değil mi içeren karşılama sayfasına yönlendirilir eğer. Aşağıdaki kodu bir oturum başlatır process.php değil.

$username = $_POST['username'];
        $password = $_POST['password'];

        //echo "{$username}:{$password}";
        $connection = mysql_connect("localhost","root","");
        if(!$connection)
        {
            die("Database Connection Failed".mysql_error());
        }
        $db_select = mysql_select_db("tester",$connection);
        if(!$db_select)
        {
            die("Database Selection Failed".mysql_error());
        }
        $result = mysql_query("SELECT * FROM user",$connection);
        if(!$result)
        {
            die("Database Selection Failed".mysql_error());
        }


        $q = "SELECT * FROM user " ."WHERE Name='".$username."' AND Password='".$password. "' ";
         // Run query
         $r = mysql_query($q);

         if ( $obj = @mysql_fetch_object($r) )
        {
            session_start();
            // Login good, create session variables
            $_SESSION["valid_id"] = session_id();
            $_SESSION["valid_user"] = $_POST["username"];
            $_SESSION["valid_time"] = time();

            Header('Location: welcome.php');

Aşağıdaki kod welcome.php dahildir header.php dan

    </div>

    <div id = "userdetail">

        <?php

        if(isset($_SESSION["valid_user"]))
        {
            echo($_SESSION["valid_user"]." " ); 
             echo("<a href=logout.php>Logout</a>"); 

        }
        else
        {
            echo("<a href = login.php>Sign In</a>");
        }

        ?>

              | Help |  Search      

            <input type = "text" name = "searchbox" value = "" />
    </div>
</div>

1 Cevap

You have to call start_session() every time on every called page. This should always the first call you do in your pages.

logout çağrı session_destroy üzerinde.

ayrıca size $ _SESSION değişkeni temizlemek gerekir

$_SESSION = array();

A coding tip: Split you display stuff from the php code with a template-engine like smarty Your code contains a sql injection bug, see my comment on your post.

Ayrıca karma şifreleri kullanmak gerekir ve tuz unutmayın. do not store plain passwords into your database.

SQL injection