A web application written mainly in PHP, intended to facilitate the management of a fleet of vehicles from a fictitious company. It allows you to operate vehicle (and user) objects on three levels of authority, i.e. roles: customer, employee and site administrator.
Diversified number of available activities, depending on the role on the site, which determines the level of entitlements. Roles set from above and assigned to a specific user. Extended functionality available after login. Browse the website, offers (i.e. lists and groups of vehicles) and search for cars carried out identically for the user not logged in. Any role supports login and logout.
Role | Possible operations (working actions in bold) |
---|---|
Customer | account registration, booking a car, review of own reservations and bookings, modification/cancellation of reservations, car rental, ... |
Employee | approval/rejection of reservations, car rental, reservations settlement, finances, vehicle maintenance (periodic, technical tests, repairs), ... |
Administrator | adding and editing of cars, creation/modification of promotions, creation/modification of service notifications, management of users, ... |
The functionality is available for testing after logging in with the lowest authorization level as an example customer account at this link WSO.
User: klient
Password: klient!1
ATTENTION! Explicit data transmission for logging into the server. The project operates in the HTTP protocol. No encryption for explicitly provided credentials.
Download the latest version from this repository to any web server with PHP support. Every version of PHP, starting from 5.0 should be suitable (designed using PHP v5.2.X).
_sql\baza_wso_utf8.sql
or from unrecommended file (older) _sql\baza_wso.sql
CREATE USER 'wso_user'@'localhost' IDENTIFIED BY 'Sup3rP@$$';
GRANT USER SELECT, INSERT, UPDATE, DELETE ON wso_database.* TO 'wso_user'@'localhost';
Protection against browsing the contents of server folders, as a minimum, is provided by the .htaccess
file used in the project. For servers other than Apache, use a similar solution that deactivates the generation of dynamic content in an existing project subfolder (indexing).
- textual content
- php file names
- names of variables, functions and comments contained in these files
- dynamic content coming from the database (with the database schema itself)
Please consider that this project was created from December 2007 to the end of January of the following year. In the application, the wheel was reinvented many times, its cover was changed, or its quadrature was modified to be more even. Luckily, as it later turned out, some "new" solutions are used in a similar way in a real and working applications on professional websites (HTML content is certainly generated differently and more efficiently). It is amazing that the whole project is functioning properly, considering that the author (I mean myself :) ) at the time the project was created did not know well many web issues at the right level. There was a lot of nuances and strange behavior of PHP itself, as well as the complex architecture and specifics of the client-server, but we managed to create a minimum of working functionality.
To sum up: the code quality is not always great, but the application does not generate errors. Rather, it will not be possible to cause data loss, and at the same time it is quite difficult to make incorrect move - a fairly high resistance to intentional or inefficient actions of users was provided.
This is my first big PHP application. Of course it is an old project. The application was made to complete the course Network electronic business systems. Working functionality was evaluated, not the entire functioning the whole project or its construction details. Now the HTML structure, the use of CSS styles and some PHP code is suitable for thorough corrections and/or ridicule.
The project was created at a time when the table layout began to be criticized, and the responsiveness of the sites could only be encountered through JavaScript (often incompatible between browsers). I didn't know jQuery Project either.
Don't blame me, "we learn from our mistakes" && "we learn all your life" && "learning by doing" ;-)
It's abandoned rather than completed, but you never know.
The project requires a bit of effort to bring layout and styles to current standards. But the advantage is to do without the ubiquitous templates and processing the DOM structure in browsers - there are no slowdowns by JavaScript.
Several holes were also patched to be able to continue testing reservations in years younger than 2009. The whole PHP was also converted to UTF-8.
Author / Architect / "Programmer" / Graphic Designer / Tester / Director: T. M.
The project was also created thanks to mental support and exchange of knowledge with P. T. and R. S.
Trying to add right shape of this synopsis. Styling and decorations in progress... more of English contenst goes here.
MIT
Aplikacja webowa napisana głównie w PHP, mająca ułatwić zarządzanie flotą pojazdów fikcyjnej firmy. Umożliwia operowanie obiektami pojazdów (i użytkowników) na trzech poziomach uprawnień, tj. ról: klienta, pracownika oraz administratora serwisu.
Zróżnicowana ilość dostępnych działań, zależnie od roli w serwisie, warunkującej poziom uprawnień. Role ustalone odgórnie i przypisane do konkretnego użytkownika. Rozszerzona funkcjonalność dostępna po wcześniejszym zalogowaniu. Przeglądanie serwisu, oferty (czyli listy i grup pojazdów) oraz wyszukiwanie samochodów realizowana identycznie dla niezalogowanego użytkownika. Dowolna rola obsługuje operację logowania i wylogowania się.
Rola | Możliwe operacje (działające zaznaczone pogrubieniem) |
---|---|
Klient | rejestracja konta, rezerwowanie terminów, przegląd własnych rezerwacji i wypożyczeń, modyfikacja/rezygnacja z rezerwacji, wypożyczanie aut, ... |
Pracownik | zatwierdzanie/odrzucanie rezerwacji, wypożyczanie aut, rozliczanie wypożyczeń, finanse, konserwacja pojazdów (badania okresowe, techniczne, naprawy), ... |
Administrator | wprowadzanie i edycja aut, tworzenie/modyfikacja promocji, tworzenie/modyfikacja powiadomień serwisu, zarządzanie użytkownikami, ... |
Funkcjonalność dostępna do przetestowania po zalogowaniu z najniższym poziomem uprawnień jako przykładowe konto klienta pod adresem WSO.
Użytkownik: klient
Hasło: klient!1
UWAGA! Projekt funkcjonuje w protokole HTTP. Brak szyfrowania tych jawnie podanych poświadczeń.
Pobranie najnowszej wersji z tego repozytorium na dowolny serwer www z obsługą PHP. Każda wersja PHP, poczynając od 5.0 powinna się nadać (projektowano przy użyciu PHP v5.2.X).
_sql\baza_wso_utf8.sql
lub ze starszego (i niepolecanego) _sql\baza_wso.sql
, zawierającego uprzednie kodowanie znaków.
Utworzenie użytkownika i nadanie mu minimum praw do komunikacji z bazą danych (zawarto przykładowe nazwy):
CREATE USER 'wso_user'@'localhost' IDENTIFIED BY 'Sup3rP@$$';
GRANT USER SELECT, INSERT, UPDATE, DELETE ON baza_wso.* TO 'wso_user'@'localhost';
Zabezpieczenie przed przeglądaniem zawartości folderów serwera, jako niezbędne minimum, zapewnia użyty w projekcie plik .htaccess
. Dla serwerów innych niż Apache użyj podobnego rozwiązania, dezaktywującego generowanie dynamicznej zawartości istniejącego podfolderu projektu (indeksowanie folderu).
Proszę wziąć pod uwagę, że projekt powstawał od grudnia 2007 roku do końca stycznia kolejnego roku. W aplikacji wiele razy wynajdywano na nowo koło, zmieniano jego poszycie, albo modyfikowano jego kwadraturę na bardziej wyrównaną. Szczęśliwym trafem, co się później okazało, część "nowych" rozwiązań jest w podobny sposób wykorzystywanych w rzeczywistych i działających aplikacjach w profesjonalnych serwisach www (treść HTML na pewno jest generowana inaczej i bardziej wydajnie). Zadziwiające, że całość wykonanego projektu funkcjonuje należycie, biorąc pod uwagę że autor (znaczy się ja :) ) w momencie powstawania projektu nie znał dobrze wielu zagadnień webowych na właściwym poziomie. Było mnóstwo niuansów i dziwnego zachowania samego PHP, jak również złożonej architektury i specyfiki klient-serwer, ale udało się utworzyć minimum działajacej funkcjonalności.
Podsumowując: jakość kodu nie zawsze jest świetna, ale aplikacja nie generuje błędów. Raczej nie uda się spowodować utraty danych, a przy tym dość trudno wykonać niewłaściwy ruch - zapewniono dość wysoką odporność na zamierzone bądź nieudolne działania użytkowników.
To moja pierwsza duża aplikacja PHP. Aplikację wykonano na zaliczenie przedmiotu Sieciowe systemy biznesu elektronicznego. Oceniana była działająca funkcjonalność, a nie cały funkcjonujący projekt lub jego szczegóły budowy. Teraz struktura HTMLa, użycie stylów CSS oraz część kod PHP nadaje się do gruntownych poprawek lub/i wyśmiania.
Projekt powstawał w czasach, gdy układ tabelkowy zaczynał być krytykowany, a z responsywnością witryn można było zetknąć tylko poprzez JavaScript (często niekompatybilny).
Nie wińcie mnie, lecz pamiętajmy, że "uczymy się na własnych błędach" i "człowiek uczy się przez całe życie" zwłaszcza dzięki "nauce poprzez działanie" ;-)
- Raczej zarzucony...
- ...niż ukończony, ale nigdy nie wiadomo.
Wymaga nieco wysiłku, aby doprowadzić układ i style do bieżących standardów. Zaletą jest obycie się bez wszechobecnych szablonów i przetwarzania struktury DOMu w przeglądarkach - brak tu spowalniaczy z JS.
Załatano też kilka dziur, aby móc nadal testować rezerwacje w latach młodszych niż 2009. Skonwertowano też całość do postaci UTF-8.
Autor/Architekt/"Programista"/Grafik/Tester/Reżyser: T. M.
Projekt powstał też dzięki wsparciu mentalnemu i wymianie wiedzy z P. T. oraz R. S.
MIT