aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNatasha Moongrave <natasha@256phi.eu>2026-03-27 22:57:05 +0100
committerNatasha Moongrave <natasha@256phi.eu>2026-03-27 22:57:05 +0100
commit4f9e1ebcf0a66ad3ba2959aeab5ce80da95487aa (patch)
tree8e4f2a09290bb70fc55b2496c6b82ba68ab33a85 /src
parentcbd095f66add3ec8d6220a9447c49567c37804e1 (diff)
Added commissions.php
Diffstat (limited to 'src')
-rw-r--r--src/Pages/commissions/commissions.php271
1 files changed, 271 insertions, 0 deletions
diff --git a/src/Pages/commissions/commissions.php b/src/Pages/commissions/commissions.php
new file mode 100644
index 0000000..5a31628
--- /dev/null
+++ b/src/Pages/commissions/commissions.php
@@ -0,0 +1,271 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>256phi | Commissions</title>
+ <link rel="stylesheet" href="../../Style/style.css">
+ <style>
+ .commission-section {
+ margin: 30px 0;
+ padding: 20px;
+ border: 1px solid rgba(255, 0, 255, 0.3);
+ background: rgba(10, 0, 25, 0.4);
+ }
+ .commission-section h2 {
+ margin-top: 0;
+ }
+ .price-table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 15px 0;
+ }
+ .price-table th,
+ .price-table td {
+ padding: 10px;
+ text-align: left;
+ border-bottom: 1px solid rgba(255, 0, 255, 0.2);
+ }
+ .price-table th {
+ color: #ff00ff;
+ }
+ .do-list li::before {
+ content: "[+] ";
+ color: #00ff00;
+ }
+ .dont-list li::before {
+ content: "[x] ";
+ color: #ff0000;
+ }
+ .status-open {
+ color: #00ff00;
+ text-shadow: 0 0 8px rgba(0, 255, 0, 0.6);
+ }
+ .status-closed {
+ color: #ff0000;
+ text-shadow: 0 0 8px rgba(255, 0, 0, 0.6);
+ }
+ .form-row {
+ margin-bottom: 15px;
+ }
+ .form-row label {
+ display: block;
+ margin-bottom: 5px;
+ color: #00ffff;
+ }
+ .success-msg {
+ padding: 15px;
+ background: rgba(0, 255, 0, 0.1);
+ border: 1px solid #00ff00;
+ color: #00ff00;
+ margin-bottom: 20px;
+ }
+ .error-msg {
+ padding: 15px;
+ background: rgba(255, 0, 0, 0.1);
+ border: 1px solid #ff0000;
+ color: #ff0000;
+ margin-bottom: 20px;
+ }
+ .honey { display: none; }
+ </style>
+</head>
+<body>
+ <canvas id="bg"></canvas>
+ <div class="container">
+ <h1>COMMISSIONS</h1>
+ <p class="subtitle">// request custom artwork</p>
+
+ <p style="text-align: center; font-size: 20px;">
+ Status: <span class="status-open">[ OPEN ]</span>
+ </p>
+
+ <p style="text-align: center;">
+ Check out my <a href="/portfolio">portfolio</a> to see examples of my work.
+ </p>
+
+ <!-- WHAT I OFFER -->
+ <div class="commission-section">
+ <h2>What I Offer</h2>
+ <ul>
+ <li>Alt-style pixel art</li>
+ <li>Digital illustrations</li>
+ <li>Character art, icons, scenes</li>
+ </ul>
+ </div>
+
+ <!-- PRICING -->
+ <div class="commission-section">
+ <h2>Pricing</h2>
+ <p>Prices are based on size and complexity. Contact me for a quote.</p>
+ <table class="price-table">
+ <tr>
+ <th>Type</th>
+ <th>USD</th>
+ <th>EUR</th>
+ </tr>
+ <tr>
+ <td>Small / Icon</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ <tr>
+ <td>Medium / Portrait</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ <tr>
+ <td>Large / Full Scene</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ </table>
+ <p><em>+ Complex backgrounds cost extra<br>
+ + Commercial use costs extra<br>
+ + Rush orders available (+50%)</em></p>
+ </div>
+
+ <!-- DO'S -->
+ <div class="commission-section">
+ <h2>I Will Draw</h2>
+ <ul class="do-list">
+ <li>Original characters (OCs)</li>
+ <li>Fan art</li>
+ <li>Portraits / avatars</li>
+ <li>Pixel art sprites and icons</li>
+ <li>Scene illustrations</li>
+ </ul>
+ </div>
+
+ <!-- DON'TS -->
+ <div class="commission-section">
+ <h2>I Will NOT Draw</h2>
+ <ul class="dont-list">
+ <li>NSFW / adult content</li>
+ <li>Hateful, discriminatory, or offensive content</li>
+ <li>Anything that promotes harm</li>
+ </ul>
+ </div>
+
+ <!-- TERMS OF SERVICE -->
+ <div class="commission-section">
+ <h2>Terms of Service</h2>
+ <ul>
+ <li><strong>Payment:</strong> 50% upfront, 50% upon completion</li>
+ <li><strong>Turnaround:</strong> 1-2 weeks (depending on complexity)</li>
+ <li><strong>Revisions:</strong> Minor revisions included; major changes may cost extra</li>
+ <li><strong>Ownership:</strong> Shared rights - both artist and client may use the work</li>
+ <li><strong>Credit:</strong> Please credit me when posting the artwork publicly</li>
+ <li><strong>AI:</strong> Absolutely NO AI use of my artwork permitted</li>
+ </ul>
+ </div>
+
+ <!-- CONTACT FORM -->
+ <div class="commission-section">
+ <h2>Request a Commission</h2>
+
+ <?php
+ $success = false;
+ $error = '';
+
+ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ // Honeypot check
+ if (!empty($_POST['website'])) {
+ // Bot detected, silently ignore
+ $success = true;
+ } else {
+ $name = htmlspecialchars(trim($_POST['name'] ?? ''), ENT_QUOTES, 'UTF-8');
+ $email = filter_var(trim($_POST['email'] ?? ''), FILTER_SANITIZE_EMAIL);
+ $description = htmlspecialchars(trim($_POST['description'] ?? ''), ENT_QUOTES, 'UTF-8');
+ $budget = htmlspecialchars(trim($_POST['budget'] ?? ''), ENT_QUOTES, 'UTF-8');
+
+ // Validation
+ if (empty($name) || empty($email) || empty($description)) {
+ $error = 'Please fill in all required fields.';
+ } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $error = 'Please enter a valid email address.';
+ } elseif (strlen($description) > 5000) {
+ $error = 'Description is too long (max 5000 characters).';
+ } else {
+ // Compose email
+ $to = 'commissions@256phi.eu';
+ $subject = "Commission Request from $name";
+ $body = "New commission request:\n\n";
+ $body .= "Name: $name\n";
+ $body .= "Email: $email\n";
+ $body .= "Budget: $budget\n\n";
+ $body .= "Description:\n$description\n";
+
+ $headers = "From: noreply@256phi.eu\r\n";
+ $headers .= "Reply-To: $email\r\n";
+ $headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
+
+ if (mail($to, $subject, $body, $headers)) {
+ $success = true;
+ } else {
+ $error = 'Failed to send message. Please try emailing directly.';
+ }
+ }
+ }
+ }
+ ?>
+
+ <?php if ($success): ?>
+ <div class="success-msg">
+ Your commission request has been sent. I'll get back to you soon!
+ </div>
+ <?php elseif ($error): ?>
+ <div class="error-msg">
+ <?= $error ?>
+ </div>
+ <?php endif; ?>
+
+ <?php if (!$success): ?>
+ <form method="POST" action="">
+ <div class="form-row">
+ <label for="name">Name *</label>
+ <input type="text" id="name" name="name" required maxlength="100"
+ value="<?= htmlspecialchars($_POST['name'] ?? '', ENT_QUOTES, 'UTF-8') ?>">
+ </div>
+
+ <div class="form-row">
+ <label for="email">Email *</label>
+ <input type="text" id="email" name="email" required maxlength="200"
+ value="<?= htmlspecialchars($_POST['email'] ?? '', ENT_QUOTES, 'UTF-8') ?>">
+ </div>
+
+ <!-- Honeypot -->
+ <div class="honey">
+ <label for="website">Website</label>
+ <input type="text" id="website" name="website" tabindex="-1" autocomplete="off">
+ </div>
+
+ <div class="form-row">
+ <label for="budget">Budget (optional)</label>
+ <input type="text" id="budget" name="budget" maxlength="100" placeholder="e.g., $30-50"
+ value="<?= htmlspecialchars($_POST['budget'] ?? '', ENT_QUOTES, 'UTF-8') ?>">
+ </div>
+
+ <div class="form-row">
+ <label for="description">Describe your commission *</label>
+ <textarea id="description" name="description" required maxlength="5000"
+ placeholder="Tell me about your project: character details, style preferences, reference images, etc."><?= htmlspecialchars($_POST['description'] ?? '', ENT_QUOTES, 'UTF-8') ?></textarea>
+ </div>
+
+ <button type="submit">Send Request</button>
+ </form>
+ <?php endif; ?>
+
+ <p style="margin-top: 20px; text-align: center; color: #888;">
+ Or email me directly at <a href="mailto:commissions@256phi.eu">commissions@256phi.eu</a>
+ </p>
+ </div>
+
+ <footer>
+ <p>&copy; 256phi | 2026 | <a href="/home">Home</a> | <a href="/portfolio">Portfolio</a></p>
+ </footer>
+ </div>
+
+ <script type="module" src="../../Background/main.js"></script>
+</body>
+</html>