0% found this document useful (0 votes)
108 views92 pages

Tooooo

The document describes a project report for developing an online banking system, including an introduction to internet banking, problems with existing banking systems, proposed online banking system features, system analysis and feasibility study, hardware and software requirements, system design including ERD, DFD, and screenshots. The project was completed by a student to fulfill an MCA degree requirement under faculty supervision.

Uploaded by

Fahim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
108 views92 pages

Tooooo

The document describes a project report for developing an online banking system, including an introduction to internet banking, problems with existing banking systems, proposed online banking system features, system analysis and feasibility study, hardware and software requirements, system design including ERD, DFD, and screenshots. The project was completed by a student to fulfill an MCA degree requirement under faculty supervision.

Uploaded by

Fahim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 92

“ Online Banking System”

A Project Report
Submitted in the partial fulfilment of the requirements for
the award of the degree of

MASTER OF COMPUTER APPLICATIONS


(MCA)

PROJECT
by

Name : Sarfraj Ahmad

Roll No. : 21MC127

Regd. No. : MCA0040/21

Session : 2021-2023

UNIVERSITY DEPARTMENT OF MATHEMATICS,


RANCHI UNIVERSITY, RANCHI.
2023.

1
ACKNOWLEDGEMENT

On this great occasion of successful completion of my Project on “Online


Banking System” , I would like to thank my project guide Mr(prof ). Anupam Gupta
and our Director Dr(Mrs). A.Keshri. who has guided and assisted me to complete the
assignment. Withouthis /her support I would not have finished the project within time.

I would also like to take this opportunity to thank my friends & class mates, without them
this project could not have been completed in a short duration they also help me when I got
stuck in coding.

Signature of the Student

External Examiner I Enternal Examiner II

2
CERTIFICATE OF ORIGINALITY

This is to certify that Mr. Sarfraj Ahmad of MCA Roll No.: 21MCA127
Regd. No. MCA0040/21 Session: 2021-2023 is a bonafide student of this
department. He has completed hir project work on the topic “Online Banking
System” from organization University Department of Mathematics place
Ranchi University in semester IV of the session 2021-23. He has completed
the project under the supervision of Mr(prof ). Anupam Gupta .

Director MCA Course University Supervisor


Department of Mathematics,
Ranchi University, Ranchi
CONTENTS

1. INTRODUCTION
2. PROBLEM DEFINITIONS
2.1 Existing System
2.2 Proposed System
3. SYSTEM ANALYSIS
3.1 Feasibility Analysis
4. SYSTEM REQUIREMENTS
4.1 Hardware Requirements
4.2 Software Requirements
5. SYSTEM DESIGN
5.1 E-R diagram
5.2 Data Dictionary
5.3 Data Flow Diagram

6. SYSTEM DESCRIPTION

7. SOURCE CODE

8. SYSTEM TESTING

9. SNAPSHOTS AND REPORTS

10. FUTURE ENHANCEMENTS

11. CONCLUSION

BIBILIOGRAPHY
7
8
INTRODUCTION

The main purpose that banks have been serving since their inception is keeping our
money safe for us. While keeping our money safe, they also let us earn a certain amount
of interest on the money deposited with them. Traditional banks have been doing this,
and internet banks continue the same function. The only difference is in the way the
transactions are made.

They all know about internet banking and most of us use it quite often as well,
but few of us actually understand about the history of internet banking and how it all
came out. Knowing the history of internet banking can be incredibly useful,
especially since it will allow us to have more respect for the little things that we take
for granted.

Internet banking has been around for quite a few years now, but has really only
become prominent over the past year or so in particular. Internet banking offers an
array of different advantages to the user, including account balances and history
including year-to-date information, the ability to transfer money from one account to
another and to payees for bill payments, check history, reorders, and stop payments,
check credit card balances and statements, complete online loan applications, secure
interactive messaging with staff, and much more. Internet banking basically allows you
to be able to do everything that you can in your regular banking institution, only with
the benefit that you can do it all right from the convenience of your own home. Not
only is this great because you can be comfortable and have peace of mind knowing that
you can keep track yourself of all your banking issues, but as well it allows for more
ease because you never have to worry about rushing out and making it to the bank.

9
Online Banking System

With cybercafés and kiosks springing up in different cities access to


the Net is going to be easy. Internet banking (also referred as e banking) is
the latest in this series of technological wonders in the recent past
involving use of Internet for delivery of banking products & services. Even
the Morgan Stanley Dean Witter Internet research emphasized that Web is
more important for retail financial services than for many other industries.
Internet banking is changing the banking industry and is having the major
effects on banking relationships. Banking is now no longer confined to the
branches were one has to approach the branch in person, to withdraw cash
or deposit a cheque or request a statement of accounts. In true Internet
banking, any inquiry or transaction is processed online without any
reference to the branch (anywhere banking) at any time. Providing Internet
banking is increasingly becoming a "need to have" than a "nice to have"
service. The net banking, thus, now is more of a norm rather than an
exception in many developed countries due to the fact that it is the
cheapest way of providing banking services.

10
11
PROBLEM DESCRIPTION

Existing System

Existing system is the traditional banking, where customers have to


go through the long queue, time wasted and still wouldn’t have access to
efficient and effective banking system.

Proposed System

Considering the stress and time taken to go to bank and do


transaction. The development of a well structure and secured online
banking system will allow customer to perform objectives like, creating a
banking system that is easily accessible by customers from the comfort of
their homes, offices. Reduce the flow of human traffic and long queues at
banks; Promote efficient and effective banking for the banks by focusing
on those services that still require physical presence at the banking hall.
Provides intra-bank funds transfer services to their customers. Keep a
detailed log of customer transactions with the bank on his account.
Generate the statement of account of a selected period of time for
customers. And Provide a customer relationship services.

12
13
SYSTEM ANALYSIS
System analysis is a logical process; the objective of this stage is not actually to
solve the problem but to determine what must be done to solve the problem. The
basic objective of the analysis stage is to develop the logical model of the system
using tools such as UML (Unified modeling language).

