CREATE DATABASE IF NOT EXISTS sff_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE sff_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
phone VARCHAR(30) NOT NULL,
age INT,
state VARCHAR(100),
occupation VARCHAR(100),
how_found VARCHAR(100),
sponsor_id INT NULL,
password_hash VARCHAR(255) NOT NULL,
is_admin TINYINT(1) NOT NULL DEFAULT 0,
reset_token VARCHAR(100) NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sponsor_id) REFERENCES users(id)
);
CREATE TABLE downlines (
id INT AUTO_INCREMENT PRIMARY KEY,
sponsor_id INT NOT NULL,
user_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sponsor_id) REFERENCES users(id),
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE contacts (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100),
phone VARCHAR(30),
subject VARCHAR(150),
message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
USE sff_db;
UPDATE users SET is_admin = 1 WHERE id = 1;
connect_error) {
die('Gagal sambung database: ' . $conn->connect_error);
}
function isLoggedIn() {
return isset($_SESSION['user_id']);
}
function redirectIfNotLoggedIn() {
if (!isLoggedIn()) {
header('Location: login.php');
exit;
}
}
function isAdmin() {
return isset($_SESSION['is_admin']) && $_SESSION['is_admin'] == 1;
}
function redirectIfNotAdmin() {
if (!isAdmin()) {
header('Location: index.php');
exit;
}
}
Super Fast Formula (SFF)
Super Fast Formula – Jana Income 4–5 Angka Dengan Like & Share Sahaja.
Sistem auto downline untuk mereka yang malu, skeptikal, takut rejection dan tak pandai bercakap.
Anda hanya daftar, like & share iklan yang kami sediakan – selebihnya sistem SFF bantu bina rangkaian.
prepare('UPDATE users SET reset_token = ? WHERE email = ?');
$stmt->bind_param('ss', $token, $email);
$stmt->execute();
if ($stmt->affected_rows > 0) {
// Dalam production, hantar link ini melalui emel.
$success = 'Link reset (demo sahaja): reset_password.php?token='.$token;
} else {
$errors[] = 'Emel tidak dijumpai.';
}
$stmt->close();
}
}
?>
Lupa Kata Laluan
'.htmlspecialchars($e).'
'; ?>
prepare('SELECT id FROM users WHERE reset_token = ?');
$stmt->bind_param('s', $token);
$stmt->execute();
$stmt->bind_result($uid);
if ($stmt->fetch()) {
$stmt->close();
$hash = password_hash($password, PASSWORD_BCRYPT);
$update = $conn->prepare('UPDATE users SET password_hash = ?, reset_token = NULL WHERE id = ?');
$update->bind_param('si', $hash, $uid);
$update->execute();
$update->close();
$success = 'Kata laluan berjaya ditukar. Anda boleh log masuk.';
} else {
$errors[] = 'Token tidak sah atau telah digunakan.';
}
}
}
?>