diff options
| author | Natasha Moongrave <natasha@256phi.eu> | 2026-03-27 22:57:05 +0100 |
|---|---|---|
| committer | Natasha Moongrave <natasha@256phi.eu> | 2026-03-27 22:57:05 +0100 |
| commit | 4f9e1ebcf0a66ad3ba2959aeab5ce80da95487aa (patch) | |
| tree | 8e4f2a09290bb70fc55b2496c6b82ba68ab33a85 /src/Pages/commissions/commissions.php | |
| parent | cbd095f66add3ec8d6220a9447c49567c37804e1 (diff) | |
Added commissions.php
Diffstat (limited to 'src/Pages/commissions/commissions.php')
| -rw-r--r-- | src/Pages/commissions/commissions.php | 271 |
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>© 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> |
