Avatar billede MegatronVer2 Nybegynder
04. juli 2013 - 18:10 Der er 4 kommentarer

Beskyt sider fra brugere der ikke er logget ind

Hej nørder! :)

Jeg er igang med at lave et login, med tre forskellige slags brugere,
og skal derfor beskytte mine sider både for dem som ikke har et login og få dem som ikke har et login til den korrekte profil.

Men en ting af gangen... Jeg prøver til start bare med at beskytte min login siden, får folk som ikke har en bruger..
Jeg kan bare ikke få det til at lykkes!!

Selvom jeg er logget ind eller ikke er, så bliver jeg hele tiden nægtet adgang og videresendt til protected.php..

Det burde ikke være så svært..

HJÆLP MIG!!

Mine Koder:

general.php


function logged_in_redirect() {
    if (logged_in() === true) {
        header('Location: admin.php');
        exit();
    }
}

function protect_page() {
    if (logged_in() === false) {
        header('Location: protected.php');
        exit();
    }
}



----------------------------
users.php

function logged_in() {
    return (isset($_SESSION['user_id'])) ? true : false;
}

------------------------------

protected.php

<?php
include 'core/init.php';

include 'inc/overall/header.php';
?>

<h1>Desv&aelig;rre, du skal v&aelig;re logget ind for at kunne g&oslash;re dette</h1>
<p>Opret dig som bruger eller log ind</p>

<?php include 'inc/overall/footer.php'; ?>

----------------------------------------------
init.php

<?php
session_start();
//error_reporting(0);

require 'db/connect.php';
require 'func/general.php';
require 'func/users.php';

$current_file = explode('/', $_SERVER['SCRIPT_NAME']);
$current_file = end($current_file);

if (logged_in() === true) {
    $session_user_id = $_SESSION['user_id'];
    $user_data = user_data($session_user_id, 'user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'password_recover', 'profil_type', 'allow_email', 'profile');
    if (user_active($user_data['username']) === false) {
        session_destroy();
        header('Location: admin.php');
        exit();
    }
    if ($current_file !== 'changepassword.php' && $user_data['password_recover'] == 1) {
        header('Location: changepassword.php?force');
        exit();
    }
}


$errors = array();
?>
Avatar billede bing89 Nybegynder
04. juli 2013 - 18:38 #1
Du kan gøre sådan :

code_login:

session_start();

$brugernavn = $_POST['brugernavn']
$password = $_POST['password']

if(brugernavn = $brugernavn && password = $password){

$_SESSION['brugeradgang'] = 2

header('location:admin.php')

} else {
header('location:index.php')

} ...

Dine undersider + login.php

skal så have sådan:

session_start();
if($_SESSION['brugeradgang'] == 2){

// Du er logget ind

} else {

header('location:index.php');



}
Avatar billede bing89 Nybegynder
04. juli 2013 - 18:40 #2
Jeg prøver lige igen.. :

Du kan gøre sådan :

på code_login.php:

session_start();

$brugernavn = $_POST['brugernavn']
$password = $_POST['password']

if(brugernavn = $brugernavn && password = $password){

$_SESSION['brugeradgang'] = 2

header('location:admin.php')

} else {
header('location:index.php')

} ...

Dine undersider når man er logget ind.

skal så have sådan:

session_start();
if($_SESSION['brugeradgang'] == 2){

// Du er logget ind

} else {

header('location:index.php');



}
Avatar billede MegatronVer2 Nybegynder
04. juli 2013 - 19:21 #3
Tak for dit forslag!
Har prøvet det nogle gange nu og testet på forskellige måder, men det virker stadigvæk ikke.
Nu bliver jeg bare henvist til index.php..
Avatar billede bing89 Nybegynder
04. juli 2013 - 20:17 #4
Helt fra start...

Du laver dit login:

<form action="code_login.php" method="post">

<input type='text' name='brugernavn'/>
<input type='password' name='password'/>
<input type='submit' value='login'/>
</form>

På code_login.php:

session_start();

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

if($brugernavn == "admin" && $password == "admin"){

// Her skal det indtastede brugernavn og password i formen altså være 'admin'. Og husk at der er forskel på store og små bogstaver, både i brugernavnet og i adgangskoden.

$_SESSION['brugeradgang'] = 2;

header('location:admin.php');
}

På admin.php :

session_start(); <-- HUSK at det skal stå aller øverst..

if($_SESSION['brugeradgang'] == 2){

Du er nu logget ind...

} else {

header('location:index.php');
}

Hvis du kopier og sætter det ind på de forskellige sider, så skal det virke :)
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