A PHP and MySQL web app where programmers create an account, publish a short CV, and search a shared directory of CVs by name or main programming language. I built it during Year 1 of my BSc Computer Science at Aston University to practise server-side web development with a relational database.
- Registration with email validation, a duplicate-account check and passwords hashed with
password_hash()(bcrypt). - Log in and log out with
password_verify()and PHP sessions. The edit page redirects to log in if there's no session. - CV directory listing every CV with name, email and key language.
- Search by name or programming language (SQL
LIKEmatching). - CV details page for each person: education, profile and links.
- Edit your own CV: key language (Java, Python, PHP, C++ or JavaScript), education, profile and links. The form is pre-filled with what's saved.
PHP (PDO) · MySQL / MariaDB · HTML · CSS · XAMPP for local development
- Every query uses PDO prepared statements with bound parameters, so user input is never pasted into SQL.
- Passwords are stored only as bcrypt hashes.
- Data shown on the page is escaped with
htmlspecialchars()to stop stored cross-site scripting (XSS). - Database credentials sit in
config.php, which is git-ignored. Only the templateconfig.example.phpis committed.
index.php CV directory and search
register.php sign-up form and account creation
login.php log in, starts the session
logout.php ends the session
cvupdate.php edit your own CV (logged-in users only)
cvdetails.php one person's full CV
nav.php navigation bar (changes when you're logged in)
connectdb.php opens the PDO connection using config.php
config.example.php template for your database details
schema.sql creates the cvs table
css/style.css styling
- Install XAMPP and start Apache and MySQL.
- Clone this repo into
C:\xampp\htdocs\astoncv. - In phpMyAdmin (http://localhost/phpmyadmin), create a database called
astoncvand runschema.sqlin it. - Copy
config.example.phptoconfig.phpand enter your database details (XAMPP's default user isrootwith no password). - Open http://localhost/astoncv/, register an account, log in and fill in your CV.
- CSRF tokens on the forms, and session ID regeneration after login
- Server-side validation of the links field and length limits on the text fields
The application itself (registration, login, search, the CV pages and the styling) is my own work.
Claude (Anthropic's AI assistant) wrote this README and helped prepare the repository for publishing.
It moved the database credentials into a git-ignored config.php (adding config.example.php),
added schema.sql, and made two small fixes: the stylesheet path, and escaping user data before it
is shown on the page. Those changes are in their own commits in the history.