Pregunta

However my problem is that I want the logged in person to see "for example [age,wallet]etc..

I used the login and register script from a website to get me started. They already had the code for name ( When someone logged in it said, Hello, ['username'] )

The url for the tutorial is here: How to Create a Secure Login Script in PHP and MySQL

It might not be the safest or best way to create but that is why I am learning.

EDIT: Just to make my question more understandable: I wan't to get data from my database like age for example. When I log in I get Hello, Chris. But I want Hello, Chris. Your age is 20 for example. I can't seem to get this done no matter what I try. Code:

index.php

<?php
    include_once 'includes/db_connect.php';
    include_once 'includes/functions.php';

    sec_session_start(); 

    ?>

    <!DOCTYPE HTML>
    <html lang="en">
    <head>
    <meta charset="utf-8" />
    <title>Project 0N3</title>
    <link rel="stylesheet" href="style/style.css" />
    <meta name="generator" content="localhost">
    </head>

    <body>

        <div id="wrapper">


            <div id="top-panel-right-beta">
            <a class="two" href="index.php">Dark Theme | </a>
            <a class="two" href="light-index.php">Light Theme[BETA]</a>
            </div>

            <?php if(login_check($mysqli) == true) : ?>


            <div class="welcome">
              <p>Hello, <?php echo htmlentities ($_SESSION['username']); ?>!</p>
                </div>

            <div id="waller">
                <?php

    ?>
                <p>Your Wallet: <?php echo ($_SESSION['wallet']);?></p>
                </div>

        <div id="home">
            <div id="top-panel">
                <a class="one" href="index.php" >Home | </a>
                <a class="one" href="membersarea.php">Members Area | </a>
                <a class="one" href="createaccount.php"> Create a game account | </a>
                <a class="one" href="includes/logout.php">Log Out</a>

                </div>




            <div id="content">

                <h1>It is all about Project 0N3</h1>
                <p class="alpha">Alpha 0.0.1</p>
        <p>Mauris convallis ipsum lorem, id posuere sem semper vitae. Curabitur elementum, nibh a lobortis eleifend, sem diam ultricies massa, non congue risus dui vitae purus. Aliquam ut lectus vitae quam hendrerit volutpat. Sed iaculis vestibulum sapien. Aenean molestie, tortor faucibus condimentum consequat, quam risus ultrices orci, sed sagittis velit magna ultrices purus. Phasellus non odio eget erat pellentesque ullamcorper eget sit amet libero. Cras vel facilisis ipsum. Quisque rutrum viverra consequat. Sed posuere eros in nisi lobortis accumsan quis ac neque. Aliquam at diam rhoncus, accumsan nunc id, fringilla elit. Integer scelerisque leo nec metus accumsan mollis. Curabitur iaculis nibh et turpis gravida pulvinar.
        </p>

                  <div id="footer">
                &copy; 2014 Project 0N3. All rights reserved
                </div>
                </div>


    <?php  else : ?>


               <div id="top-panel-right_2">
                <a class="one" href="registeraccount.php">Register | </a>
                <a class="one" href="login.php">Log in</a>
                </div>
            <div id="content-noacc">

    <h1 class="h1beta"> ALPHA Ver 0.0.1 </h1>

                <div class="logohuge">
                    <a href="about.php"><img src="images/logo01.png" width="" height="" alt="logo01"></a>

                </div>  
                 </div>         

              <div id="footer2">
                &copy; 2014 Project 0N3. All rights reserved
                </div>




    <?php endif; ?>


        </div>

    <!--    End of div wrapper -->
        </div>
    </body>
    </html>

function.php

