Created
December 10, 2013 08:42
-
-
Save praseodym/7887478 to your computer and use it in GitHub Desktop.
TU Delft tentamenticket generator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Clears header field to avoid injection | |
* http://www.anders.com/projects/sysadmin/formPostHijacking/ | |
* http://www.davidseah.com/archives/2005/09/01/wp-contact-form-spam-attack/ | |
*/ | |
function preprocessHeaderField($value) { | |
//Remove line feeds | |
$ret = str_replace("\r", "", trim($value)); | |
$ret = str_replace("\n", "", $ret); | |
// Remove injected headers | |
$find = array("/bcc\:/i", "/Content\-Type\:/i", "/Mime\-Type\:/i", "/cc\:/i", "/to\:/i"); | |
$ret = preg_replace($find, "**bogus header removed**", $ret); | |
return $ret; | |
} | |
function valid_email_address($mail) { | |
$user = '[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+'; | |
$domain = '(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+'; | |
$ipv4 = '[0-9]{1,3}(\.[0-9]{1,3}){3}'; | |
$ipv6 = '[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}'; | |
return preg_match("/^$user@($domain|(\[($ipv4|$ipv6)\]))$/", $mail); | |
} | |
function send_email($name, $email) { | |
$name = preprocessHeaderField($name); | |
$email = preprocessHeaderField($email); | |
if (!$name || !valid_email_address($email) || | |
strpos($email, '@student.tudelft.nl') === FALSE || | |
strpos(explode("@", $email, 2)[0], '.') === FALSE) | |
return false; | |
return mail("\"$name\" <$email>", "Bevestiging inschrijving OSIRIS.", | |
"Dit is een bevestiging van de inschrijving die je zojuist via OSIRIS hebt gedaan. | |
Je bent ingeschreven voor de volgende toets(en): | |
Studentnummer : {$_POST['studentnummer']} | |
Cursus : {$_POST['cursus']} | |
Toets : {$_POST['toets']} | |
Collegejaar : 2013 | |
Blok : {$_POST['blok']} | |
Gelegenheid : {$_POST['gelegenheid']} | |
Datum : {$_POST['datum']} | |
Dag : {$_POST['dag']} | |
Tijd : {$_POST['tijd']} | |
VANAF 1 JANUARI 2014 IS DIT EEN TENTAMENTICKET ! | |
DEZE MOET NAAR HET TENTAMEN MEEGENOMEN WORDEN ! | |
ZONDER DIT TENTAMENTICKET KRIJG JE GEEN TOEGANG TOT HET TENTAMEN ! | |
Aan deze gegevens kunnen geen rechten worden ontleend. | |
Dit is een automatisch verzonden e-mail. Het is niet mogelijk om een reply te sturen op deze e-mail.", | |
"From: TU-Delft Onderwijs en Studenten Zaken <[email protected]>"); | |
} | |
if ($_SERVER['REQUEST_METHOD'] === 'POST') { | |
$name = $_POST['naam']; | |
$email = $_POST['email']; | |
if(!send_email($name, $email)) { | |
die('<div style="color: red; margin-bottom: 1em; font-family: sans-serif;">derp!</div>'); | |
} | |
else { | |
die('<div style="color: green; margin-bottom: 1em; font-family: sans-serif;">Check je mailbox!</div>'); | |
} | |
} | |
?> | |
<style type="text/css" media="screen"> | |
body { | |
font-family: sans-serif; | |
} | |
</style> | |
Mailtje kwijt (of gewoon vergeten in te schrijven)? Vraag hier je tentamenticket aan! | |
<form method="post"> | |
<table border="0" cellspacing="2" cellpadding="2"> | |
<tr><td>Naam:</td><td><input name="naam"/></td></tr> | |
<tr><td>TU e-mailadres:</td><td><input name="email" value="@student.tudelft.nl" /></td></tr> | |
<tr><td>Studentnummer:</td><td><input name="studentnummer" /></td></tr> | |
<tr><td>Cursus:</td><td><input name="cursus" /></td></tr> | |
<tr><td>Toets:</td><td><input name="toets" /></td></tr> | |
<tr><td>Blok:</td><td><input name="blok" value="2"/></td></tr> | |
<tr><td>Gelegenheid:</td><td><input name="gelegenheid" value="1"/></td></tr> | |
<tr><td>Datum:</td><td><input name="datum" value="01-01-2014"/></td></tr> | |
<tr><td>Dag:</td><td><input name="dag" value="Woensdag"/></td></tr> | |
<tr><td>Tijd:</td><td><input name="tijd" value="09.00"/></td></tr> | |
</table> | |
<input type="submit" value="Mail mijn inschrijfbevestiging!"/> | |
</form> | |
<small>Disclaimer: niet serieus bedoeld enzo, maar werkt wel |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment