ALUMNI CONNECT · MEMBERSHIP RELEASE 1.0.0

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.

01RegisterAlumni submit their details.
02Wait for reviewMember access stays blocked.
03Admin approvesAlumni details are checked.
04Sign inApproved members can participate.

What is included

AlumniAdministrators
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.

STEP 1

Prepare the domain and HTTPS

  1. Open cPanel → Domains → Create a New Domain.
  2. Add www.alumni.360s-projects.com. Do not share the main website’s document root.
  3. Set its document root to public_html/alumni-connect/public. The final folder must be public.
  4. Point DNS to your host, install a valid SSL certificate for this exact hostname and enable Force HTTPS Redirect.
  5. 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.

STEP 2

Upload and extract

  1. Upload the ZIP into public_html through File Manager, then extract it.
  2. The ZIP contains one folder called alumni-connect. Confirm alumni-connect/public/index.php and alumni-connect/app/config.example.php both exist.
  3. Enable Show Hidden Files and confirm the included .htaccess files are present.
  4. Delete the uploaded ZIP after extraction. Do not extract over the main 360S files.
Serve only the public/ folder. Keep app/, tools/ and tests/ outside that document root. Their .htaccess rules also deny access through the main website’s parent path.

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.

STEP 3

Create a new database

  1. Use cPanel Database Wizard or Manage My Databases. Older panels may call it MySQL Databases.
  2. Create a new, empty database, such as YOURCPANEL_alumni.
  3. Create a dedicated database user with a strong password and add it to that database.
  4. 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.

STEP 4

Fill in your configuration

Copy app/config.example.php to app/config.php and edit it in File Manager.

SettingValue
base_urlhttps://www.alumni.360s-projects.com, with no path
community_nameYour university or association name
support_emailA real administrator contact email
db.host / db.portUsually localhost / 3306, or your host’s values
db.name / db.user / db.passwordThe new database credentials from Step 3
app_keyA unique random string of at least 32 characters
setup_keyA different random string of at least 32 characters
mail_enabledKeep 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.

STEP 5

Create your own administrator

  1. Visit https://www.alumni.360s-projects.com/install.php.
  2. Enter the private setup_key from your configuration.
  3. Enter your admin name, email and password, then click Create database tables & administrator.
  4. 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.

STEP 6

Verify before inviting alumni

  1. In a private browser window, register a test member and try signing in. Access must remain awaiting approval.
  2. As admin, open Administration → Awaiting approval → Review. Verify the applicant and approve.
  3. Sign in as the member. Check that index.php?page=admin is forbidden.
  4. Suspend the test member, then refresh its existing member session. Access must be removed.
  5. Restore the account and test directory visibility, a community post, event RSVP and password recovery.
  6. Review the on-site membership/privacy notice for your university’s actual operating rules.
Verify that private paths are blocked. The subdomain’s /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.
STEP 7

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.

STEP 8

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.