用户登录并重定向到特定于他们的页面

时间:2017-03-05 23:09:09

标签: php mysql logging social-networking

嘿我正在创建一个需要登录的用户的网站。出于某种原因,在用户使用电子邮件和密码的成功组合登录之后,他们被重定向到空白的index.php而不是user_page.php。已经创造出来了。我知道还有其他类似的问题,我已经查看了它们但是无法将其更正实现到我自己的代码中。

$errors = array();
$message = "";
$email = "";
$password = "";

if(isset($_POST["submit"])) { //THIS CHECKS LOG IN INFORMATION
    //form was submitted
    //$email = trim($_POST["email"]);
    //$password = trim($_POST["password"]);
    //header('Location: user_page.php?id=' . $_SESSION['user_id']);

    //Validations
    $required_fields = array("email", "password");
    validate_presences($required_fields);
    foreach ($required_fields as $field){
        $value = trim($_POST[$field]);
        if (!has_presence($value)) {
            $errors[$field] = ucfirst($field) . " can't be blank"?><br/><?php ;
        }
    }

    if (empty ($errors)) {
        //try to login in
        $email = trim($_POST["email"]); //set the variables for use in the function so they can be used as a value in the form, if its been submitted prev it echos back
        $password = trim($_POST["password"]);

        $found_email = attempt_login($email, $password); //function find user or return null or false

        if ($found_email) {
            // Success
            // Mark user as logged in
            $_SESSION["email_id"] = $found_email["id"]; //better than using a cookie which is visible in browser
            $_SESSION["email"] = $found_email["email"]; //always know what the user name can use it browser or return the value back
            redirect_to("user_page.php");
        } else {
            // Failure
            $_SESSION["message"] = "Email/password not found.";//do not alert        as to which field was incorrect
        }
    }
} else {

    /*$email = "";
      $password = "";
      $message = "";*/
} //if isset end

我有一个单独的页面,其中包含来自我的学习资源的验证和功能。如果需要任何其他信息,请告诉我。谢谢!

功能

<?php

function redirect_to($new_location)
{
    header("Location: " . $new_location);
    exit;
}

function mysql_prep($string)
{
    global $connection;

    $escaped_string = mysqli_real_escape_string($connection, $string);
    return $escaped_string;
}


function password_encrypt($password)
{
    $hash_format = "$2y$10$";   // Tells PHP to use Blowfish with a "cost" of 10
  $salt_length = 22;                    // Blowfish salts should be 22-characters or more
  $salt = generate_salt($salt_length);
    $format_and_salt = $hash_format . $salt;
    $hash = crypt($password, $format_and_salt);
    return $hash;
}

function generate_salt($length)
{
    // Not 100% unique, not 100% random, but good enough for a salt
  // MD5 returns 32 characters
  $unique_random_string = md5(uniqid(mt_rand(), true));

    // Valid characters for a salt are [a-zA-Z0-9./]
  $base64_string = base64_encode($unique_random_string);

    // But not '+' which is valid in base64 encoding
  $modified_base64_string = str_replace('+', '.', $base64_string);

    // Truncate string to the correct length
  $salt = substr($modified_base64_string, 0, $length);

    return $salt;
}

function password_check($password, $existing_hash)
{
    // existing hash contains format and salt at start
  $hash = crypt($password, $existing_hash);
    if ($hash === $existing_hash) {
        return true;
    } else {
        return false;
    }
}

function find_all_users()
{
    global $connection;

    $query = "SELECT * ";
    $query .= "From users ";
    $query .= "ORDER BY position ASC";
    $result = mysql_query($connection, $query);
    confirm_query($user_set);
    return $user_set;
}


function find_user_by_email($email)
{
    global $connection;

    $safe_email = mysqli_real_escape_string($connection, $email);

    $query  = "SELECT * ";
    $query .= "FROM users ";
    $query .= "WHERE email = '{$safe_email}' ";
    $query .= "LIMIT 1";
    $email_set = mysqli_query($connection, $query);
    confirm_query($email_set);
    if ($email = mysqli_fetch_assoc($email_set)) {
        return $email;
    } else {
        return null;
    }
}

function find_email_by_id($email_id)
{
    global $connection;

    $safe_email_id = mysqli_real_escape_string($connection, $email_id);

    $query  = "SELECT * ";
    $query .= "FROM email ";
    $query .= "WHERE id = {$safe_email_id} ";
    $query .= "LIMIT 1";
    $email_set = mysqli_query($connection, $query);
    confirm_query($email_set);
    if ($email = mysqli_fetch_assoc($email_set)) {
        return $email;
    } else {
        return null;
    }
}

function attempt_login($email, $password)
{
    $email = find_user_by_email($email);
    if ($email) {
        // found user, now check password
        if (password_check($password, $email["hashed_password"])) {
            // password matches
            return $email;
        } else {
            // password does not match
            return false;
        }
    } else {
        // user not found
        return false;
    }
}

function logged_in()
{
    return isset($_SESSION['email_id']);
}

// function confirm_logged_in()
// {
//     if (!logged_in()) {
//         redirect_to("index.php");
//     }
// }

?>

0 个答案:

没有答案