Uko ndani ya app. Fungua kwenye browser kwa muonekano na downloads bora.
May 4, 2026 1 min read

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;
}
?>

Professional Blog System

Welcome to Our Professional Blog

Read beautiful posts, watch videos, download files and share your thoughts.

Admin Login

= e($login_error) ?>
Default Login:
Username: admin
Password: admin123

Admin Dashboard

Karibu admin. Unaweza kuongeza blog post, picha, video link na downloadable file.

Add New Blog Post

All Blog Posts

query("SELECT * FROM posts ORDER BY id DESC"); if ($posts->num_rows == 0): ?> fetch_assoc()): ?>
Title Category Date Action
No posts yet.
= e($p['title']) ?> = e($p['category']) ?> = e($p['created_at']) ?> View Edit Delete
query("SELECT * FROM posts WHERE id=$id")->fetch_assoc(); if (!$post): echo "
Post haijapatikana.
"; else: ?>

Edit Blog Post

Current file: Download

Back
query("SELECT * FROM posts WHERE id=$id")->fetch_assoc(); if (!$post): echo "
Blog post haijapatikana.
"; else: $video_id = youtubeID($post['video_link']); ?>
= e($post['category']) ?>

= e($post['title']) ?>

= e($post['author']) ?>   |   = e($post['created_at']) ?>

= nl2br(e($post['content'])) ?>

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()): ?>
= e($c['visitor_name']) ?>

= e($c['comment']) ?>

= e($c['created_at']) ?>

Add Comment

Latest Blog Posts

Explore latest articles, videos, images and downloadable resources.

prepare("SELECT * FROM posts WHERE title LIKE ? OR category LIKE ? OR content LIKE ? ORDER BY id DESC"); $stmt->bind_param("sss", $like, $like, $like); $stmt->execute(); $posts = $stmt->get_result(); } else { $posts = $conn->query("SELECT * FROM posts ORDER BY id DESC"); } if ($posts->num_rows == 0): ?>
No blog posts found.
fetch_assoc()): ?>
= e($p['category']) ?>

= e($p['title']) ?>

= e($p['author']) ?> | = date("d M Y", strtotime($p['created_at'])) ?>

= e(substr(strip_tags($p['content']), 0, 140)) ?>...

Read More Video File

My Professional Blog

News • Education • Technology • Videos • Downloads

Facebook | WhatsApp | YouTube | Instagram

© = date("Y") ?> All Rights Reserved.

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.

Share this post

Comments

0
No comments yet. Be the first to comment.

Continue Reading

Subscribe

Get new updates

Jiunge upokee posts mpya, tutorials, na updates za mifumo moja kwa moja kwenye email yako.

Quick Actions