Show sourcecode
The following files exists in this folder. Click to view.
.gitignore
admin/
config.php
createtable.php
crumbs_design_system.html
dbconnection.php
icons/
includes/
index.php
js/
login.php
logout.php
order/
register.php
style/
createtable.php
110 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
<?php
// SÄKERHET: Kräv admin-inloggning för att komma åt denna sida (förhindrar att vem som helst kan radera databasen)
session_start();
if (!isset($_SESSION['is_admin']) || $_SESSION['is_admin'] != 1) {
http_response_code(403);
die("Åtkomst nekad. Endast admin kan använda denna sida.");
}
include('dbconnection.php');
if (!$dbconn) {
die("Connection failed: Can't connect to database.");
}
try {
// Drop all tables and recreate if reset button was clicked
if (isset($_POST['reset'])) {
$dbconn->exec("SET FOREIGN_KEY_CHECKS = 0");
$dbconn->exec("DROP TABLE IF EXISTS order_items");
$dbconn->exec("DROP TABLE IF EXISTS orders");
$dbconn->exec("DROP TABLE IF EXISTS products");
$dbconn->exec("DROP TABLE IF EXISTS users");
$dbconn->exec("SET FOREIGN_KEY_CHECKS = 1");
echo "All tables dropped. Recreating...<br><br>";
}
// Skapa users table
$sql = "CREATE TABLE IF NOT EXISTS users (
user_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(32) NOT NULL UNIQUE,
fullname VARCHAR(64),
password VARCHAR(255) NOT NULL,
email VARCHAR(64) NOT NULL UNIQUE,
phone VARCHAR(64),
is_admin BOOLEAN,
last_login TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
// use exec() because no results are returned
$dbconn->exec($sql);
echo "Users table created successfully. <br>";
// Insert admin user endast om den inte finns
$stmt = $dbconn->query("SELECT COUNT(*) FROM users WHERE user_id = 1");
$adminExists = (int)$stmt->fetchColumn() > 0;
if (!$adminExists) {
$adminHash = password_hash('admin123', PASSWORD_DEFAULT);
$sql = "INSERT INTO users (username, fullname, password, email, is_admin) VALUES ('admin', 'Administrator', '$adminHash', 'admin@admin.se', 1)";
$dbconn->exec($sql);
echo "Admin user created successfully. <br>";
} else {
echo "Admin user already exists. <br>";
}
// Skapa orders table
$sql = "CREATE TABLE IF NOT EXISTS orders (
order_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id INT(6) UNSIGNED NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,
order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
total_price DECIMAL(8,2) NOT NULL,
payment_method VARCHAR(16),
is_paid BOOLEAN,
status VARCHAR(32) DEFAULT 'pending',
custom_instructions VARCHAR(256)
)";
// use exec() because no results are returned
$dbconn->exec($sql);
echo "Orders table created successfully. <br>";
// Skapa products table
$sql = "CREATE TABLE IF NOT EXISTS products (
product_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64) NOT NULL,
price DECIMAL(6) NOT NULL,
description VARCHAR(128),
category VARCHAR(16),
image_url VARCHAR(255),
stock INT(6) NOT NULL,
is_disabled BOOLEAN
)";
// use exec() because no results are returned
$dbconn->exec($sql);
echo "Products table created successfully. <br>";
// Skapa order_items table
$sql = "CREATE TABLE IF NOT EXISTS order_items (
order_item_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
order_id INT(6) UNSIGNED NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE,
product_id INT(6) UNSIGNED NOT NULL,
FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,
amount INT(6) NOT NULL,
custom_text VARCHAR(128)
)";
// use exec() because no results are returned
$dbconn->exec($sql);
echo "Order items table created successfully. <br>";
} catch (PDOException $e) {
// SÄKERHET: Visa inte detaljerade databasfel för användaren (kan avslöja intern information)
error_log("createtable error: " . $e->getMessage());
echo "Ett databasfel uppstod. Kontrollera serverloggen.";
}
//Rensa kopplingen till databasen
$dbconn = null;
?>
<form method="post">
<button type="submit" name="reset" onclick="return confirm('Are you sure? This will delete all data.')">Reset (drop & recreate all tables)</button>
</form>