The following files exists in this folder. Click to view.
bank.php190 lines UTF-8 Unix (LF) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
<?php
#
#Funktioner
#
#Funktionrn reload() laddar om sidan
#
function reload($mess=""){ #$mess är tom om ingen inparameter skickas
header("location: ?mess=$mess"); #Anropar samma sida
exit(); #Avbryter alla processer
}
# funktionen formatAmount() formaterar tal vid utskrift
#
function formatAmount($amount){
#formaterar utskriften med tusentalsavgränsare samt lägger till "kr"......
$output = number_format($amount, 0, ",", " ")."kr";
if ($amount < 0) {
#.....för att kunna färgmarkera om talet är negativt
$output = "<span class='text-error'>{$output}</span>";
}
return($output); #retunerar det formaterade talet
}
# Funktionen transaction() skriver en transaktion till filen
#
function transaction($amount, $br=true){
$date = date('Y-m-d H:i:s'); #formaterar datum
$file = fopen($GLOBALS['filename'], 'a'); #Öppnar filen
$br = $br ? "\n" : ""; #om $br är true, sätt "\n"
fwrite($file, "$br$amount|$date"); #Skriv till filen
fclose($file); #stäng filen
}
#
# variabler
#
$GLOBALS['filename'] = "transactions.txt"; #Filen där alla transaktioner lagras
$transactions= array(); #array med alla transaktioner
$transactionOutput = "";
$balance = 0;
#lagrar medelande om det finns
$mess= isset($_GET['mess']) && $_GET['mess'] != "" ? "<span class='label label-error'>{$_GET['mess']}</span>" : "";
#Ta bort filen om detta anrop är gjort
if(isset($_POST['deleteAccount'])){
unlink($filename); #Ta bort filen
#ladda om sidan utan formulärdata men med ett felmedelande
reload('Det gamla kontot har tagits bort och nytt konto har skapats');
}
#Om filen inte finns, skapa den med startapital 1000 kr
if(!file_exists($GLOBALS['filename'])){ #Om filen inte finns
transaction(1000, false); #skapa transaktion, ingen radbrytning
}
#läs in alla transaktionerna
$file=fopen($filename, "r"); #skapar en filpekare för läsning
while(!feof($file)){ #loopar igenom hela filen, rad för rad
$temp = fgets($file); #Lagrar nästa rad i en tempvariabel
if(!empty($temp)){
$transactions[] = $temp;
}
}
#loopar igenom alla transaktioner
#Bygger upp tabellen för utskrift
$transactionOutput="<table class='table'><thead><tr><th>Nr</th><th>Belopp</th><th>Datum</th><th>Saldo</th></tr></thead><tbody>";
$i =1; #Räknaren för utskrift
foreach($transactions as $t){
list($t, $d)= explode("|", $t); #splittar raden/arrayens komponent mha '|'
$balance += $t; #Lägg till transaktionen till saldot
#Bygg upp radens inenehål
$t = formatAmount($t);
$b = formatAmount($balance);
$transactionOutput .= "\n<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
#
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>
<?php echo $mess; ?>
</div>
</div>
<main class="container">
<div class="columns">
<div class="coumn 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>
<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>