Sixtens hemsida Uppgifter Blogg Om

Inloggningstjänst

Gå till sida

Källkod

moment04/

admin.php

functions.php

logout.php

index.php

login.php

signup.php

change_password.php

admin/

authorized.php

users/

admin.json

HogeN.json

Hej.json

sixten.json

posts/

167db73f2a604dd391f1303a25cb2443.json

wesweb01/moment04/functions.php

1 lines
<?php
# Glöm inte att kommentera skiten också...

function hash_password($password$salt)
{
    return 
hash("sha256"$password $saltfalse);
}

function 
check_user_logged_in($forLoginPage false)
{
    
session_start();
    if (
$forLoginPage) {
        if (isset(
$_SESSION["username"])) {
            
header("location: index.php");
            exit();
        }
    } else {
        if (!isset(
$_SESSION["username"])) {
            
header("location: login.php");
            exit();
        }
    }
}

function 
check_login($username$password, )
{
    
$file "users/{$username}.json";
    if (!
file_exists(($file)))
        return 
false;
    
$json json_decode(file_get_contents($file));
    if (!isset(
$json->password) || !isset($json->salt))
        return 
false;
    
$hashed hash_password($password$json->salt);
    if (
$json->password != $hashed)
        return 
false;

    return array(
        
"username" => $json->username,
        
"isAdmin" => $json->isAdmin
    
);
}

function 
create_post($title$content)
{
    
date_default_timezone_set('Europe/Stockholm');
    
$data = array(
        
"title" => $title,
        
"content" => $content,
        
"author" => $_SESSION["username"],
        
"date" => date("Y-m-d H:i")
    );
    
$jsonContent json_encode($dataJSON_PRETTY_PRINT JSON_UNESCAPED_UNICODE);
    
$id generate_uuid();
    
file_put_contents("posts/{$id}.json"$jsonContent);
}

function 
delete_post($id)
{
    
$path "posts/{$id}.json";
    if (!
file_exists($path))
        return 
false;
    
unlink($path);
    return 
true;
}

function 
generate_uuid() # Någorlunda modifierad funktion som jag hittade online för att skapa UUID för meddelanden
{
    
$data $data ?? random_bytes(16);
    
assert(strlen($data) == 16);

    
$data[6] = chr(ord($data[6]) & 0x0f 0x40);
    
$data[8] = chr(ord($data[8]) & 0x3f 0x80);

    return 
vsprintf('%s%s%s%s%s%s%s%s'str_split(bin2hex($data), 4));
}

function 
print_navbar()
{
    echo 
"<nav class=\"red accent-2\">
        <div class=\"nav-wrapper\">
            <a href=\"index.php\" class=\"brand-logo\">Moment 04</a>
            <ul id=\"nav-mobile\" class=\"right hide-on-med-and-down\">"
;
    if (
$_SESSION["isAdmin"])
        echo 
"<li><a href=\"admin.php\">Admin</a></li>";
    echo 
"<li><a href=\"change_password.php\">Ändra lösenord</a></li>
                <li><a href=\"logout.php\">Logga ut</a></li>
            </ul>
        </div>
    </nav>"
;
}


?>