MAIN OBJECTIVE

➢ To reduce the manual and paper work.

➢ To provide quick access.

➢ Easy maintenance of records

FEASIBILITY ANALYSIS

Feasibility is the determination of whether or not a project is worth


doing. The processes is followed in making this determination is called a feasibility
study. Feasibility study is the test of system proposal according to its workability,
Impact on the organization ability to meet user’s needs, and effective use of
resources. The result of feasibility study is a formal proposal. This is simply a report
– a formal document detailing the nature and scope of the proposed solution .The
main objective of a feasibility study is to test the technical, social and economic
feasibility of developing a computer system. This is done by investigation the
existing system in the area under investigation and generating ideas about a new
system. On studying the feasibility of the system, three major considerations are dealt
with, to find whether the automation of the system is feasible.
14
15
Software Requirements

Application Requirements

 XAMPP

Database Server

 My SQL

Client and Browser

 Any Browser

Frontend

 L
 CSS
 JS
 BOOTSTRAP

Language

 PHP

16
Hardware Requirements

Hardware Requirements

 Windows (Any)

 2gb RAM.

 250gb hard disk space.

Communication Interface
 Client on Internet will be using HTTP/HTTPS protocol.

 Client on Intranet will be using TCP/IP protocol.

 A Web Browser such as IE 6.0 or equivalent.

17
18
Data Flow Diagrams

 This Diagram server two purpose.

➢ Provides an indication of how date is transformed as it


moves through the system.

➢ Disputes the functions and sub functions that transforms


the dataflow.

 The Data flow diagram provides additional information that is used


during the analysis of the information domain, and server as a basis
for the modelling of functions.

 The description of each function presented in the DFD is


contained is a process specifications called as PSPEC

Admin Panel:

Login

Admin Login Authentication View customers

19
Transaction:

Transaction Verification

Deposit Withdraw Enquiry

Choose Transaction

Account choose Transaction

C rent Fixed deposit


Savin

Processing:

Reporting
Custom Authority

er Database Update

Candid
ate

20
ER-Diagrams

❖ The entity Relationship Diagram (ERD) depicts the relationship


between the data objects. The ERD is the notation that is used to
conduct the date modelling activity the attributes of each data object
noted is the ERD can be described resign a data object descriptions.

❖ The set of primary components that are identified by the ER-Diagram are

 Data object

 Relationships

 Attributes

 Various types of indicators.

❖ The primary purpose of the ERD is to represent data objects and their
relationships.

21
ER-Diagram
Customer
id
Admin id Password
Password

Manage
Customer Address
Administrator s
Phone no

Date of Birth

Age

IS
Email

Balance_enq
Funds_transfer Mini stmts
Accounts_types

Availabl
Perfor Generat
Generat e
m e
e the amount
transac trans_lis
account tions t
s

Displays

22
Activity Diagram for overall system

Enter userId &


Password

Valid
user

Transfer update
Balance enquiry Funds transfer Mini statements
profile

Your account
balance Transaction
ammount

Log out

Start

23
Accessing view:

User after logging into his/her account a page is displayed with the basic
requirements:

1) Balance Enquiry.

2) Funds Transfer

User can perform various actions on his/her account.

Name of Use-Case: Balance enquiry.

Description:
 Client can view the balance left in his account, if once he has
entered into his account.

Preconditions:
 The client has already been logged in.

24
Fund Transfer:

25
Users of the system:
In this online internet banking system, the users are
➢ Administrators
➢ Customers

Administrator: He is the super user responsible for managing system


users, taking system backup, generating reports, maintaining
organization details, Starting Sessions and ending Sessions and also
manages various requests from different Types of users.

 Providing Username, Password and other information required


for the users to start an account.
 Starting Sessions: The Administrator creates the system users
and will be assigned with the different roles. He is also responsible to
start the session when a particular user wants to use the system every
time (It is automatically managed setup).

 Managing Data Backup: The Administrator is responsible for


managing entire details by taking the backup periodically. He also takes
the Backup of the database in order to prevent loss of data on system
crashes or in order to prevent malfunctioning. He can take a backup of
entire database or a particular section.

 Crash Recovery: The Administrator manages the crash


recovery at the time of system crash or failure occurs.

 Ending session: The administrator is responsible for ending the


session when the particular user logged out of the system (It is
26
automatically managed setup).
Customer (Normal/others): Ordinary customers have a user name &
password with which they can login into their account. They can perform
all the transactions such as funds transfer, balance enquiry etc by sitting at
their home on internet.

 Login: User can login to the system by providing appropriate


username and password provided by the administrator.

 Selecting the Account: After logging in the user is provided


with a screen showing the details of accounts and he selects one of the
account inorder to perform the transaction.

 Balance Enquiry: He can view the balance left in his account,


if once he has entered into his account.
 Funds Transfer: Upon the request the user can transfer funds
from his account to other accounts.

 Mini statements: He also can take a mini statement print out upon his
requirement.

27
Database Design
CustomerAI
Field Name Data Type SIZ
E
AccountNo Varchar 50
A_Sno Int 4
UserID Varchar 50
AccountName Varchar 50
AccountType Varchar 50
Balance Int -

Login Details
Field Name Data Type SIZ
E
Sno Int 15
UserID Varchar 20
Password Varchar 20
Mini_stat
Field Name Data Type SIZ
E
UserID Varchar 50
T_date Date -
T_Id Int 20
T_Accountno Int 20
T_Amount Int -

28
CustomerPI
Field Name Data Type SIZ
E
UserID Varchar 50
FirstName Varchar 50
LastName Varchar 50
FatherName Varchar 50
R_Address Varchar 500
DOB Varchar 50
Age Int 2
Landline_No Varchar 20
Mobile_Phone Varchar 10
Nationality Varchar 10
Email Varchar 50
Occupation Varchar 50
O_Address Varchar 50
Office_phone Varchar 50
Employer Varchar 50
City Varchar 50
Pincode Varchar 50
State Varchar 50
Country Varchar 50

