View sourcecode

The following files exists in this folder. Click to view.

bank.php

190 lines UTF-8 Unix (LF)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?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>