<?php
    include_once 'psl-config.php';

    function sec_session_start() 
    {
        $session_name = 'sec_session_id';   // Set a custom session name
        $secure = 'SECURE';
        // This stops JavaScript being able to access the session id.
        $httponly = true;
        // Forces sessions to only use cookies.
        if (ini_set('session.use_only_cookies', 1) === FALSE) {
            header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
            exit();
        }
        // Gets current cookies params.
        $cookieParams = session_get_cookie_params();
        session_set_cookie_params($cookieParams["lifetime"],
            $cookieParams["path"], 
            $cookieParams["domain"], 
            $secure,
            $httponly);
        // Sets the session name to the one set above.
        session_name($session_name);
        session_start();            // Start the PHP session 
        session_regenerate_id();    // regenerated the session, delete the old one. 
    }

    function login($email, $password, $mysqli, $wallet) {
        // Using prepared statements means that SQL injection is not possible. 
        if ($stmt = $mysqli->prepare("SELECT id, username, password, salt, wallet 
            FROM members
           WHERE email = ?
            LIMIT 1")) {
            $stmt->bind_param('s', $email);  // Bind "$email" to parameter.
            $stmt->execute();    // Execute the prepared query.
            $stmt->store_result();

            // get variables from result.
            $stmt->bind_result($user_id, $username, $db_password, $salt, $wallet);
            $stmt->fetch();

            // hash the password with the unique salt.
            $password = hash('sha512', $password . $salt);
            if ($stmt->num_rows == 1) {
                // If the user exists we check if the account is locked
                // from too many login attempts 

                if (checkbrute($user_id, $mysqli) == true) {
                    // Account is locked 
                    // Send an email to user saying their account is locked
                    return false;
                } else {
                    // Check if the password in the database matches
                    // the password the user submitted.
                    if ($db_password == $password) {
                        // Password is correct!
                        // Get the user-agent string of the user.
                        $user_browser = $_SERVER['HTTP_USER_AGENT'];
                        // XSS protection as we might print this value
                        $user_id = preg_replace("/[^0-9]+/", "", $user_id);
                        $_SESSION['user_id'] = $user_id;
                        // XSS protection as we might print this value
                        $username = preg_replace("/[^a-zA-Z0-9_\-]+/", 
                                                                    "", 
                                                                    $username);
                        $_SESSION['username'] = $username;
                        $_SESSION['login_string'] = hash('sha512', 
                                  $password . $user_browser);
                        // Login successful.
                        return true;
                    } else {
                        // Password is not correct
                        // We record this attempt in the database
                        $now = time();
                        $mysqli->query("INSERT INTO login_attempts(user_id, time)
                                        VALUES ('$user_id', '$now')");
                        return false;
                    }
                }
            } else {
                // No user exists.
                return false;
            }
        }
    }
    function checkbrute($user_id, $mysqli) {
        // Get timestamp of current time 
        $now = time();

        // All login attempts are counted from the past 2 hours. 
        $valid_attempts = $now - (2 * 60 * 60);

        if ($stmt = $mysqli->prepare("SELECT time 
                                 FROM login_attempts <code><pre>
                                 WHERE user_id = ? 
                                AND time > '$valid_attempts'")) {
            $stmt->bind_param('i', $user_id);

            // Execute the prepared query. 
            $stmt->execute();
            $stmt->store_result();

            // If there have been more than 5 failed logins 
            if ($stmt->num_rows > 5) {
                return true;
            } else {
                return false;
            }
        }
    }
    function login_check($mysqli) {
        // Check if all session variables are set 

        if (isset($_SESSION['user_id'], 
                            $_SESSION['username'],
                            $_SESSION['login_string'])) {

            $user_id = $_SESSION['user_id'];
            $login_string = $_SESSION['login_string'];
            $username = $_SESSION['username'];


            // Get the user-agent string of the user.
            $user_browser = $_SERVER['HTTP_USER_AGENT'];

            if ($stmt = $mysqli->prepare("SELECT password 
                                          FROM members 
                                          WHERE id = ? LIMIT 1")) {
                // Bind "$user_id" to parameter. 
                $stmt->bind_param('i', $user_id);
                $stmt->execute();   // Execute the prepared query.
                $stmt->store_result();

                if ($stmt->num_rows == 1) {
                    // If the user exists get variables from result.
                    $stmt->bind_result($password);
                    $stmt->fetch();
                    $login_check = hash('sha512', $password . $user_browser);

                    if ($login_check == $login_string) {
                        // Logged In!!!! 
                        return true;
                    } else {
                        // Not logged in 
                        return false;
                    }
                } else {
                    // Not logged in 
                    return false;
                }
            } else {
                // Not logged in 
                return false;
            }
        } else {
            // Not logged in 
            return false;
        }
    }
    function esc_url($url) {

        if ('' == $url) {
            return $url;
        }

        $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);

        $strip = array('%0d', '%0a', '%0D', '%0A');
        $url = (string) $url;

        $count = 1;
        while ($count) {
            $url = str_replace($strip, '', $url, $count);
        }

        $url = str_replace(';//', '://', $url);

        $url = htmlentities($url);

        $url = str_replace('&amp;', '&#038;', $url);
        $url = str_replace("'", '&#039;', $url);

        if ($url[0] !== '/') {
            // We're only interested in relative links from $_SERVER['PHP_SELF']
            return '';
        } else {
            return $url;
        }
    }
¿Fue útil?

Solución

Assuming that age is a column in your members table, you'll need to make a few changes…

// add age to the SELECT query
if ($stmt = $mysqli->prepare("SELECT id, username, password, salt, wallet, age
            FROM members… 

// add $age to the bind_result call
$stmt->bind_result($user_id, $username, $db_password, $salt, $wallet);
$stmt->fetch();
…
// add $age to the SESSION
$_SESSION['username'] = $username;
$_SESSION['login_string'] = hash('sha512', 
    $password . $user_browser);
$_SESSION['age'] = $age;
…
// Access the SESSION value
<div class="welcome">
    <p>Hello, <?php echo htmlentities ($_SESSION['username']); ?>. Your age is <?php echo htmlentities ($_SESSION['age']); ?>.</p>
</div>

That should at least point you in the right direction.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top