29
Bankdb (Transaction List)
Field Name Data Type SIZ
E
T_Id Int 30
AccountNo Varchar 50
TDate Varchar 50
Debit Int 20
Credit Int 20
Balance Int -
DepositAcct Varchar 50
WithdrawAcct Varchar 50

30
31
Overall Description
The Online banking Application project will be divided into 4 modules
namely:

 Login

 Registration

 Account Information

 Transaction

Description
Login: The customer is asked to enter user name & password.
When the user enters the details & submits it goes to a validation
engine where it checks valid/not. If valid he is shown with list of
accounts he has with the bank.

Authentication provides a way of identifying a user, typically


by having the user enter a valid user name and valid password before
access is granted. The process of authentication is based on each user
having a unique set of criteria for gaining access. Server compares a
user's authentication credentials with other user credentials stored in a
database. If the credentials match, the user is granted access to the
account. If the credentials are at variance, authentication fails and
account access is denied.

32
Authorisation service manages authentication, authorization,
and access control to user accounts, subject to approval from the
account holder. several account authorization APIs to accommodate
different types of access. After Authentication a user will be verified
for performing the various tasks, It access is limited it is known as
authorization

Registration: Once your registration is complete you will be able to


access all of your accounts, with information asked in the prompts
during the registration process. We use this information to authenticate
you as a user with access to the retail loan or lease account. Details
such as name........add phone 20

33
Account Information:

o Selecting the Account: After logging in the user is choose the


details of accounts and he selects one of the accounts in order to
perform the transaction.

o Balance Enquiry: The balance details of a particular account to


display.

Balance of current account ,fixed and saving account

Transaction: This module maintains the information related to the


funds that have been transferred by the customer from one of his
account to another account of his own. This module helps the customer
in executing the fund transfer without the physical visit to the banks
premises.

o Mini Statement: When the user requests for mini statements in


the home page, system asks the type of statement needed by the
customer. When the customer selects the type of statement. The
system displays the list of transactions on the screen. If the
customer wants to take print outs he can take the print outs of
the same.

34
35
Tools and Technologies used

PHP

PHP: Hypertext Preprocessor (the name being a recursive acronym)


is a widely used, general-purpose scripting language that was originally
designed for web development to produce dynamic web pages. For this
purpose, PHP code is embedded into the HTML source document and
interpreted by a web server with a PHP processor module, which generates
the web page document. As a general-purpose programming language,
PHP code is processed by an interpreter application in command-line mode
performing desired operating system operations and producing program
output on its standard output channel. It may also function as a graphical
application. PHP is available as a processor for most modern web servers
and as standalone interpreter on most operating systems and computing
platforms.

PHP was originally created by Rasmus Lerdorf in 1995 and has been
in continuous development ever since. The main implementation of PHP is
now produced by The PHP Group and serves as the de facto standard for
PHP as there is no formal specification. PHP is free software released
under the PHP License, which is incompatible with the GNU General
Public License (GPL) because restrictions exist regarding the use of the
term PHP.

36
Security

The National Vulnerability Database stores all vulnerabilities found


in computer software. The overall proportion of PHP-related
vulnerabilities on the database amounted to: 20% in 2004, 28% in 2005,
43% in 2006, 36% in
2007, 35% in 2008, and 30% in 2009. Most of these PHP- related
vulnerabilities can be exploited remotely: they allow hackers to steal or
destroy data from data sources linked to the webserver (such as an SQL
database), send spam or contribute to DoS attacks using malware, which
itself can be installed on the vulnerable servers.

These vulnerabilities are caused mostly by not following best practice


programming rules: technical security flaws of the language itself or of its
core libraries are not frequent (23 in 2008, about 1% of the total).
Recognizing that programmers cannot be trusted, some languages include
taint checking to detect automatically the lack of input validation which
induces many issues. Such a feature is being developed for PHP, but its
inclusion in a release has been rejected several times in the past.

37
Hosting PHP applications on a server requires a careful and constant
attention to deal with these security risks. There are advanced protection
patches such as Suhosin and Hardening-Patch, especially designed for web
hosting environments.

Speed optimization

As with any interpreted language, PHP scripts are stored as human-


readable source code and are compiled on-the-fly by the PHP engine. In
order to speed up execution time and not have to compile the PHP source
code every time the webpage is accessed, PHP scripts can also be stored in
binary format using PHP compilers such as phc and roadsend.

Code optimizers aim to reduce the runtime of the compiled code by


reducing its size and making other changes that can reduce the execution
time with the goal of improving performance. The nature of the PHP
compiler is such that there are often opportunities for code optimization,
and an example of a code optimizer is the accelerator PHP extension.

Another approach for reducing overhead for high load PHP servers is
using an Opcode cache. Opcode caches work by caching the compiled
form of a PHP script (opcodes) in shared memory to avoid the overhead of
parsing and compiling the code every time the script runs.

38
Resources

PHP includes free and open-source libraries with the core build. PHP
is a fundamentally Internet-aware system with modules built in for
accessing FTP servers, many database servers, embedded SQL libraries
such as embedded PostgreSQL, MySQL and SQLite, LDAP servers, and
others. Many functions familiar to C programmers such as those in the
stdio family are available in the standard PHP build.

PHP allows developers to write extensions in C to add functionality


to the PHP language. These can then be compiled into PHP or loaded
dynamically at runtime. Extensions have been written to add support for
the Windows API, process management on Unix-like operating systems,
multibyte strings (Unicode), cURL, and several popular compression
formats. Some more unusual
features include integration with Internet Relay Chat, dynamic generation
of images and Adobe Flash content, and even speech synthesis. The PHP
Extension Community Library (PECL) project is a repository for
extensions to the PHP language.

39
My- SQL
MySQL is a relational database management system (RDBMS)

1. That runs as a server providing multi-user access to a number


of databases. MySQL is officially pronounced (My S-Q-L), but
often pronounced (My SeQueL).

2. The MySQL development project has made its source


code available under the terms of the GNU General Public
License, as well as under a variety of proprietary agreements.
MySQL is owned and sponsored by a single for-profit firm, the
Swedish company MySQL AB, now owned by Sun
Microsystems, a subsidiary of Oracle Corporation.

