0) { $has_shadow = true; } $select_fields = 'user_id, users_login, users_passwd, users_role, users_email'; if ($has_shadow) $select_fields .= ', users_pass_hash'; // Query the panel database for the user $query = "SELECT $select_fields FROM ogp_users WHERE users_login = '$username'"; $result = mysqli_query($db, $query); if ($result && mysqli_num_rows($result) === 1) { $user = mysqli_fetch_assoc($result); // Prefer modern password hash if present (shadow column), otherwise fall back to MD5 and migrate $verified = false; if (!empty($user['users_pass_hash'])) { // verify against modern hash if (password_verify($password, $user['users_pass_hash'])) { $verified = true; } } else { // legacy MD5 if (md5($password) === $user['users_passwd']) { $verified = true; // attempt to migrate: store modern hash if column exists $res = mysqli_query($db, "SHOW COLUMNS FROM ogp_users LIKE 'users_pass_hash'"); if ($res && mysqli_num_rows($res) > 0) { $newhash = password_hash($password, PASSWORD_DEFAULT); $safe_user_id = (int)$user['user_id']; $stmt_m = $db->prepare("UPDATE ogp_users SET users_pass_hash = ? WHERE user_id = ?"); if ($stmt_m) { $stmt_m->bind_param('si', $newhash, $safe_user_id); $stmt_m->execute(); $stmt_m->close(); } } } } if ($verified) { // Login successful - create website session $_SESSION['website_user_id'] = $user['user_id']; $_SESSION['website_username'] = $user['users_login']; $_SESSION['website_user_role'] = $user['users_role']; $_SESSION['website_user_email'] = $user['users_email']; $_SESSION['website_login_time'] = time(); $success_message = 'Login successful! Redirecting...'; // Log the login logger("Website login successful: " . $user['users_login']); // Redirect after 2 seconds to the requested return path or index.php, using strict sanitizer // POST may contain a raw (not URL-encoded) return_to from the hidden form; decode defensively $post_return = isset($_POST['return_to']) ? urldecode($_POST['return_to']) : ''; $return_candidate = $post_return !== '' ? $post_return : ($return_to_raw ?? ''); $sanitized_after = $sanitize_return_path($return_candidate ?? ''); if ($sanitized_after === '') $sanitized_after = $SITE_ROOT_PATH . '/index.php'; // Use immediate server-side redirect to avoid client-side relative resolution or delays header('Location: ' . $sanitized_after); exit(); } else { $error_message = 'Invalid username or password.'; logger("Website login failed - wrong password: $username"); } } else { $error_message = 'Invalid username or password.'; logger("Website login failed - user not found: $username"); } } } // Close database connection mysqli_close($db); ?> Login - GameServers.World
or