BLOG CODE COMPLETE
Hii ni FULL CODE ya blog inayofanya kazi kwenye file moja.
Ihifadhi kama:
blog.php
Kwanza tengeneza database:
CREATE DATABASE blog_system;
Kisha badilisha settings za database juu ya code kama inavyofaa.
connect_error) {
die("Database connection failed: " . $conn->connect_error);
}
/* =====================================================
CREATE TABLES AUTOMATICALLY
===================================================== */
$conn->query("
CREATE TABLE IF NOT EXISTS admins (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
");
$conn->query("
CREATE TABLE IF NOT EXISTS posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
category VARCHAR(150),
author VARCHAR(150),
content LONGTEXT NOT NULL,
image VARCHAR(255),
file_upload VARCHAR(255),
video_link TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
");
$conn->query("
CREATE TABLE IF NOT EXISTS comments (
id INT AUTO_INCREMENT PRIMARY KEY,
post_id INT NOT NULL,
visitor_name VARCHAR(150) NOT NULL,
comment TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
");
/* =====================================================
DEFAULT ADMIN
Username: admin
Password: admin123
===================================================== */
$checkAdmin = $conn->query("SELECT id FROM admins LIMIT 1");
if ($checkAdmin->num_rows == 0) {
$passHash = password_hash("admin123", PASSWORD_DEFAULT);
$conn->query("INSERT INTO admins(username, password) VALUES('admin', '$passHash')");
}
/* =====================================================
FUNCTIONS
===================================================== */
function e($text) {
return htmlspecialchars($text ?? '', ENT_QUOTES, 'UTF-8');
}
function uploadFile($inputName, $folder, $allowedTypes = []) {
if (!isset($_FILES[$inputName]) || $_FILES[$inputName]['error'] !== 0) {
return "";
}
if (!is_dir($folder)) {
mkdir($folder, 0777, true);
}
$fileName = $_FILES[$inputName]['name'];
$tmpName = $_FILES[$inputName]['tmp_name'];
$fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
if (!empty($allowedTypes) && !in_array($fileExt, $allowedTypes)) {
return "";
}
$newName = time() . "_" . rand(1000, 9999) . "." . $fileExt;
$target = $folder . "/" . $newName;
if (move_uploaded_file($tmpName, $target)) {
return $target;
}
return "";
}
function youtubeID($url) {
if (!$url) return "";
preg_match('/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([A-Za-z0-9_-]+)/', $url, $matches);
return $matches[1] ?? "";
}
/* =====================================================
LOGIN
===================================================== */
if (isset($_POST['login'])) {
$user = trim($_POST['username']);
$pass = $_POST['password'];
$stmt = $conn->prepare("SELECT * FROM admins WHERE username=?");
$stmt->bind_param("s", $user);
$stmt->execute();
$admin = $stmt->get_result()->fetch_assoc();
if ($admin && password_verify($pass, $admin['password'])) {
$_SESSION['admin_id'] = $admin['id'];
$_SESSION['admin_name'] = $admin['username'];
header("Location: blog.php?page=dashboard");
exit;
} else {
$login_error = "Username au password si sahihi.";
}
}
/* =====================================================
LOGOUT
===================================================== */
if (isset($_GET['logout'])) {
session_destroy();
header("Location: blog.php");
exit;
}
/* =====================================================
ADD POST
===================================================== */
if (isset($_POST['add_post']) && isset($_SESSION['admin_id'])) {
$title = trim($_POST['title']);
$category = trim($_POST['category']);
$author = trim($_POST['author']);
$content = $_POST['content'];
$video_link = trim($_POST['video_link']);
$image = uploadFile("image", "uploads/images", ["jpg", "jpeg", "png", "gif", "webp"]);
$file = uploadFile("file_upload", "uploads/files", ["pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "zip", "rar", "txt"]);
$stmt = $conn->prepare("
INSERT INTO posts(title, category, author, content, image, file_upload, video_link)
VALUES(?,?,?,?,?,?,?)
");
$stmt->bind_param("sssssss", $title, $category, $author, $content, $image, $file, $video_link);
$stmt->execute();
header("Location: blog.php?page=dashboard&success=post_added");
exit;
}
/* =====================================================
UPDATE POST
===================================================== */
if (isset($_POST['update_post']) && isset($_SESSION['admin_id'])) {
$id = intval($_POST['post_id']);
$oldPost = $conn->query("SELECT * FROM posts WHERE id=$id")->fetch_assoc();
$title = trim($_POST['title']);
$category = trim($_POST['category']);
$author = trim($_POST['author']);
$content = $_POST['content'];
$video_link = trim($_POST['video_link']);
$image = uploadFile("image", "uploads/images", ["jpg", "jpeg", "png", "gif", "webp"]);
$file = uploadFile("file_upload", "uploads/files", ["pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "zip", "rar", "txt"]);
if (!$image) {
$image = $oldPost['image'];
}
if (!$file) {
$file = $oldPost['file_upload'];
}
$stmt = $conn->prepare("
UPDATE posts
SET title=?, category=?, author=?, content=?, image=?, file_upload=?, video_link=?
WHERE id=?
");
$stmt->bind_param("sssssssi", $title, $category, $author, $content, $image, $file, $video_link, $id);
$stmt->execute();
header("Location: blog.php?page=dashboard&success=post_updated");
exit;
}
/* =====================================================
DELETE POST
===================================================== */
if (isset($_GET['delete_post']) && isset($_SESSION['admin_id'])) {
$id = intval($_GET['delete_post']);
$conn->query("DELETE FROM comments WHERE post_id=$id");
$conn->query("DELETE FROM posts WHERE id=$id");
header("Location: blog.php?page=dashboard&success=post_deleted");
exit;
}
/* =====================================================
ADD COMMENT
===================================================== */
if (isset($_POST['add_comment'])) {
$post_id = intval($_POST['post_id']);
$name = trim($_POST['visitor_name']);
$comment = trim($_POST['comment']);
$stmt = $conn->prepare("
INSERT INTO comments(post_id, visitor_name, comment)
VALUES(?,?,?)
");
$stmt->bind_param("iss", $post_id, $name, $comment);
$stmt->execute();
header("Location: blog.php?post=$post_id#comments");
exit;
}
?>
Welcome to Our Professional Blog
Read beautiful posts, watch videos, download files and share your thoughts.
Admin Login
Username: admin
Password: admin123
Admin Dashboard
Karibu admin. Unaweza kuongeza blog post, picha, video link na downloadable file.
Add New Blog Post
Edit Blog Post
= e($post['title']) ?>
= e($post['author']) ?> | = e($post['created_at']) ?>
Watch Video
Visitor Comments
query("SELECT * FROM comments WHERE post_id=$id ORDER BY id DESC"); if ($comments->num_rows == 0): ?>No comments yet. Be the first to comment.
fetch_assoc()): ?>Add Comment
Latest Blog Posts
Explore latest articles, videos, images and downloadable resources.
= e($p['title']) ?>
= e($p['author']) ?> | = date("d M Y", strtotime($p['created_at'])) ?>
= e(substr(strip_tags($p['content']), 0, 140)) ?>...
Admin login:
Username: admin
Password: admin123
Baada ya ku-run, folder hizi zitatengenezwa automatically ukianza ku-upload:
uploads/images
uploads/files
🚀 Unahitaji mfumo au website ya biashara?
Chagua huduma hapa chini kisha mteja bofya moja kwa moja kwenda kwenye ukurasa wa huduma au kuwasiliana nasi kwa WhatsApp.
= e($c['comment']) ?>
= e($c['created_at']) ?>