3. Members of the MySQL community have created


several forks such as Drizzle and MariaDB. Both forks were
in progress long before the Oracle.
Uses

Many web applications use MySQL as the database component of a


LAMP software stack. Its popularity for use with web applications is
closely tied to the popularity of PHP, which is often combined with MySQ

40
Database
A collection of programs that enables you to store, modify, and
extract information from a database. Information of the users gets stored in
a relational database. The application works well with MS- Access as
database, it also works well with MySQL, SQL Server 2000 and Oracle.

Data Manipulation Language (DML) is used to modify the data present in


database:

 SELECT - extracts data from a database table

 UPDATE - updates data in a database table

 DELETE - deletes data from a database table

 INSERT INTO - inserts new data into a database table

The Data Definition Language (DDL) is used to define the data:

 CREATE TABLE - creates a new database table

 ALTER TABLE - alters (changes) a database table

 DROP TABLE - deletes a database table

 CREATE INDEX - creates an index (search key)

 DROP INDEX - deletes an index

41
Official

The official MySQL Workbench is a free integrated environment


developed by MySQL AB, that enables users to graphically administer
MySQL databases and visually design database structure. MySQL
Workbench replaces the previous package of software, MySQL GUI
Tools. Similar to other third-party packages but still considered the
authoritative MySQL frontend, MySQL Workbench lets users manage the
following:

 Database design & modeling

 SQL development — replacing MySQL Query Browser

 Database administration — replacing MySQL Administrator

In this project, MySQL is used as the backend database. MySQL is an


opensource database management system. The features of MySQL are
given below

 MySQL is a relational database management system. A relational


database stores information in different tables, rather than in one
giant table. These tables can be referenced to each other, to access
and maintain data easily.
42
 MySQL is open-source database system. The database software can
be used and modify by anyone according to their needs.

 It is fast, reliable and easy to use. To improve the performance,


MySQL is multithreaded database engine. A multithreaded
application performs many tasks at the same time as if multiple
instances of that application were running simultaneously.

In being multithreaded MySQL has many advantages. A separate


thread handles each incoming connection with an extra thread that is
always running to manage the connections. Multiple clients can perform
read operations simultaneously, but while writing, only hold up another
client that needs access to the data being updated. Even though the threads
share the same process space, they execute individually and because of this
separation, multiprocessor machines can spread the thread across many
CPUs as long as the host operating system supports multiple CPUs.
Multithreading is the key feature to support MySQL’s performance design
goals. It is the core feature around which MySQL is built.

43
44
HOME USER LOGIN

<?php

include "header.php";

include "navbar.php";

