Autor Zpráva
sitole
Profil
Ahoj, nedávno jsem si poskládal svůj skript na přihlašování uživatelů..
Je celkem dobře provedený, ale potřebuji udělat rozdíl u přihlášeného a odhlášeného uživatele.

Tedy.. V přihlašovací stránce _login_page.php by jsem chtěl mít naprosto stejný kod jako na hlavní stránce, ale jen připsané 2 údaje. (Jmeno (mám vyřešené potřebuji jen dohodit) a "Nastaveni"
Jak to provedu, aby odhlášený uživatel tam nic neměl, ale přihlášený vše + tohle? :)

Stránka je pouze testovací

index.php
<?php require('_login.php'); ?>
Stránka bla bla..

login.php
<?php 

require('_login.php'); 

header("LOCATION: index.php");

?>

logout.php
<?php

require('_login_users.php');

setcookie($domain_code.'_uid', '');
setcookie($domain_code.'_cid', '');

header("LOCATION: login.php");

?>

_login_users.php
<?php

$domain_code = 'website';
$random_num_1 = 20;
$random_num_2 = 565;
$random_num_3 = 3;

$users = array(
        'Jmeno' => 'Heslo',
        'Zakaznikovo_Jmeno' => 'Zakaznikovo_Heslo'
    );
?>

_login_page.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>

<head>
<meta http-equiv="Content-Language" content="cs">
<meta charset="windows-1250">

<link href="hl/style.css" rel="stylesheet">
<link href="css/icon.png" rel="icon" type="image/png" />
<script type="text/javascript" src="hl/panel/jquery.js"></script>
<script type="text/javascript" src="hl/panel/ostatni.js"></script>
<link href='http://fonts.googleapis.com/css?family=Ubuntu' rel='stylesheet' type='text/css'>

<title>Účetní systém pro restaurace :: Vše na jednom místě</title>
<meta name="description" content="Účetní systém pro občerstvovací zařízení">
<meta property="og:title" content="Účetní systém pro občerstvovací zařízení">
<meta property="og:site_name" content="Účetní systém pro občerstvovací zařízení">
<meta property="og:description" content="Účetní systém pro občerstvovací zařízení">
<meta name="author" content="Jiří Svěcený, Vítek Vaníček">
</head>

<body>
<div id="Menu">
<div id="Napis"><b>Restaurační systém</b></div>
<div id="Polozky">

<b>
<li><a href="#Odkaz na náš web // Zakoupit">Zakoupit Systém</a></li>
<li><a href="#Odkaz na náš web // Náš tým">Náš tým</a></li>
<li><a href="#Odkaz na náš web // Kontakt">Kontakt</a></li>
</b></div></div>

<div id="Pasek"></div>
<div id="Nadpis"><center><b>Restaurační systém</b></center></div>

<center>
<form action="" method="post">
<input id="Jmeno" type="text" name="username" class="text" placeholder="Vaše jméno"><br>
<input id="Heslo" type="password" name="password" class="text" placeholder="Vaše heslo"><br>
<input id="Odeslat" type="submit" value="Přihlásit se" name="login" class="submit"/>
</form>
</center>

</body>
</html>

_login_class.php
<?php

class login_class {
    
    var $domain_code = '';
    var $today_ts = '';
    var $today_m = '';
    var $error_message = NULL;
    var $users = '';
    var $num_1 = '';
    var $num_2 = '';
    var $num_3 = '';
    var $username = '';
    
    function verify_settings () {
        $verified = TRUE;
        
        if ($this->num_1<1 || $this->num_1>500) $verified = FALSE;
        elseif ($this->num_2<500 || $this->num_2>1000) $verified = FALSE;
        elseif ($this->num_3<1 || $this->num_3>5) $verified = FALSE;
        
        foreach ($this->users as $user => $pass) {

            preg_match('/([^A-Za-z0-9-_\s\s+])/', $user, $user_result_{$user});
            
            if (!empty($user_result_{$user})) $verified = FALSE;
        
        }
        
        return $verified;
    }
    
    function encryption_key ($user) {
        $key_uid = $this->user_encryption($user);
        
        $key_cid = $this->code_encryption($key_uid);
        
        setcookie($this->domain_code.'_uid', $key_uid, time() + (86400 * 5));
        setcookie($this->domain_code.'_cid', $key_cid, time() + (86400 * 5));
    }
    
