Your alumni community,
with approved member access.
Prepared for https://www.alumni.360s-projects.com. PHP/MySQL installation package for cPanel. Not yet installed on your server.
What is included
| Alumni | Administrators |
|---|---|
| Self-registration and login Pending approval status Private account profile Opt-in alumni directory Community posts Event RSVP and cancellation Announcements Password change and recovery | Owner-created initial admin Registration approval queue Search member records Approve, reject, suspend and restore Internal review notes and audit trail Publish announcements and events View attendees and hide posts Single-use password recovery links |
No fictional accounts or events are inserted. This is a separate application with its own database and passwords.
The earlier design prototype remains separate. Group-specific chats, post replies, jobs, mentoring, polls, push notifications, WhatsApp integration and Android/iOS store packages are outside this membership release.
Prepare the domain and HTTPS
- Open cPanel → Domains → Create a New Domain.
- Add
www.alumni.360s-projects.com. Do not share the main website’s document root. - Set its document root to
public_html/alumni-connect/public. The final folder must be public. - Point DNS to your host, install a valid SSL certificate for this exact hostname and enable Force HTTPS Redirect.
- If you also want
alumni.360s-projects.com, point it to the same document root and cover it with DNS and SSL too.
The configured base_url is the canonical hostname. Do not submit passwords over HTTP; the application requires HTTPS.
Official help: cPanel domain setup · SSL/TLS status.
Upload and extract
- Upload the ZIP into
public_htmlthrough File Manager, then extract it. - The ZIP contains one folder called
alumni-connect. Confirmalumni-connect/public/index.phpandalumni-connect/app/config.example.phpboth exist. - Enable Show Hidden Files and confirm the included
.htaccessfiles are present. - Delete the uploaded ZIP after extraction. Do not extract over the main 360S files.
Use normal permissions, usually folders 755 and files 644. Restrict config.php to 600 or 640 if your PHP hosting supports it. Do not use 777.
Create a new database
- Use cPanel Database Wizard or Manage My Databases. Older panels may call it MySQL Databases.
- Create a new, empty database, such as
YOURCPANEL_alumni. - Create a dedicated database user with a strong password and add it to that database.
- Grant the permissions needed to create tables during setup. Keep the full prefixed database and user names.
Do not use the existing 360S database credentials. This app creates its own alumni_ tables.
Official help: cPanel databases and users.
Fill in your configuration
Copy app/config.example.php to app/config.php and edit it in File Manager.
| Setting | Value |
|---|---|
| base_url | https://www.alumni.360s-projects.com, with no path |
| community_name | Your university or association name |
| support_email | A real administrator contact email |
| db.host / db.port | Usually localhost / 3306, or your host’s values |
| db.name / db.user / db.password | The new database credentials from Step 3 |
| app_key | A unique random string of at least 32 characters |
| setup_key | A different random string of at least 32 characters |
| mail_enabled | Keep false until email delivery is configured and tested |
Generate the two keys using cPanel Terminal:
cd ~/public_html/alumni-connect php tools/generate-keys.php
Alternatively generate two random strings with a password manager. Letters and numbers are easiest to paste into quoted PHP settings. Never reuse an account or database password for these keys.
Use PHP 8.2 or newer with PDO MySQL, sessions and standard password hashing. Prefer a maintained PHP version offered by your host. Use MySQL 8.0+ or MariaDB 10.6+ with InnoDB.
Create your own administrator
- Visit https://www.alumni.360s-projects.com/install.php.
- Enter the private setup_key from your configuration.
- Enter your admin name, email and password, then click Create database tables & administrator.
- Sign in with the administrator account you just created.
No default admin password is supplied. Setup locks after success and refuses to overwrite existing account records.
Then delete public/install.php and clear setup_key in config.php. Keep app_key unchanged. You can remove database CREATE/ALTER privileges after installation; normal operation needs SELECT, INSERT, UPDATE and DELETE.
Verify before inviting alumni
- In a private browser window, register a test member and try signing in. Access must remain awaiting approval.
- As admin, open Administration → Awaiting approval → Review. Verify the applicant and approve.
- Sign in as the member. Check that
index.php?page=adminis forbidden. - Suspend the test member, then refresh its existing member session. Access must be removed.
- Restore the account and test directory visibility, a community post, event RSVP and password recovery.
- Review the on-site membership/privacy notice for your university’s actual operating rules.
/app/config.php must not be accessible. Also check https://www.360s-projects.com/alumni-connect/app/config.php returns 403 or 404. If private files can be downloaded, or PHP source is displayed, stop and have the host correct the document root, PHP handler and .htaccess protection.Email and account recovery
Approval works without email. Members can check their status by entering the correct password at login.
To enable notifications, configure a real mail_from address, test your host’s PHP mail service and domain email authentication, then set mail_enabled to true. Test registration, approval and password reset emails with an external address.
When mail is disabled, an admin can verify a member’s identity, re-enter the admin password and generate a recovery link. Copy it once and share through a trusted channel. It expires in one hour and does not change account approval. No email is sent for an admin-generated link.
If the first admin loses access and email is unavailable, the hosting owner can run:
cd ~/public_html/alumni-connect php tools/recover-admin.php your-admin-email@example.com
Treat the generated link as a password. It is single-use and expires after one hour.
Back up and maintain
Back up the database and private config separately from source files. Keep backups outside public folders. Back up before installing future updates.
Run daily in cPanel Cron Jobs, using your host’s PHP CLI path:
php /home/YOURCPANEL/public_html/alumni-connect/tools/maintenance.php
This removes old rate-limit counters, reset records expired more than seven days ago and audit records older than 90 days. It does not delete members, posts or event records. Confirm your university’s retention rules.
Verification and limits
See TEST-RESULTS.txt for the final test counts. Tests use real PHP with a SQLite PDO fixture. Account transitions, permission checks, CSRF, password recovery, sessions, privacy, shared content operations and PHP syntax were checked.
Still to test on your hosting: MySQL/MariaDB execution, installer locking, Apache/LiteSpeed rules, PHP configuration, DNS, SSL, email delivery and visual layout on your devices. This release has not been installed on your host or independently security audited.
Technical references: PHP password hashing · PHP sessions · OWASP CSRF prevention.