if (isset($_GET['loginFailed'])) {

$message = "Invalid Credentials ! Please try again.";

echo "<script type='text/javascript'>alert('$message');</script>";

?>

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="home_style.css">

</head>
<body>

<div class="flex-container-background">

<div class="flex-container">

<div class="flex-item-0">

<h1 id="form_header">Welcome to State Bank Of India.</h1><br>

</div>

</div>

<div class="flex-container">

<div class="flex-item-1">

<form action="customer_login_action.php" method="post">

<div class="flex-item-login">

<h2>Welcome</h2>

</div>

<div class="flex-item">

<input type="text" name="cust_uname" placeholder="Enter your Username" required>

</div>

<div class="flex-item">

<input type="password" name="cust_psw" placeholder="Enter your Password"


required>

</div>

<div class="flex-item">

<button type="submit">Login</button>

</div>

</form>

</div>

</div>
</div>

</body>

</html>

<?php include "easter_egg.php"; ?>

TRANSACTION

<?php

/* Avoid multiple sessions warning

Check if session is set before starting a new one. */


if(!isset($_SESSION)) {

session_start();

include "validate_admin.php";

include "connect.php";

include "header.php";

include "user_navbar.php";

include "admin_sidebar.php";

include "session_timeout.php";

if (isset($_GET['cust_id'])) {

$_SESSION['cust_id'] = $_GET['cust_id'];

$sql0 = "SELECT * FROM passbook".$_SESSION['cust_id'];

// Recive sort variables as

$_GET if (isset($_GET['sort'])) {

$sort = $_GET['sort'];

// Recieve filter variables as session variables


if (isset($_POST['search_term'])) {

$_SESSION['search_term'] = $_POST['search_term'];

if (isset($_POST['date_from'])) {

$_SESSION['date_from'] = $_POST['date_from'];

if (isset($_POST['date_to'])) {

$_SESSION['date_to'] = $_POST['date_to'];
}

// Filter indicator variable

$filter_indicator = "None";

// Queries when search is set

if (!empty($_SESSION['search_term'])) {

$sql0 .= " WHERE remarks COLLATE latin1_GENERAL_CI LIKE '%".$_SESSION['search_term']."%'";

$filter_indicator = "Remarks";

if (!empty($_SESSION['date_from']) && empty($_SESSION['date_to'])) {

$sql0 .= " AND trans_date > '".$_SESSION['date_from']." 00:00:00'";

$filter_indicator = "Remarks & Date From";

if (empty($_SESSION['date_from']) && !empty($_SESSION['date_to'])) {

$sql0 .= " AND trans_date < '".$_SESSION['date_to']." 23:59:59'";

$filter_indicator = "Remarks & Date To";

if (!empty($_SESSION['date_from']) && !empty($_SESSION['date_to'])) {

$sql0 .= " AND trans_date BETWEEN '".$_SESSION['date_from']." 00:00:00' AND '".


$_SESSION['date_to']." 23:59:59'";

$filter_indicator = "Remarks, Date From & Date To";

// Queries when search is not set

if (empty($_SESSION['search_term'])) {

if (!empty($_SESSION['date_from']) && empty($_SESSION['date_to'])) {

$sql0 .= " WHERE trans_date > '".$_SESSION['date_from']." 00:00:00'";

$filter_indicator = "Date From";

}
if (empty($_SESSION['date_from']) && !empty($_SESSION['date_to']))
{

$sql0 .= " WHERE trans_date < '".$_SESSION['date_to']." 23:59:59'";

$filter_indicator = "Date To";

if (!empty($_SESSION['date_from']) && !empty($_SESSION['date_to'])) {

$sql0 .= " WHERE trans_date BETWEEN '".$_SESSION['date_from']." 00:00:00' AND


'".$_SESSION['date_to']." 23:59:59'";

$filter_indicator = "Date From & Date To";

// Sort Queries

// Sort acts independent of the filter

if (isset($_GET['sort'])) {

if ($sort == 'tid_down') {

$sql0 .= " ORDER BY trans_id ASC";

if ($sort == 'tid_up') {

$sql0 .= " ORDER BY trans_id DESC";

if ($sort == 'date_down') {

$sql0 .= " ORDER BY trans_date ASC";

if ($sort == 'date_up') {

$sql0 .= " ORDER BY trans_date DESC";

?>

<!DOCTYPE html>

<html>
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="transactions_style.css">

</head>

<body>

<div class="search-bar-wrapper">

<div class="search-bar" id="the-search-bar">

<div class="flex-item-search-bar" id="fi-search-bar">

<button id="search"
onclick="document.getElementById('id01').style.display='block'">Filter</button>

<div class="flex-item-by">

<label id="sort">Sort By :</label>

</div>

<div class="flex-item-search-by">

<select name="by" onChange="window.location.href=this.value">

<option selected disabled hidden>

<?php if (empty($_GET['sort'])) {?>Tn. ID &darr;<?php } else { ?>

<?php if ($sort == 'tid_down') {?>Tn. ID &darr;<?php } ?>

<?php if ($sort == 'tid_up') {?>Tn. ID &uarr;<?php } ?>

<?php if ($sort == 'date_down') {?>Date &darr;<?php } ?>

<?php if ($sort == 'date_up') {?>Date &uarr;<?php } ?>

<?php } ?>

</option>

<option value="transactions.php?sort=tid_down">Tn. ID &darr;</option>

<option value="transactions.php?sort=tid_up">Tn. ID &uarr;</option>

<option value="transactions.php?sort=date_down">Date &darr;</option>

<option value="transactions.php?sort=date_up">Date &uarr;</option>

</select>
</div>

</div>

</div>

</div>

<div id="id01" class="modal">

<form class="modal-content animate" action="" method="post">

<div class="imgcontainer">

<span onclick="document.getElementById('id01').style.display='none'" class="close"


title="Close Filter">&times;</span>

</div>

<div class="container">

<h1 id="filter">Filter</h1>

<p id="filter">(Leave blank to remove filter)</p>

<label>Trans. Remarks :</label>

<input type="text" placeholder="Enter Remarks" name="search_term">

<label>Duration (yyyy-mm-dd) :</label>

<div class="duration-container">

<div class="date-container">

<input id="date" type="text" placeholder="From" name="date_from">

</div>

<p id="minus">&minus;<b</p>

<div class="date-container">

<input id="date" type="text" placeholder="Upto" name="date_to">

</div>

</div>
<button id="submit" type="submit">Go</button>

</div>

</form>

</div>

<div class="flex-container">

<p id="none">Filter : <?php echo $filter_indicator ?></p>

</div>

<div class="flex-container">

<?php

$result = $conn->query($sql0);

if ($result->num_rows > 0) {?>

<table id="transactions">

<tr>

<th>Trans. ID</th>

<th>Date & Time (IST)</th>

<th>Remarks</th>

<th>Debit (INR)</th>

<th>Credit (INR)</th>

<th>Balance (INR)</th>

</tr>

<?php

// output data of each row

while($row = $result->fetch_assoc()) {?>

<tr>

<td><?php echo $row["trans_id"]; ?></td>

<td>
<?php

$time = strtotime($row["trans_date"]);

$sanitized_time = date("d/m/Y, g:i A", $time);

echo $sanitized_time;

?>

</td>

<td><?php echo $row["remarks"]; ?></td>

<td><?php echo number_format($row["debit"]); ?></td>

<td><?php echo number_format($row["credit"]); ?></td>

<td><?php echo number_format($row["balance"]); ?></td>

</tr>

<?php } ?>

</table>

<?php

} else { ?>

<p id="none"> No results found :(</p>

<?php }

$conn->close(); ?>

</div>

<script>

// Sticky search-bar

$(document).ready(function() {

var curr_scroll;

$(window).scroll(function () {

curr_scroll = $(window).scrollTop();

if ($(window).scrollTop() > 120) {

$("#the-search-bar").addClass('search-bar-fixed');
if ($(window).width() > 855) {

$("#fi-search-bar").addClass('fi-search-bar-fixed');

if ($(window).scrollTop() < 121) {

$("#the-search-bar").removeClass('search-bar-fixed');

if ($(window).width() > 855) {

$("#fi-search-bar").removeClass('fi-search-bar-fixed');

});

$(window).resize(function () {

var class_name = $("#fi-search-bar").attr('class');

if ((class_name == "flex-item-search-bar fi-search-bar-fixed") && ($(window).width() < 856)) {

$("#fi-search-bar").removeClass('fi-search-bar-fixed');

if ((class_name == "flex-item-search-bar") && ($(window).width() > 855) && (curr_scroll >


120)) {

$("#fi-search-bar").addClass('fi-search-bar-fixed');

});

// Get the modal

var modal = document.getElementById('id01');


// When the user clicks anywhere outside of the modal, close it

window.onclick = function(event) {

if (event.target == modal) {

modal.style.display =

"none";

});

</script>

</body>

</html>

SEND/RECEIVE

<?php

include "validate_customer.php";

include "header.php";

include "customer_navbar.php";

include "customer_sidebar.php";
include "session_timeout.php";

if (isset($_GET['cust_id'])) {

$id = $_GET['cust_id'];

$sql0 = "SELECT * FROM customer WHERE cust_id=".$id;

$result0 = $conn->query($sql0);

$row0 = $result0->fetch_assoc();

?>

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="customer_add_style.css">

</head>

<body>

<form class="add_customer_form" action="send_funds_action.php?cust_id=<?php echo $id ?>"


method="post">

<div class="flex-container-form_header">

<h1 id="form_header">Transfer Funds</h1>

</div>

<div class="flex-container">

<div class=container>

<label>

To : <label id="info_label">

<?php echo $row0["first_name"]." ".$row0["last_name"] ?>

</label>
</label>

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Account No : <label id="info_label"><?php echo $row0["account_no"]


?></label></label>

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Enter Amount :</label><br>

<input name="amt" size="24" type="text" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Enter your password :</b></label><br>

<input name="password" size="24" type="password" required />

</div>

</div>

<div class="flex-container">

<div class="container">

<a href="/beneficiary.php" class="button">Go Back</a>

</div>

<div class="container">
<button type="submit">Submit</button>

</div>

<div class="container">

<button type="reset" class="reset" onclick="return confirmReset();">Reset</button>

</div>

</div>

</form>

<script>

function confirmReset() {

return confirm('Do you really want to reset?')

</script>

</body>

</html>
ATM SIMULATOR

<?php

include "validate_customer.php";

include "header.php";

include "customer_navbar.php";

include "customer_sidebar.php";

include "session_timeout.php";

?>

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="customer_add_style.css">

</head>
<body>

<form class="add_customer_form" action="atm_simulator_action.php" method="post">

<div class="flex-container-form_header">

<h1 id="form_header">ATM Simulator</h1>

</div>

<div class="flex-container">

<div class=container>

<label>Enter Amount:</label><br>

<input name="amt" size="24" type="text" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Type :</label>

</div>

<div class="flex-container-radio">

<div class="container">

<input type="radio" name="type" value="debit" id="debit-radio" checked>

<label id="radio-label" for="debit-radio"><span class="radio">Debit</span></label>

</div>

<div class="container">

<input type="radio" name="type" value="credit" id="credit-radio">

<label id="radio-label" for="credit-radio"><span class="radio">Credit</span></label>

</div>

</div>

</div>

<div class="flex-container">

<div class=container>
<label>PIN(4 digit) :</b></label><br>

<input name="pin" size="12" type="password" required />

</div>

</div>

<div class="flex-container">

<div class="container">

<button type="submit">Submit</button>

</div>

<div class="container">

<button type="reset" class="reset" onclick="return confirmReset();">Reset</button>

</div>

</div>

</form>

<script>

function confirmReset() {

return confirm('Do you really want to reset?')

</script>

</body>

</html>

CONTECT US

<?php

include "header.php";

include "navbar.php";
?>

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="contact_style.css">

</head>

<body>

<div class="flex-container-background">

<div class="flex-container-heading">

<h1 id="contact">Contact Us</h1>

</div>

<div class="flex-container" style="border-bottom: 0;

border-top-left-radius: 10px;

border-top-right-radius: 10px;">

<div class="flex-item">

<h1 id="sub-contact">General Contact</h1>

<p id="sub-contact">

Toll-Free: 1111-111-1111<br>

Phone: 222-222-2222<br>

Fax: 333-333-3333<br>

Email: suarez081119@gmail.com

</p>

</div>

</div>

<div class="flex-container" style="border-top: 0;

border-bottom-left-radius: 10px;

border-bottom-right-radius: 10px;">
</div>

</div>

</body>

</html>

ADMIN LOGIN

<?php

include "header.php";

if (isset($_GET['loginFailed'])) {

$message = "Invalid Credentials ! Please try again.";

echo "<script type='text/javascript'>alert('$message');</script>";

?>

<!DOCTYPE html>
<html>

<head>

<link rel="stylesheet" href="admin_login_style.css">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

</head>

<body>

<form action="./admin_login_action.php" method="post">

<div class="flex-container-1">

<div class="flex-item">

<h2>Administrator Login</h2>

</div>

<label><b>Username</b></label>

<div class="flex-item">

<input type="text" name="admin_uname" required>

</div>

<label><b>Password</b></label>

<div class="flex-item">

<input type="password" name="admin_psw" required>

</div>

</div>

<div class="flex-container-2">

<div class="flex-item">

<button type="submit">Login</button>

</div>

<div class="flex-item">

<button type="button" class="cancelbtn">Cancel</button>


</div>

</div>

</form>

</body>

</html>

ADMIN HOME

<?php

include "validate_admin.php";

include "header.php";

include "user_navbar.php";

include "admin_sidebar.php";

include "session_timeout.php";

?>
<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="admin_home_style.css">

</head>

<body>

<div class="flex-container">

<div class="flex-item">

<h1 id="customer">

Welcome Admin

</h1>

<p id="customer" style="max-width:800px">

From here you can manage all of core Internet Banking settings.

You can add/manage customers, view their transactions, edit their

details and even delete them. You can also post news on the website.

<br>Please keep in mind that with big power comes big

responsibility. Therefore please do not misuse your admin control to

create trouble.

</p>

</div>

</div>

</body>

</html>

<?php include "easter_egg.php"; ?>


ADD CUSTOMER
<?php

include "validate_admin.php";

include "header.php";

include "user_navbar.php";

include "admin_sidebar.php";

include "session_timeout.php";

?>

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="customer_add_style.css">

</head>

<body>

<form class="add_customer_form" action="customer_add_action.php" method="post">

<div class="flex-container-form_header">

<h1 id="form_header">Please fill in the following details . . .</h1>


</div>

<div class="flex-container">

<div class=container>

<label>First Name :</label><br>

<input name="fname" size="30" type="text" required />

</div>

<div class=container>

<label>Last Name :</b></label><br>

<input name="lname" size="30" type="text" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Gender :</label>

</div>

<div class="flex-container-radio">

<div class="container">

<input type="radio" name="gender" value="male" id="male-radio" checked>

<label id="radio-label" for="male-radio"><span class="radio">Male</span></label>

</div>

<div class="container">

<input type="radio" name="gender" value="female" id="female-radio">

<label id="radio-label" for="female-radio"><span class="radio">Female</span></label>

</div>

<div class="container">

<input type="radio" name="gender" value="others" id="other-radio">

<label id="radio-label" for="other-radio"><span class="radio">Others</span></label>

</div>

</div>
</div>

<div class="flex-container">

<div class=container>

<label>Date of Birth :</label><br>

<input name="dob" size="30" type="text" placeholder="yyyy-mm-dd" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Citizenship No :</label><br>

<input name="aadhar" size="25" type="text" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Email-ID :</label><br>

<input name="email" size="30" type="text" required />

</div>

<div class=container>

<label>Phone No. :</b></label><br>

<input name="phno" size="30" type="text" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Address :</label><br>

<textarea name="address" required /></textarea>


</div>

</div>

<div class="flex-container">

<div class=container>

<label>Bank Branch :</label>

</div>

<div class=container>

<select name="branch">

<option value="lalpur">Lalpur</option>

<option value="morabadi">Morabadi</option>

<option value="katchhari">Katchhari</option>

<option value="main road">Main Road</option>

<option value="buti more">Buti More</option>

<option value="karmtoli">Karmtoli</option>

</select>

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Account No :</label><br>

<input name="acno" size="25" type="text" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Opening Balance :</label><br>

<input name="o_balance" size="20" type="text" required />

</div>
<div class=container>

<label>PIN(4 digit) :</b></label><br>

<input name="pin" size="15" type="text" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Username :</label><br>

<input name="cus_uname" size="30" type="text" required />

</div>

<div class=container>

<label>Password :</b></label><br>

<input name="cus_pwd" size="30" type="text" required />

</div>

</div>

<div class="flex-container">

<div class="container">

<button type="submit">Submit</button>

</div>

<div class="container">

<button type="reset" class="reset" onclick="return confirmReset();">Reset</button>

</div>

</div>

</form>

<script>

function confirmReset() {
return confirm('Do you really want to reset?')

</script>

</body>

</html>

EDIT/DELETE CUSTOMER
<?php

/* Avoid multiple sessions warning

Check if session is set before starting a new one. */ if(!

isset($_SESSION)) {

session_start();

include "validate_admin.php";

include "connect.php";

include "header.php";

include "user_navbar.php";

include "admin_sidebar.php";

include "session_timeout.php";

if (isset($_GET['cust_id'])) {

$_SESSION['cust_id'] = $_GET['cust_id'];

$sql0 = "SELECT * FROM customer WHERE cust_id=".$_SESSION['cust_id'];

$sql1 = "SELECT * FROM passbook".$_SESSION['cust_id']." WHERE trans_id=(

SELECT MAX(trans_id) FROM passbook".$_SESSION['cust_id'].")";

$result0 = $conn->query($sql0);

$result1 = $conn->query($sql1);

if ($result0->num_rows > 0) {

// output data of each row

while($row = $result0->fetch_assoc()) {

$fname = $row["first_name"];

$lname = $row["last_name"];

$gender = $row["gender"];
$dob = $row["dob"];

$aadhar = $row["aadhar_no"];

$email = $row["email"];

$phno = $row["phone_no"];

$address = $row["address"];

$branch = $row["branch"];

$acno = $row["account_no"];

$pin = $row["pin"];

$cus_uname = $row["uname"];

$cus_pwd = $row["pwd"];

if ($result1->num_rows > 0) {

// output data of each row

while($row = $result1->fetch_assoc()) {

$balance = $row["balance"];

?>

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="customer_add_style.css">

</head>

<body>

<form class="add_customer_form" action="./edit_customer_action.php" method="post">

<div class="flex-container-form_header">
<h1 id="form_header">Edit/View Customer details . . .</h1>

</div>

<div class="flex-container">

<div class=container>

<label>Customer ID : <label id="info_label"> <?php echo $_SESSION['cust_id'] ?>


</label></label>

</div>

</div>

<div class="flex-container">

<div class=container>

<label>First Name :</label><br>

<input name="fname" size="30" type="text" value="<?php echo $fname ?>" required />

</div>

<div class=container>

<label>Last Name :</b></label><br>

<input name="lname" size="30" type="text" value="<?php echo $lname ?>" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Balance : <label id="info_label"> <?php echo number_format($balance) ?>


</label></label>

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Gender :

<label id="info_label">
<?php

if ($gender == "male") {echo "Male";}

elseif ($gender == "female") {echo "Female";}

else {echo "Others";}

?>

<label>

</label>

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Date of Birth :</label><br>

<input name="dob" size="30" type="text" placeholder="yyyy-mm-dd" value="<?php echo


$dob ?>" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Citizenship No :</label><br>

<input name="aadhar" size="25" type="text" value="<?php echo $aadhar ?>" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Email-ID :</label><br>

<input name="email" size="30" type="text" value="<?php echo $email ?>" required />

</div>

<div class=container>
<label>Phone No. :</b></label><br>

<input name="phno" size="30" type="text" value="<?php echo $phno ?>" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Address :</label><br>

<textarea name="address" required /><?php echo $address ?></textarea>

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Bank Branch :</label>

</div>

<div class=container>

<select name="branch">

<option value="kathmandu" <?php if ($branch == 'kathmandu') {?> selected="selected"


<?php }?>>Kathmandu</option>

<option value="delhi" <?php if ($branch == 'delhi') {?> selected="selected" <?php


}?>>Delhi</option>

<option value="newyork" <?php if ($branch == 'newyork') {?> selected="selected" <?php


}?>>New York</option>

<option value="paris" <?php if ($branch == 'paris') {?> selected="selected" <?php


}?>>Paris</option>

<option value="riyadh" <?php if ($branch == 'riyadh') {?> selected="selected" <?php


}?>>Riyadh</option>

<option value="moscow" <?php if ($branch == 'moscow') {?> selected="selected" <?php


}?>>Moscow</option>

</select>

</div>

</div>
<div class="flex-container">

<div class=container>

<label>Account No :</label><br>

<input name="acno" size="25" type="text" value="<?php echo $acno ?>" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>PIN(4 digit) :</b></label><br>

<input name="pin" size="15" type="text" value="<?php echo $pin ?>" required />

</div>

</div>

<div class="flex-container">

<div class=container>

<label>Username :</label><br>

<input name="cus_uname" size="30" type="text" value="<?php echo $cus_uname ?>"


required />

</div>

<div class=container>

<label>Password :</b></label><br>

<input name="cus_pwd" size="30" type="text" value="<?php echo $cus_pwd ?>" required


/>

</div>

</div>

<div class="flex-container">

<div class="container">

<a href="./manage_customers.php" class="button">Go Back</a>

</div>
<div class="container">

<button type="submit">Update</button>

</div>

</div>

</form>

</body>

</html>
46
TESTING
Software testing is a process of analyzing or operating software for
the purpose of finding bugs. Test activities that are associated with
analyzing the products of software development include code inspections,
walkthroughs, and desk checks.

UNIT TESTING

Unit testing involves test planning, test case development and


measurement of test unit against the requirement specifications.

Planning involves designing the schedule, determining the resources


required and determining the features to be tested. Test case development
involves designing test cases that are to be tested; the test cases are
prepared so as to test the system exhaustively to find the bugs present in
the system. Measurement of test unit against specification involves testing
the system by giving the test cases as input and checking the systems
adherence to its specification.

The following features were tested:

 Test to see if the requirements specified are taken care of.

 Test to see if all the inputs are handled effectively.

 Test the system by traversing all paths to discover any surprises.

 Check if the errors and exceptions have been handled properly.


47
 See if the validations of input data are all taken care off.

Test cases were designed to check the results retrieved from the
database and the validation of all user inputs. All the modules were tested
thoroughly. The module interface was also tested to ensure that
information flows into and out of the program units.

48
INTEGRATION TESTING

This testing is performed after all individual modules are developed


and ready for the integration. The objective of this testing is to build a
program structure as dictated in the design by taking unit tested modules.

REQUIREMENT TO BE TESTED

The following requirements will be tested

1. Verify if valid users are identified.

2. Verify if invalid users are blocked from logging into


the application.

GET REPORTGENERATION DETAILS

This service validates fetches the account details given an account Id


down integration is an incremental approach to the construction of
program structure. Modules are integrated by moving downward through
the control hierarchy, beginning with the main module. Modules
subordinate to the main module are incorporated into the structure in depth
first manner. In this way, interfacing between the various modules was also
thoroughly tested. In this System, the integration testing is done by
checking all possible workflows of the analysis and cleaning process.

49
SYSTEM TESTING

System Testing is a series of test, which have to be performed to fully


exercise the computer- based system. It ensures that all the system
elements are fully integrated and each element performs its allocated
function.

50
PERFORMANCE TESTING

Performance testing is done to test run-time performance of the


software within context of an integrated system. For real time systems,
adherence to performance requirements is a must. It determines the amount
of execution time spent in various units, program throughput and response
time. This system being highly user-interactive and capable of executing
large volume of data was expected to have a small response time.

White Box Testing

This is a unit testing method where a unit will be taken at a time and
tested thoroughly at a statement level to find the maximum possible errors.
I tested step wise every piece of code, taking care that every statement in
the code is executed at least once. The white box testing is also called
Glass Box Testing. I have generated a list of test cases, sample data. which
is used to check all possible combinations of execution paths through the
code at every module level.

Black Box Testing

This testing method considers a module as a single unit and checks


the unit at interface and communication with other modules rather getting
into details at statement level. Here the module will be treated as a block

51
box that will take some input and generate output. Output for a given set
of input combinations are forwarded to other modules.

TEST CASES

VALIDATE LOGIN

This service validates the login credentials provided by the user.

If the login credentials are correct, it returns the User

Context to the caller. If the login credentials are

incorrect, it returns a null User Context.

52
Test Test case Input data Expected Result resul
no t
1 For logi and Client ,152fg An exception with the False
n
invalid error identifier
password INVALID_LOGIN_ is
thrown Validate the
result
with Data in the database.
2 For expired login Client 2, An exception with the error False
and password Purity identifier
INVALID_LOGIN_ is
thrown. Validate the result
with data in the
database.
3 For reports 12/07/14 to An exception with the error False
between two 01/12/08 identifier NON_ DATE is
invalid dates thrown
4 For reports 02/12/07 to The report generated from True
the
between two valid 07/12/08 was
dates database

53
54
FUTURE ENHANCEMENT

Today, online banking services are quite varied. One of the best
features of online banking is putting the user in control. The user controls
all bill paying, transfers, and investments from home.

There are other features, though of online banking. One of these is


increased accessibility to your account information. Users of online
banking services can access their account information from anywhere in
the world! This is particularly helpful for businesses. Internet business
banking is becoming increasingly popular, as businesses are becoming
more global in their reach. Now business people can access their accounts,
even when on overseas business trips. Business Internet banking is
extremely popular for this reason.

55
56
CONCLUSION
This section discuss the result of the work done in this project And
also mentions the future scope for improvement.

Conclusion

As the world becomes more of a global village being runner by


paperless systems, the idea of a cashless society is the hope of the future.
Thus, more innovations will still evolve which will make cashless
transactions easily accessible and affordable.

Future Scope of Improvement

The “Banking Online System is a big and ambitious project. I am


thankful for being provided this great opportunity to work on it. As already
mentioned, this project has gone through extensive research work. On the
basis of the research work, we have successfully designed and
implemented banking online System.

57
58
Bibliography

BOOK REFERENCES
 W. Lecky-Thompson,” Web Programming with HTML, PHP
and MySQL”, 2nd Edition, 2008
 W. Jason Gilmore,” Beginning PHP and MySQL”, 3rd Edition,2008

WEB SITES
 Online banking of National City bank www.Nationalcity.com
 Online banking of Bank one www.BankOne.com
 Online banking of ICICI bank www.ICICI.com
 PHP tutorials www.phpbuilder.com
 PHP tutorials www.php-learn-it.com

59

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy