Avatar billede straszek Praktikant
07. februar 2014 - 21:19 Der er 2 kommentarer

Problemer med loginscript

Hej,

jeg forsøge at får dette login script http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL til at virke på min side med det driller i login delen:

Html-login siden:
<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';

sec_session_start();

if (login_check($mysqli) == true) {
    $logged = 'in';
} else {
    $logged = 'out';
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Secure Login: Log In</title>
        <link rel="stylesheet" href="styles/main.css" />
        <script type="text/JavaScript" src="js/sha512.js"></script>
        <script type="text/JavaScript" src="js/forms.js"></script>
    </head>
    <body>
        <?php
        if (isset($_GET['error'])) {
            echo '<p class="error">Error Logging In!</p>';
        }
        ?>
        <form action="includes/process_login.php" method="post" name="login_form">                     
            Email: <input type="text" name="email" />
            Password: <input type="password"
                            name="password"
                            id="password"/>
            <input type="button"
                  value="Login"
                  onclick="formhash(this.form, this.form.password);" />
        </form>
        <p>If you don't have a login, please <a href="register.php">register</a></p>
        <p>If you are done, please <a href="includes/logout.php">log out</a>.</p>
        <p>You are currently logged <?php echo $logged ?>.</p>
    </body>
</html>


process_login.php side:
<?php
include_once 'db_connect.php';
include_once 'functions.php';
sec_session_start();



if (isset($_POST['email'], $_POST['p'])) {
 
    $email = $_POST['email'];
 
    $password = $_POST['p']; // The hashed password.


    if (login($email, $password, $mysqli) == true) {
        // Login success
      header('Location: ../protected_page.php');
    } else {
        // Login failed
    header('Location: ../login.php?error=1');
    }
} else {
    // The correct POST variables were not sent to this page.
    echo 'Invalid Request';
}


og functionen login i functions.php som kaledes fra ovenstående.
function login($email, $password, $mysqli) {
    // Using prepared statements means that SQL injection is not possible.
    if ($stmt = $mysqli->prepare("SELECT id, username, password, salt
        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);
        $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;
        }
    }
}


Uanset hvad så får jeg en login-fejl "Error Logging In!"
Problemet opstår såvidt jeg kan gennemskue fordi at "$password" bliver "væk" på vej til funktionen "login" . $password er tilsted i process_login.php, her kan jeg se det via en echo.

Er der nogen der kan hjælpe mig på vej?
Avatar billede pct Nybegynder
10. februar 2014 - 10:03 #1
Prøv at flytte sec_session_start(); op som 1. linie
Avatar billede straszek Praktikant
25. november 2014 - 14:48 #2
beklager, den fik vi aldrig lukket. Smid et svar og du skal få point kastet i nakken :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester