diff --git a/_website/CONFIGURATION.md b/_website/CONFIGURATION.md new file mode 100644 index 00000000..b5970707 --- /dev/null +++ b/_website/CONFIGURATION.md @@ -0,0 +1,165 @@ +# Website Configuration Guide + +## Overview + +The `_website` folder is now a standalone site with centralized database configuration. All database connection settings are managed in a single location: `includes/config.inc.php`. + +## Directory Structure + +``` +_website/ +├── includes/ +│ ├── config.inc.php # Central database configuration +│ └── README.md # Documentation for includes directory +├── db.php # Database connection (loads config.inc.php) +├── login.php # Uses db.php +├── logout.php # Uses db.php +├── cart.php # Uses db.php +├── order.php # Uses db.php +├── serverlist.php # Uses db.php +└── ...other files +``` + +## Configuration File + +### Location +`_website/includes/config.inc.php` + +### Contents +```php + +``` + +## How It Works + +1. **Configuration Loading** + - Website files include `db.php` + - `db.php` loads `includes/config.inc.php` + - Configuration variables are available to all files + +2. **Configuration Flow** + ``` + includes/config.inc.php → db.php → website files + ``` + +3. **Database Connection** + - `db.php` uses the configuration variables to establish a connection + - Returns `$db` variable containing the mysqli connection + +## Setup Instructions + +### For Standalone Use + +1. **Copy the _website folder** to your web server +2. **Edit configuration**: + ```bash + nano _website/includes/config.inc.php + ``` +3. **Update database credentials**: + - Set `$db_host` to your database server + - Set `$db_user` to your database username + - Set `$db_pass` to your database password + - Set `$db_name` to your database name +4. **Verify permissions**: + ```bash + chmod 600 _website/includes/config.inc.php + ``` + +### For Panel Integration + +The configuration in `_website/includes/config.inc.php` should match the panel's configuration in `/includes/config.inc.php` to ensure both the website and panel access the same database. + +## Security Best Practices + +1. **File Permissions**: Set `config.inc.php` to read-only for the web server user + ```bash + chmod 600 includes/config.inc.php + ``` + +2. **Web Server Configuration**: Ensure the `includes/` directory is not directly accessible via HTTP + ```apache + + Require all denied + + ``` + +3. **Backup Configuration**: Keep a secure backup of your configuration file + +## Troubleshooting + +### Connection Errors + +If you see database connection errors: + +1. **Verify credentials** in `includes/config.inc.php` +2. **Check database server** is running +3. **Verify database exists** +4. **Check user permissions** in the database + +### File Not Found Errors + +If you see errors about missing `config.inc.php`: + +1. **Verify the file exists** at `_website/includes/config.inc.php` +2. **Check file permissions** are readable by the web server +3. **Verify path** in `db.php` uses `__DIR__` for relative paths + +### Include Errors + +If website files can't include `db.php`: + +1. **Check file paths** are correct +2. **Verify `db.php`** exists in the `_website/` root +3. **Check PHP include paths** in php.ini if needed + +## Migration from Old Configuration + +The old `db.php` had hardcoded credentials: +```php +// OLD (hardcoded) +$servername = "panel.iaregamer.com"; +$username = "remoteuser"; +``` + +The new `db.php` uses centralized config: +```php +// NEW (centralized) +require_once(__DIR__ . '/includes/config.inc.php'); +$servername = $db_host; +$username = $db_user; +``` + +**No changes needed** to files that include `db.php` - they work automatically with the new configuration. + +## Files Using Database Connection + +The following files include `db.php` and use the centralized configuration: +- `login.php` - User authentication +- `logout.php` - Session termination +- `cart.php` - Shopping cart +- `order.php` - Order processing +- `serverlist.php` - Server listings +- `adminserverlist.php` - Admin server management +- `test_db_connection.php` - Database testing + +## Benefits + +1. **Single Source of Truth**: All database settings in one file +2. **Easy Configuration**: Change settings in one place +3. **Portable**: Copy folder and update one config file +4. **Secure**: Configuration separate from code +5. **Maintainable**: Easy to update and manage + +## Support + +For issues or questions about the configuration, please refer to: +- `includes/README.md` - Detailed information about includes directory +- Main project documentation +- Panel configuration at `/includes/config.inc.php`