Skip to content

Instantly share code, notes, and snippets.

@praseodym
Created December 10, 2013 08:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save praseodym/7887478 to your computer and use it in GitHub Desktop.
Save praseodym/7887478 to your computer and use it in GitHub Desktop.
TU Delft tentamenticket generator
<?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 <noreply@tudelft.nl>");
}
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