Skip to content

Commit

Permalink
bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Asadullah-nadeem committed Dec 4, 2024
1 parent 59c578e commit e71373e
Show file tree
Hide file tree
Showing 11 changed files with 147 additions and 260 deletions.
12 changes: 6 additions & 6 deletions .sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ CREATE DATABASE image_bucket;

USE image_bucket;

CREATE TABLE images (
id INT AUTO_INCREMENT PRIMARY KEY,
unique_key VARCHAR(255) NOT NULL UNIQUE,
file_name VARCHAR(255) NOT NULL,
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- CREATE TABLE images (
-- id INT AUTO_INCREMENT PRIMARY KEY,
-- unique_key VARCHAR(255) NOT NULL UNIQUE,
-- file_name VARCHAR(255) NOT NULL,
-- uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-- );

CREATE TABLE subscribers (
id INT AUTO_INCREMENT PRIMARY KEY,
Expand Down
1 change: 1 addition & 0 deletions Documentation.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<!-- Documentation.php -->
<!DOCTYPE html>
<html lang="en">
<head>
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ File Upload API built using PHP and Tailwind CSS! It features secure API key aut
![image](https://github.com/user-attachments/assets/946297a0-346f-4dee-bfb7-6fc932b37ada)


## Old UI
## old UI
![image](https://github.com/user-attachments/assets/789097e6-b37e-4263-b493-8dad7327ae8a)

![image](https://github.com/user-attachments/assets/dda9c25b-b18e-4260-936a-9fdddd12b05b)
79 changes: 1 addition & 78 deletions Script.js
Original file line number Diff line number Diff line change
@@ -1,83 +1,6 @@
// Script.js
document.getElementById('currentYear').textContent = new Date().getFullYear();

// async function uploadImage() {
// const apiKey = document.getElementById('api_key').value;
// const image = document.getElementById('image').files[0];
//
// if (!apiKey || !image) {
// document.getElementById('responseMessage').textContent = "Please enter an API key and select an image.";
// return;
// }
//
// const formData = new FormData();
// formData.append("api_key", apiKey);
// formData.append("image", image);
//
// try {
// const response = await fetch('upload_api.php', {
// method: 'POST',
// headers: {
// 'API_KEY': apiKey,
// },
// body: formData,
// });
//
// const result = await response.json();
// if (response.ok) {
// document.getElementById('responseMessage').textContent = `Success: ${result.success}. File URL: ${result.file_url}`;
// document.getElementById('responseMessage').classList.add("text-green-500");
// } else {
// document.getElementById('responseMessage').textContent = `Error: ${result.error}`;
// document.getElementById('responseMessage').classList.add("text-red-500");
// }
// } catch (error) {
// document.getElementById('responseMessage').textContent = `Error: ${error.message}`;
// document.getElementById('responseMessage').classList.add("text-red-500");
// }
// }

// async function uploadImage() {
// const apiKey = document.getElementById('api_key').value;
// const image = document.getElementById('image').files[0];
//
// if (!apiKey || !image) {
// document.getElementById('responseMessage').textContent = "Please enter an API key and select an image.";
// return;
// }
//
// const validImageTypes = ["image/jpeg", "image/png", "image/gif"];
// if (!validImageTypes.includes(image.type)) {
// document.getElementById('responseMessage').textContent = "Invalid file type. Please upload an image.";
// document.getElementById('responseMessage').classList.add("text-red-500");
// return;
// }
//
// const formData = new FormData();
// formData.append("api_key", apiKey);
// formData.append("image", image);
//
// try {
// const response = await fetch('upload_api.php', {
// method: 'POST',
// headers: {
// 'API_KEY': apiKey,
// },
// body: formData,
// });
//
// const result = await response.json();
// if (response.ok) {
// document.getElementById('responseMessage').textContent = `Success: ${result.success}. File URL: ${result.file_url}`;
// document.getElementById('responseMessage').classList.add("text-green-500");
// } else {
// document.getElementById('responseMessage').textContent = `Error: ${result.error}`;
// document.getElementById('responseMessage').classList.add("text-red-500");
// }
// } catch (error) {
// document.getElementById('responseMessage').textContent = `Error: ${error.message}`;
// document.getElementById('responseMessage').classList.add("text-red-500");
// }
// }
async function uploadImage() {
const apiKey = document.getElementById('api_key').value;
const image = document.getElementById('image').files[0];
Expand Down
5 changes: 5 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"require": {
"aws/aws-sdk-php": "^3.333"
}
}
10 changes: 8 additions & 2 deletions config.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
<!--config.php -->
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', '');
define('DB_USER', '');
define('DB_PASS', '');
define('UPLOAD_DIR', 'uploads/');
// Aws Bucket
// define('AWS_ACCESS_KEY', '');
// define('AWS_SECRET_KEY', '');
// define('AWS_REGION', '');
// define('AWS_BUCKET_NAME', '');
define('BASE_URL', 'https://bucket.codeaxe.co.in/');

function getDatabaseConnection() {
try {
$pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS);
Expand All @@ -13,5 +20,4 @@ function getDatabaseConnection() {
} catch (PDOException $e) {
die("Database connection failed: " . $e->getMessage());
}
}

}
1 change: 1 addition & 0 deletions index.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<!-- index.php -->
<!DOCTYPE html>
<html lang="en" class="dark">

Expand Down
117 changes: 111 additions & 6 deletions subscribe.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
<!--subscribe.php -->
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once 'config.php';
function generateApiKey($length = 32) {
function generateApiKey($length = 32)
{
return bin2hex(random_bytes($length / 2));
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['email'])) {
Expand All @@ -13,17 +15,120 @@ function generateApiKey($length = 32) {
$pdo = getDatabaseConnection();
$stmt = $pdo->prepare("SELECT * FROM subscribers WHERE email = :email");
$stmt->execute(['email' => $email]);

if ($stmt->rowCount() > 0) {
$message = "This email is already subscribed.";
} else {
$apiKey = generateApiKey();

$stmt = $pdo->prepare("INSERT INTO subscribers (email, api_key) VALUES (:email, :api_key)");
if ($stmt->execute(['email' => $email, 'api_key' => $apiKey])) {
$subject = "Your API Key for Image Upload";
$message = "Thank you for subscribing! Here is your API key:\n\n" . $apiKey;
$headers = "From: [email protected]";
$subject = "Welcome to Codeaxe - Your API Key & Documentation Details";

$message = "
<!DOCTYPE html>
<html>
<head>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
color: #333;
}
.container {
max-width: 600px;
margin: auto;
padding: 20px;
border: 1px solid #ddd;
border-radius: 8px;
background: #f9f9f9;
}
.header {
text-align: center;
margin-bottom: 20px;
}
.header h1 {
color: #007BFF;
}
.content {
margin-bottom: 20px;
}
.api-key-container {
display: flex;
align-items: center;
justify-content: space-between;
background-color: #e9ecef;
padding: 10px;
border-radius: 5px;
font-size: 1em;
}
.copy-icon {
cursor: pointer;
color: #007BFF;
font-size: 1.2em;
}
.cta {
text-align: center;
margin-top: 20px;
}
.cta a {
display: inline-block;
padding: 10px 20px;
color: #fff;
background-color: #007BFF;
text-decoration: none;
border-radius: 5px;
}
.cta a:hover {
background-color: #0056b3;
}
.footer {
text-align: center;
font-size: 0.9em;
color: #777;
}
</style>
</head>
<body>
<div class='container'>
<div class='header'>
<h1>Welcome to Codeaxe</h1>
</div>
<div class='content'>
<p>Hi there,</p>
<p>Thank you for signing up! We're excited to have you onboard. Here is your API Key:</p>
<div class='api-key-container'>
<span id='apiKey'>$apiKey</span>
</div>
<p>You can access the API documentation and further details using the link below:</p>
<p><a href='https://bucket.codeaxe.co.in/docs' target='_blank'>API Documentation</a></p>
<p>If you have any questions or need assistance, feel free to reach out to us.</p>
</div>
<div class='cta'>
<a href='https://bucket.codeaxe.co.in'>Go to Dashboard</a>
</div>
<div class='footer'>
<p>&copy; " . date('Y') . " Codeaxe. All rights reserved.</p>
</div>
</div>
<script>
function copyApiKey() {
var apiKeyText = document.getElementById('apiKey').innerText;
navigator.clipboard.writeText(apiKeyText).then(function() {
alert('API Key copied to clipboard!');
}, function(err) {
alert('Failed to copy API Key.');
});
}
</script>
</body>
</html>
";

$headers = "From: [email protected]\r\n";
// $headers .= "Reply-To: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

if (mail($email, $subject, $message, $headers)) {
$message = "Subscription successful! Your API key has been sent to your email.";
Expand All @@ -47,4 +152,4 @@ function generateApiKey($length = 32) {
alert('No email provided.');
window.location.href = 'index.php';
</script>";
}
}
63 changes: 1 addition & 62 deletions upload.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<!-- upload.php -->
<?php

require_once 'config.php';
Expand All @@ -8,68 +9,6 @@ function generate8BitUniqueKey($length = 8) {
return substr(bin2hex(random_bytes($length)), 0, $length);
}

//if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['image'])) {
// $uniqueDirKey = generate8BitUniqueKey();
// $uploadDir = UPLOAD_DIR . $uniqueDirKey . '/';
//
// if (!is_dir($uploadDir)) {
// mkdir($uploadDir, 0777, true);
// }
//
// $fileName = generate8BitUniqueKey() . '.' . pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
// $filePath = $uploadDir . $fileName;
//
// if (move_uploaded_file($_FILES['image']['tmp_name'], $filePath)) {
// $uniqueKey = generateUniqueKey();
//
// $stmt = $pdo->prepare("INSERT INTO images (unique_key, file_name, directory_key) VALUES (:unique_key, :file_name, :directory_key)");
// $stmt->execute(['unique_key' => $uniqueKey, 'file_name' => $fileName, 'directory_key' => $uniqueDirKey]);
//
// $uniqueUrl = BASE_URL . "view.php?key=" . $uniqueKey;
// $fileUrl = BASE_URL . $uploadDir . $fileName;
//
// echo "Image uploaded successfully! Access it at: $uniqueUrl";
// echo "<br>Direct image URL: $fileUrl";
// } else {
// echo "Failed to upload the image.";
// }
//}
//if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['image'])) {
// $fileType = mime_content_type($_FILES['image']['tmp_name']);
// $validImageTypes = ['image/jpeg', 'image/png', 'image/gif'];
//
// if (!in_array($fileType, $validImageTypes)) {
// echo "Invalid file type. Only image files are allowed.";
// exit;
// }
//
// $uniqueDirKey = generate8BitUniqueKey();
// $uploadDir = UPLOAD_DIR . $uniqueDirKey . '/';
//
// if (!is_dir($uploadDir)) {
// mkdir($uploadDir, 0777, true);
// }
//
// $fileName = generate8BitUniqueKey() . '.' . pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
// $filePath = $uploadDir . $fileName;
//
// if (move_uploaded_file($_FILES['image']['tmp_name'], $filePath)) {
// $uniqueKey = generateUniqueKey();
//
// $stmt = $pdo->prepare("INSERT INTO images (unique_key, file_name, directory_key) VALUES (:unique_key, :file_name, :directory_key)");
// $stmt->execute(['unique_key' => $uniqueKey, 'file_name' => $fileName, 'directory_key' => $uniqueDirKey]);
//
// $uniqueUrl = BASE_URL . "view.php?key=" . $uniqueKey;
// $fileUrl = BASE_URL . $uploadDir . $fileName;
//
// echo "Image uploaded successfully! Access it at: $uniqueUrl";
// echo "<br>Direct image URL: $fileUrl";
// } else {
// echo "Failed to upload the image.";
// }
//} else {
// echo "No file uploaded.";
//}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['image'])) {
$maxSize = 5 * 1024 * 1024; // 5 MB in bytes
if ($_FILES['image']['size'] > $maxSize) {
Expand Down
Loading

0 comments on commit e71373e

Please sign in to comment.