The following files exists in this folder. Click to view.
bank.php232 lines UTF-8 Unix (LF) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
<?php
require_once('check_login.php');
#
#Funktioner
#
#Funktionrn reload() laddar om sidan
#
function reload($mess = "") {
header("location: ?mess=$mess");
exit();
}
# funktionen formatAmount() formaterar tal vid utskrift
#
function formatAmount($amount) {
$output = number_format($amount, 0, ",", " ") . "kr";
if ($amount < 0) { #om man tar ut ett negativt värde ska det bli färgad text.
$output = "<span class='text-error'>{$output}</span>";
}
return $output; #retunerar det formaterade talet
}
#väljer den inloggade användarens JSON-fil
$username = $_SESSION['username'];
$filename = "./$username.json"; #Json-filen som heter: "Username".json
if (!file_exists($filename)) { #Om kontot inte finns....
session_unset(); #Ta bort allt innehåll från sessionen
session_destroy(); #Ta bort sessionen
header('location:index.php?mess=Kontot finns inte'); #Skicka ett felmedelane
exit();
}
$users = json_decode(file_get_contents($filename), true);
$user = $users[0]; # Hämta användaren från enskillsda konton
# Kontrollera att rätt användare finns i filen
if ($user['username'] != $username) {
die('Fel användarkonto.');
}
#Om det inte finns en transationsgrej skapas det med 1000kr och datum
if (!isset($user['transactions'])) {
$user['transactions'] = [
[
'amount' => 1000,
'date' => date('Y-m-d H:i:s')
]
];
file_put_contents(
$filename,
json_encode($users, JSON_PRETTY_PRINT)
);
}
#Funktion som skriver en transaktion till json-filen
function transaction($amount) {
global $user, $users, $filename;
$user['transactions'][] = [ #Lägger det i en array
'amount' =>$amount, #Skriver in amount
'date' => date('Y-m-d H:i:s') #Och datumet
];
$users[0] = $user;
file_put_contents(
$filename,
json_encode($users, JSON_PRETTY_PRINT)
);
}
#Adderar och subtarherar transaktionerna från saldot.
$balance = 0;
$transactions = $user['transactions'];
foreach ($transactions as $t) {
$balance += $t['amount'];
}
#lagrar medelande om det finns
$mess= isset($_GET['mess']) && $_GET['mess'] != "" ? "<span class='label label-error'>{$_GET['mess']}</span>" : "";
#tar bort konto
if (isset($_POST['deleteAccount'])) {
if (file_exists($filename)) {
unlink($filename); #Tar bort vägen till json-filen
}
session_unset(); #Tömmer filen
session_destroy(); #tar bort filen
header('location:index.php?mess=Du har raderat ditt konto.');
exit();
}
#Hur transaktionerna skrivs ut
$transactionOutput ="<table class='table'><thead><tr><th>Nr</th><th>Belopp</th><th>Datum</th><th>Saldo</th></tr></thead><tbody>";
$balance = 0;
$i = 1;
foreach ($transactions as $t) {
$balance += $t['amount'];
$t = formatAmount($t['amount']);
$b = formatAmount($balance);
$d = date('Y-m-d H:i:s');
$transactionOutput .= "<tr><td>{$i}</td><td style='text-align: right'>{$t}</td><td>{$d}</td><td style='text-align: right'>{$b}</td></tr>";
$i++;
}
$transactionOutput .= "</tbody></table>";
#
# Bank Manager
#
#Insättning och uttag
if (isset($_POST['amount'])) { #Kollar om formuläret har skickts
$file = fopen($GLOBALS['filename'], "a"); #Skapar filpekare
#Tar hand om beloppet
if($_POST['action'] == "deposit"){ #Om insättning....
$amount = $_POST['amount']; #....ge positivt värde
}else{ #..annars...
if($_POST['amount'] > $balance){ #Om uttaget är större än saldot
#Skicka tillbaka till bank.php med medelande
reload('Uttaget är större än saldo och kan ej genomföras');
}
else{
$amount = -$_POST['amount']; #.. ge negativt värde
}
}
transaction($amount); #skapa transaktion
reload(); #Ladda om sidan så att formuläret laddas om
}
?>
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ALGY-banken</title>
<link rel="stylesheet" href="https://unpkg.com/spectre.css/dist/spectre.min.css">
</head>
<body class="bg-gray">
<div class="hero hero-sm bg-dark">
<div class= "hero-body p-centerd">
<h1>ALGY-banken</h1>
<p>Välkommen till världens minst säkra bank</p>
<p>Du är inloggad som <?php echo $_SESSION['username'];?>. </p>
<?php echo $mess; ?>
</div>
</div>
<main class="container">
<div class="columns">
<div class="column col-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Saldo</h3>
<?php echo "<p>".formatAmount($balance)."</p>"; ?>
<h3 class="card-title">Insättning / uttag</h3>
<div class="form-group">
<form method="POST" action="?">
<label class= "form-lable" for="belopp">Belopp</label>
<input class="form-input" type="number" min="1" name="amount" placeholder="belopp" required>
<label class="form-radio">
<input type="radio" value="deposit" name="action" checked>
<i class="form-icon"></i>insättning
</label>
<label class="form-radio">
<input type="radio" value="withdraw" name="action">
<i class="form-icon"></i>uttag
</label>
<input type="submit" class="btn btn-primary" name="submit" value="utför">
</form>
</div>
</div>
</div>
</div>
<div class="column col-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Transaktioner</h3>
</div>
<div class="card-body">
<?php echo $transactionOutput; ?>
</div>
</div>
</div>
</div>
</main>
<footer class="footer bg-dark hero hero-sm">
<div class="container">
<form action="?" method="POST">
<input type="submit" class="btn btn-primary" name="deleteAccount" value="Ta bort konto">
</form>
<a class="text-secondary" href="logout.php">Logga ut</a>
<p><a class="text-secondary" href="https://kursolle.se/wesweb01/external.php?type=tutorial&page=bankphp" target="_blank">Länk till tutorial</a></p>
<p><a class="text-secondary" href="https://als080411ek.hemsida.eu/webbserver/source.php?path=p01/bank.php" target="_blank">Länk till CSourse</a></p>
</div>
<?php
#echo "<pre>";
#print_r(get_defined_vars());
#echo "</pre>";
?>
</footer>
<?php
?>
</body>
</html>