    function user_encryption ($user) {
        return md5($user);
    }
    
    function code_encryption ($key_cid, $encrypt = 1) {
        if ($encrypt == 1) {
            $key_code = preg_replace('/([^0-9+])/', '', $key_cid);    
            
            switch ($this->num_3) {
                case 1:
                    $key_code = floor((($key_code + $this->num_2 + (($this->num_1 * 2) * $this->num_2)) / $this->num_1) / $this->num_2);
                    break;
                case 2:
                    $key_code = ceil(((($this->num_2 + $this->num_1) * $this->num_1 + $key_code + $this->num_2 - (10 * $this->num_1)) / ($this->num_1 * 50))/100000000);
                    break;
                case 3:
                    $key_code = floor((((($key_code - $this->num_2 + (($this->num_1 * 3) * $this->num_2)) + $this->num_1) / $this->num_2))/100000000);
                    break;
            }
            
            $key_code = substr($key_code, 0, 10);
    
            return $key_code;
        }
    }
    
    function check_login ($username, $password) {

        foreach ($this->users as $user => $pass) {
            if ($username == $user && $password == $pass) {
                $this->username = $username;
                return TRUE;
            }
        }
        
        return FALSE;
    }
    
    function verify_login ($key_uid, $key_cid) {

        if ($key_cid = $this->code_encryption($key_uid)) {

            foreach ($this->users as $username => $password) {
                if ($key_uid == $this->user_encryption($username)) {
                    $this->username = $username;
                    return TRUE;
                }
            }
        }
        
        return FALSE;
    }
    
    function error_login () {
        if (isset($this->error_message)) {
            echo '<span class="error">'.$this->error_message.'</span><br /><br />';    
        }
    }
    
    function cleanse_input($input) {

        $input = trim($input);
        
        if (get_magic_quotes_gpc()==1) {

        } else {

            $input = addslashes($input);
        }
        
        $input = htmlentities($input);
        
        return $input;
    }

}

?>

_login.php
<?php

require('_login_users.php');
require('_login_class.php');

$login = new login_class;

$today_ts = strtotime("now");
$today_m = date('n', $today_ts);
$pass_login = FALSE;

$login->domain_code = $domain_code;
$login->today_ts = $today_ts;
$login->today_m = $today_m;
$login->users = $users;
$login->num_1 = $random_num_1;
$login->num_2 = $random_num_2;
$login->num_3 = $random_num_3;

if (!$login->verify_settings()) {
    echo '<strong>Invalid Admin Settings for Login Script</strong><br />Check your settings and retry logging in';
    exit();
}
                             
//Prihlaseni a zapsani do cookies
if (isset($_COOKIE[$domain_code.'_uid']) && $_COOKIE[$domain_code.'_uid']!='' && isset($_COOKIE[$domain_code.'_cid']) && $_COOKIE[$domain_code.'_cid']!='') {
    $key_uid = $login->cleanse_input($_COOKIE[$domain_code.'_uid']);
    $key_cid = $login->cleanse_input($_COOKIE[$domain_code.'_cid']);
    
    if (!$login->verify_login($key_uid, $key_cid)) {
        $login->error_message = 'Login has expired';
    } else {
        $pass_login = TRUE;    
    }
}

if (!$pass_login) {
    $need_login = TRUE;
    
    if (isset($_POST['login'])) {

        $login_user = $login->cleanse_input($_POST['username']);
        $login_pass = $login->cleanse_input($_POST['password']);
        
        if ($login->check_login($login_user, $login_pass)) {

            $login->encryption_key($login_user);
            
            $need_login = FALSE;
        } else {
            $login->error_message = 'Invalid username or password';    
            $need_login = TRUE;
        }
    } 
    
    if ($need_login) {
        require('_login_page.php');
        exit();
    }
}

?>
Nuimi
Profil
Zkus pri odhlaseni znicit cookies. Ale lepsi by jsi mel kdyby jsi pri prihlasovani vytvril session ktera by te provazela na strankach a ve chvili kdy kliknes na odhlaseni tak session zrusis cims zapricinis to ze tam trn danej uzivatel fyzicky uz nebude prihlasen
sitole
Profil
Nuimi:
Zajímavé řešení :)
Zkusím to napsat..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: