<html lang='en'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<title>
GitLab
</title>
</meta>
</head>
<style>
  img {
    max-width: 100%;
    height: auto;
  }
  p.details {
    font-style:italic;
    color:#777
  }
  .footer p {
    font-size:small;
    color:#777
  }
  pre.commit-message {
    white-space: pre-wrap;
  }
  .file-stats a {
    text-decoration: none;
  }
  .file-stats .new-file {
    color: #090;
  }
  .file-stats .deleted-file {
    color: #B00;
  }
</style>
<body>
<div class='content'>
<h3>Imran Hussain pushed to branch master at <a href="https://projects.sucs.org/sucssite/sucs-site">sucssite / sucs-site</a></h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://projects.sucs.org/sucssite/sucs-site/commit/c508252ed91cb2264aded2686b31fc2da44d661d">c508252e</a></strong>
<div>
<span>by gigosaurus</span>
<i>at 2015-10-13T11:45:04Z</i>
</div>
<pre class='commit-message'>Improve the regex and validation</pre>
</li>
<li>
<strong><a href="https://projects.sucs.org/sucssite/sucs-site/commit/f77eef1c5ce4135df657e8eea84048f9658b6c30">f77eef1c</a></strong>
<div>
<span>by gigosaurus</span>
<i>at 2015-10-13T13:07:03Z</i>
</div>
<pre class='commit-message'>Merge branch 'master' of projects.sucs.org:/sucssite/sucs-site</pre>
</li>
<li>
<strong><a href="https://projects.sucs.org/sucssite/sucs-site/commit/9819ed53d165f38978ca023afbcf1cc8ecf6dd9e">9819ed53</a></strong>
<div>
<span>by gigosaurus</span>
<i>at 2015-10-13T19:01:10Z</i>
</div>
<pre class='commit-message'>postcodes can now be dumb</pre>
</li>
<li>
<strong><a href="https://projects.sucs.org/sucssite/sucs-site/commit/f28a63a1ed9c7cf1d9956f79f1e6e7580b490529">f28a63a1</a></strong>
<div>
<span>by gigosaurus</span>
<i>at 2015-10-13T20:52:33Z</i>
</div>
<pre class='commit-message'>removing my fuck up</pre>
</li>
<li>
<strong><a href="https://projects.sucs.org/sucssite/sucs-site/commit/b4a9420ca420b07057df06904623ac939fd45c49">b4a9420c</a></strong>
<div>
<span>by Imran Hussain</span>
<i>at 2015-10-14T08:49:31Z</i>
</div>
<pre class='commit-message'>Merge branch 'master' into 'master'

Reduced user error

Postcodes can now be lowercase and lack a space.
Phone numbers must be at least 10 characters long (increased from 1, shouldn't cause any issues?).
Any email containing "@sucs." is not allowed for signup.
signup.js has been reformatted.

See merge request !33</pre>
</li>
</ul>
<h4>5 changed files:</h4>
<ul>
<li class='file-stats'>
<a href='#diff-0'>
components/signupajax.php
</a>
</li>
<li class='file-stats'>
<a href='#diff-1'>
htdocs/js/signup.js
</a>
</li>
<li class='file-stats'>
<a href='#diff-2'>
lib/sanitization.php
</a>
</li>
<li class='file-stats'>
<a href='#diff-3'>
lib/validation.php
</a>
</li>
<li class='file-stats'>
<a href='#diff-4'>
lib/validationData.php
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id='diff-0'>
<a href='https://projects.sucs.org/sucssite/sucs-site/compare/a87d2d7631f6bd6e3ffffb0fdea398e2f0df31f4...b4a9420ca420b07057df06904623ac939fd45c49#diff-0'>
<strong>
components/signupajax.php
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/components/signupajax.php
</span><span style="color: #000000;background-color: #ddffdd">+++ b/components/signupajax.php
</span><span style="color: #aaaaaa">@@ -14,7 +14,10 @@ if (isset($_GET['key'])) {
</span>             }
             break;
         case "postcode":
<span style="color: #000000;background-color: #ffdddd">-            echo lookup_postcode($_GET['value']);
</span><span style="color: #000000;background-color: #ddffdd">+            $postcode = validPostcode($_GET['value']);
+            if ($postcode != false) {
+                lookup_postcode($postcode);
+            }
</span>             break;
         case "username":
             $username = $_GET['value'];
</code></pre>

<br>
</li>
<li id='diff-1'>
<a href='https://projects.sucs.org/sucssite/sucs-site/compare/a87d2d7631f6bd6e3ffffb0fdea398e2f0df31f4...b4a9420ca420b07057df06904623ac939fd45c49#diff-1'>
<strong>
htdocs/js/signup.js
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/htdocs/js/signup.js
</span><span style="color: #000000;background-color: #ddffdd">+++ b/htdocs/js/signup.js
</span><span style="color: #aaaaaa">@@ -1,275 +1,283 @@
</span>-var validation = {"studentid":false, "username":false, "realname":false, "address":false, "contact":false, "email":false, "phone":false};
<span style="color: #000000;background-color: #ddffdd">+var validation = {
+    "studentid": false,
+    "username": false,
+    "realname": false,
+    "address": false,
+    "contact": false,
+    "email": false,
+    "phone": false
+};
</span> var submitted = false;
-function validate(){
-       var valid = true;
-       for (field in req){
-               if (!validation[req[field]]){
-                       valid=false;
-                       break;
-               }
-       }
-       if((valid || ($('input#override:checked').size()==1)) && !submitted && ($('input#tnc:checked').size()==1)){
-               $('input#submit').removeAttr("disabled");
-               return true;
-       }
-       else{
-               $('input#submit').attr("disabled","disabled");
-               return false;
-       }
-       
<span style="color: #000000;background-color: #ddffdd">+function validate() {
+    var valid = true;
+    for (field in req) {
+        if (!validation[req[field]]) {
+            valid = false;
+            break;
+        }
+    }
+    if ((valid || ($('input#override:checked').size() == 1)) && !submitted && ($('input#tnc:checked').size() == 1)) {
+        $('input#submit').removeAttr("disabled");
+        return true;
+    }
+    else {
+        $('input#submit').attr("disabled", "disabled");
+        return false;
+    }
+
</span> 
 }
-function processPostcode(){
-               // lookup postcode
<span style="color: #000000;background-color: #ffdddd">-                $.getJSON("signup/ajax",{key: "postcode",value: $('input#postcode').val()}, function(j){
</span>-                  //populate dropdown     
<span style="color: #000000;background-color: #ffdddd">-                        var options = '';
-                        if (j.addresses.length > 1) {
</span>-                          // make dropdown visible
<span style="color: #000000;background-color: #ffdddd">-                                $('div#addseldiv').removeAttr("style");
-                                for (var i = 0; i < (j.addresses.length); i++) {
-                                        options += '<option>';
-                                        if (j.addresses[i].flat != null) {
-                                               options += j.addresses[i].flat + "\n";
-                                        }
-                                        if (j.addresses[i].house != null) {
-                                               options += j.addresses[i].house + "\n";
-                                        }
-                                        if (j.addresses[i].road != null) {
-                                               options += j.addresses[i].road + "\n";
-                                        }
-                                        if (j.addresses[i].city != null) {
-                                               options += j.addresses[i].city + "\n";
-                                        }
-                                        options += '</option>';
-                                }
-                                $("select#addsel").html(options);
-                                $('select#addsel option:first').attr('selected', 'selected');
-                        }
-                        if (j.addresses.length == 1) {
-                                $('div#addseldiv').attr("style","display:none");
-                                $("textarea#address")
</span>-                          $('div#addressmessage').attr("style","color:green; float:right; clear:right;");
-                               $('div#addressmessage').html("OK");
-                               validation["address"]=true;
-                               validate();
<span style="color: #000000;background-color: #ffdddd">-                        }
-                })
</span><span style="color: #000000;background-color: #ddffdd">+function processPostcode() {
+    // lookup postcode
+    $.getJSON("signup/ajax", {key: "postcode", value: $('input#postcode').val()}, function (j) {
+        //populate dropdown
+        var options = '';
+        if (j.addresses.length > 1) {
+            // make dropdown visible
+            $('div#addseldiv').removeAttr("style");
+            for (var i = 0; i < (j.addresses.length); i++) {
+                options += '<option>';
+                if (j.addresses[i].flat != null) {
+                    options += j.addresses[i].flat + "\n";
+                }
+                if (j.addresses[i].house != null) {
+                    options += j.addresses[i].house + "\n";
+                }
+                if (j.addresses[i].road != null) {
+                    options += j.addresses[i].road + "\n";
+                }
+                if (j.addresses[i].city != null) {
+                    options += j.addresses[i].city + "\n";
+                }
+                options += '</option>';
+            }
+            $("select#addsel").html(options);
+            $('select#addsel option:first').attr('selected', 'selected');
+        }
+        if (j.addresses.length == 1) {
+            $('div#addseldiv').attr("style", "display:none");
+            $("textarea#address")
+            $('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
+            $('div#addressmessage').html("OK");
+            validation["address"] = true;
+            validate();
+        }
+    })
</span> }
 
-function lookupSID(setname){
<span style="color: #000000;background-color: #ffdddd">-        $.get("/signup/ajax",{key:"sid" ,value: $('input#studentid').val()},function(j){
-                arr=j.split(":");
-                key=arr.shift();
-                val=arr.join(":");
-                if(key=="OK"){
</span>-                  if(setname=true)
-                               $("input#realname").val(val);
<span style="color: #000000;background-color: #ffdddd">-                        $('div#studentidmessage').attr("style","color:green; float:right; clear:right;");
</span>-                  $('div#studentidmessage').html(key);
-                       validation['studentid']=true;
-                       processName("realname","realname");
<span style="color: #000000;background-color: #ddffdd">+function lookupSID(setname) {
+    $.get("/signup/ajax", {key: "sid", value: $('input#studentid').val()}, function (j) {
+        arr = j.split(":");
+        key = arr.shift();
+        val = arr.join(":");
+        if (key == "OK") {
+            if (setname = true)
+                $("input#realname").val(val);
+            $('div#studentidmessage').attr("style", "color:green; float:right; clear:right;");
+            $('div#studentidmessage').html(key);
+            validation['studentid'] = true;
+            processName("realname", "realname");
</span> 
<span style="color: #000000;background-color: #ffdddd">-                }
-                else{
-                        $('div#studentidmessage').attr("style","color:red; float:right; clear:right;");
</span>-                  $('div#studentidmessage').html(val);
-                       validation['email']=false;
-                       validate();
<span style="color: #000000;background-color: #ffdddd">-                }
-        },'text')
</span><span style="color: #000000;background-color: #ddffdd">+        }
+        else {
+            $('div#studentidmessage').attr("style", "color:red; float:right; clear:right;");
+            $('div#studentidmessage').html(val);
+            validation['email'] = false;
+            validate();
+        }
+    }, 'text')
</span> }
-function processSID(){
-       lookupSID(true);
<span style="color: #000000;background-color: #ddffdd">+function processSID() {
+    lookupSID(true);
</span> }
 
-function processUsername(){
<span style="color: #000000;background-color: #ffdddd">-        $.get("/signup/ajax",{key: "username", value: $('input#username').val()},function(j){
-                if (j!="OK") {
-                        $('div#usernamemessage').attr("style","color:red; float:right; clear:right;");
</span>-                  validation['username']=false;
<span style="color: #000000;background-color: #ffdddd">-                }
-                else{   
-                        $('div#usernamemessage').attr("style","color:green; float:right; clear:right;");
</span>-                  validation['username']=true;
<span style="color: #000000;background-color: #ffdddd">-                }
</span>-          $('div#usernamemessage').html(j);
-               validate();
<span style="color: #000000;background-color: #ffdddd">-        },'text')
</span><span style="color: #000000;background-color: #ddffdd">+function processUsername() {
+    $.get("/signup/ajax", {key: "username", value: $('input#username').val()}, function (j) {
+        if (j != "OK") {
+            $('div#usernamemessage').attr("style", "color:red; float:right; clear:right;");
+            validation['username'] = false;
+        }
+        else {
+            $('div#usernamemessage').attr("style", "color:green; float:right; clear:right;");
+            validation['username'] = true;
+        }
+        $('div#usernamemessage').html(j);
+        validate();
+    }, 'text')
</span> }
 
-function processName(type, input){
<span style="color: #000000;background-color: #ffdddd">-        $.get("/signup/ajax",{key: type, value: $('input#'+input).val()},function(j){
-                if (j!="OK") {
-                        $('div#'+input+'message').attr("style","color:red; float:right; clear:right;");
</span>-                  validation[input]=false;
<span style="color: #000000;background-color: #ffdddd">-                }
-                else{   
-                        $('div#'+input+'message').attr("style","color:green; float:right; clear:right;");
</span>-                  validation[input]=true;
<span style="color: #000000;background-color: #ffdddd">-                }
</span>-          $('div#'+input+'message').html(j);
-               validate();
<span style="color: #000000;background-color: #ffdddd">-        },'text')
</span><span style="color: #000000;background-color: #ddffdd">+function processName(type, input) {
+    $.get("/signup/ajax", {key: type, value: $('input#' + input).val()}, function (j) {
+        if (j != "OK") {
+            $('div#' + input + 'message').attr("style", "color:red; float:right; clear:right;");
+            validation[input] = false;
+        }
+        else {
+            $('div#' + input + 'message').attr("style", "color:green; float:right; clear:right;");
+            validation[input] = true;
+        }
+        $('div#' + input + 'message').html(j);
+        validate();
+    }, 'text')
</span> }
-function processContact(){
-       processName('realname','contact');
<span style="color: #000000;background-color: #ddffdd">+function processContact() {
+    processName('realname', 'contact');
</span> }
 
-function processAddress(){
<span style="color: #000000;background-color: #ffdddd">-        $.get("/signup/ajax",{key: "address", value: $('textarea#address').val()},function(j){
-                if (j!="OK") {
-                        $('div#addressmessage').attr("style","color:red; float:right; clear:right;");
-                        validation['address']=false;
-                }   
-                else{   
-                        $('div#addressmessage').attr("style","color:green; float:right; clear:right;");
-                        validation['address']=true;
-                }
</span>-          $('div#addressmessage').html(j);
-               validate();
<span style="color: #000000;background-color: #ffdddd">-        },'text')
</span><span style="color: #000000;background-color: #ddffdd">+function processAddress() {
+    $.get("/signup/ajax", {key: "address", value: $('textarea#address').val()}, function (j) {
+        if (j != "OK") {
+            $('div#addressmessage').attr("style", "color:red; float:right; clear:right;");
+            validation['address'] = false;
+        }
+        else {
+            $('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
+            validation['address'] = true;
+        }
+        $('div#addressmessage').html(j);
+        validate();
+    }, 'text')
</span> }
 
-function processEmail(){
<span style="color: #000000;background-color: #ffdddd">-        $.get("/signup/ajax",{key: "email", value: $('input#email').val()},function(j){
-                if (j!="OK") {
-                        $('div#emailmessage').attr("style","color:red; float:right; clear:right;");
</span>-                  validation['email']=false;
<span style="color: #000000;background-color: #ffdddd">-                }
-                else{   
-                        $('div#emailmessage').attr("style","color:green; float:right; clear:right;");
</span>-                  validation['email']=true;
<span style="color: #000000;background-color: #ffdddd">-                }
</span>-          $('div#emailmessage').html(j);
-               validate();
<span style="color: #000000;background-color: #ffdddd">-        },'text')
</span><span style="color: #000000;background-color: #ddffdd">+function processEmail() {
+    $.get("/signup/ajax", {key: "email", value: $('input#email').val()}, function (j) {
+        if (j != "OK") {
+            $('div#emailmessage').attr("style", "color:red; float:right; clear:right;");
+            validation['email'] = false;
+        }
+        else {
+            $('div#emailmessage').attr("style", "color:green; float:right; clear:right;");
+            validation['email'] = true;
+        }
+        $('div#emailmessage').html(j);
+        validate();
+    }, 'text')
</span> }
 
-function processPhone(){
<span style="color: #000000;background-color: #ffdddd">-        $.get("/signup/ajax",{key: "phone", value: $('input#phone').val()},function(j){
-                if (j!="OK") {
-                        $('div#phonemessage').attr("style","color:red; float:right; clear:right;");
</span>-                  validation['phone']=false;
<span style="color: #000000;background-color: #ffdddd">-                }
-                else{   
-                        $('div#phonemessage').attr("style","color:green; float:right; clear:right;");
</span>-                  validation['phone']=true;
<span style="color: #000000;background-color: #ffdddd">-                }
</span>-          $('div#phonemessage').html(j);
-               validate();
<span style="color: #000000;background-color: #ffdddd">-        },'text')
</span><span style="color: #000000;background-color: #ddffdd">+function processPhone() {
+    $.get("/signup/ajax", {key: "phone", value: $('input#phone').val()}, function (j) {
+        if (j != "OK") {
+            $('div#phonemessage').attr("style", "color:red; float:right; clear:right;");
+            validation['phone'] = false;
+        }
+        else {
+            $('div#phonemessage').attr("style", "color:green; float:right; clear:right;");
+            validation['phone'] = true;
+        }
+        $('div#phonemessage').html(j);
+        validate();
+    }, 'text')
</span> }
 
-$(function(){
-       if($('input#studentid').size()==1){
-               usertype=1;
-       }
-       else if($('input#contact').size()==1){
-               usertype=2;
-       }
-       else{
-               usertype=5;
-       }
<span style="color: #000000;background-color: #ffdddd">-        req=new Array("username","realname","email","phone");
-        switch(usertype){
-                case "1":
-                        req.push("studentid","address");
-                        break;
-                case "2":
-                        req.push("contact");
-                        break;
-                case "5":
-                        req.push("address");
</span><span style="color: #000000;background-color: #ddffdd">+$(function () {
+    if ($('input#studentid').size() == 1) {
+        usertype = 1;
+    }
+    else if ($('input#contact').size() == 1) {
+        usertype = 2;
+    }
+    else {
+        usertype = 5;
+    }
+    req = new Array("username", "realname", "email", "phone");
+    switch (usertype) {
+        case "1":
+            req.push("studentid", "address");
+            break;
+        case "2":
+            req.push("contact");
+            break;
+        case "5":
+            req.push("address");
+    }
+    //usertype=$('input#usertype').val();
+    $("document").ready(function () {
+        // makes script sutff appear
+        $('div#postcodediv').removeAttr("style");
+        $('input#submit').attr("disabled", "disabled");
+        // if the fields are not empty validate them
+        if ($('input#username').val() != "") processUsername();
+        if ($('input#email').val() != "") processEmail();
+        if ($('input#phone').val() != "") processPhone();
+        if (usertype != 2) {
+            if ($('input#postcode').val() != "") processPostcode();
+            if ($('textarea#address').val() != "") processAddress();
+            if ($('input#realname').val() != "") processName("realname", "realname");
+        }
+        else {
+            if ($('input#contact').val() != "") processContact();
+            if ($('input#realname').val() != "") processName("socname", "realname");
</span>         }
-       //usertype=$('input#usertype').val();
-       $("document").ready(function(){
-               // makes script sutff appear
-               $('div#postcodediv').removeAttr("style");
-               $('input#submit').attr("disabled","disabled");
-               // if the fields are not empty validate them
-               if($('input#username').val()!="") processUsername();
-               if($('input#email').val()!="") processEmail();
-               if($('input#phone').val()!="") processPhone();
-               if(usertype!=2){
-                       if($('input#postcode').val()!="") processPostcode();
-                       if($('textarea#address').val()!="") processAddress();
-                       if($('input#realname').val()!="") processName("realname","realname");
-               }
-               else{
-                       if($('input#contact').val()!="") processContact();
-                       if($('input#realname').val()!="") processName("socname","realname");
-               }
-               if((usertype==1) && ($('input#studentid').val()!="")){
-                       if($('input#realname').val()=="") lookupSID(true);
-                       else lookupSID(false);
-               }
<span style="color: #000000;background-color: #ddffdd">+        if ((usertype == 1) && ($('input#studentid').val() != "")) {
+            if ($('input#realname').val() == "") lookupSID(true);
+            else lookupSID(false);
+        }
+
+        validate();
+    })
+    // dont do address stuff for societies
+    if (usertype != 2) {
+        // process postcode when the box changes
+        $("input#postcode").change(processPostcode);
</span> 
-               validate();
-       })
-       // dont do address stuff for societies
-       if(usertype!=2){
-       // process postcode when the box changes
-       $("input#postcode").change(processPostcode);
-       
-       //populate the address box when an address is selected
-       $("select#addsel").change(function(){
-       
-               // everything is shit and will strip out the line breaks
-               // so we have to do weird shit with innerHTML
-       
-               // store the entire options as e
-               var e = document.getElementById("addsel");
-               // store the selected address's innerHTML as strUser (because stackpver flow copy and paste)
-               var strUser = e.options[e.selectedIndex].innerHTML;
-               // set the text area to the strUser var
-               $("textarea#address").text( strUser );
-               $('div#addressmessage').attr("style","color:green; float:right; clear:right;");
-               $('div#addressmessage').html("OK");
-               validation['address']=true;
-       })
-       }
-       //else deal with the contact field
-       else{
<span style="color: #000000;background-color: #ddffdd">+        //populate the address box when an address is selected
+        $("select#addsel").change(function () {
+
+            // everything is shit and will strip out the line breaks
+            // so we have to do weird shit with innerHTML
+
+            // store the entire options as e
+            var e = document.getElementById("addsel");
+            // store the selected address's innerHTML as strUser (because stackpver flow copy and paste)
+            var strUser = e.options[e.selectedIndex].innerHTML;
+            // set the text area to the strUser var
+            $("textarea#address").text(strUser);
+            $('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
+            $('div#addressmessage').html("OK");
+            validation['address'] = true;
+        })
+    }
+    //else deal with the contact field
+    else {
</span>         $("input#contact").change(processContact)
 
-       }
-       //if is a student
-       if(usertype==1){
-       //lookup the real name from the studentid
-       $("input#studentid").change(processSID)
-       }
-       //validate username
-       $("input#username").change(processUsername)
-       //validate personal and society names differntly
-       if(usertype!=2){
-               persoc='realname';
-       }
-       else{
-               persoc='socname';
-       }
-       //validate real name
-       $("input#realname").change(function(){
-               processName(persoc, 'realname');
-       })
-       
<span style="color: #000000;background-color: #ffdddd">-        //validate email address
-        $("input#email").change(processEmail);
-        //validate phone number
-        $("input#phone").change(processPhone);
</span>-  $("textarea#address").change(processAddress);
-       $("input#override").change(validate);
-       $("input#tnc").change(validate);
-       // Disable the submit button once clicked
-       $("form#mainform").submit(function() {
-               var valid = validate();
-               if(valid){
-                       // mark form as submitted
-                       submitted = true;
-                       // disable the submit button
-                       $('input#submit').attr("disabled","disabled");
-               }
-               return valid;
-       });
<span style="color: #000000;background-color: #ddffdd">+    }
+    //if is a student
+    if (usertype == 1) {
+        //lookup the real name from the studentid
+        $("input#studentid").change(processSID)
+    }
+    //validate username
+    $("input#username").change(processUsername)
+    //validate personal and society names differntly
+    if (usertype != 2) {
+        persoc = 'realname';
+    }
+    else {
+        persoc = 'socname';
+    }
+    //validate real name
+    $("input#realname").change(function () {
+        processName(persoc, 'realname');
+    })
+
+    //validate email address
+    $("input#email").change(processEmail);
+    //validate phone number
+    $("input#phone").change(processPhone);
+    $("textarea#address").change(processAddress);
+    $("input#override").change(validate);
+    $("input#tnc").change(validate);
+    // Disable the submit button once clicked
+    $("form#mainform").submit(function () {
+        var valid = validate();
+        if (valid) {
+            // mark form as submitted
+            submitted = true;
+            // disable the submit button
+            $('input#submit').attr("disabled", "disabled");
+        }
+        return valid;
+    });
</span> })
 
</code></pre>

<br>
</li>
<li id='diff-2'>
<a href='https://projects.sucs.org/sucssite/sucs-site/compare/a87d2d7631f6bd6e3ffffb0fdea398e2f0df31f4...b4a9420ca420b07057df06904623ac939fd45c49#diff-2'>
<strong>
lib/sanitization.php
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/lib/sanitization.php
</span><span style="color: #000000;background-color: #ddffdd">+++ b/lib/sanitization.php
</span><span style="color: #aaaaaa">@@ -9,4 +9,12 @@ function sanitizeAddress($address)
</span>     return str_replace(array("\r\n", "\r"), array("\n", "\n"), $address);
 }
 
<span style="color: #000000;background-color: #ddffdd">+function sanitizePostcode($postcode)
+{
+    //force uppercase, remove any possible stupid spaces and add the single space in the correct place
+    $postcode = strtoupper($postcode);
+    $postcode = str_replace(" ", "", $postcode);
+    return substr_replace($postcode, " ", -3, 0);
+}
+
</span> ?>
</code></pre>

<br>
</li>
<li id='diff-3'>
<a href='https://projects.sucs.org/sucssite/sucs-site/compare/a87d2d7631f6bd6e3ffffb0fdea398e2f0df31f4...b4a9420ca420b07057df06904623ac939fd45c49#diff-3'>
<strong>
lib/validation.php
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/lib/validation.php
</span><span style="color: #000000;background-color: #ddffdd">+++ b/lib/validation.php
</span><span style="color: #aaaaaa">@@ -252,11 +252,22 @@ function validAddress($address)
</span>     }
 }
 
<span style="color: #000000;background-color: #ddffdd">+function validPostcode($postcode)
+{
+    $postcode = sanitizePostcode($postcode);
+    if (!preg_match('/^[A-Z]{1,2}[0-9]{1,2}[A-Z]{0,1} [0-9][A-Z]{2}$/', $postcode)) {
+        return false;
+    } else {
+        return $postcode;
+    }
+
+}
+
</span> function validPhone($phone)
 {
     global $error;
     $phone = sanitizePhone($phone);
<span style="color: #000000;background-color: #ffdddd">-    if (!preg_match("/^\+?[0-9-]+$/", $phone)) {
</span><span style="color: #000000;background-color: #ddffdd">+    if (!preg_match("/^\+?[0-9-]{10,}$/", $phone)) {
</span>         $error = "Must be all numbers";
         return false;
     }
<span style="color: #aaaaaa">@@ -266,7 +277,7 @@ function validPhone($phone)
</span> function validSignupEmail($email)
 {
     global $error;
<span style="color: #000000;background-color: #ffdddd">-    if (preg_match('/@sucs\.org$/', $email)) {
</span><span style="color: #000000;background-color: #ddffdd">+    if (preg_match('/@sucs\.$/', $email)) {
</span>         $error = "SUCS email addresses are not allowed";
         return false;
     } elseif (!validEmail($email)) {
</code></pre>

<br>
</li>
<li id='diff-4'>
<a href='https://projects.sucs.org/sucssite/sucs-site/compare/a87d2d7631f6bd6e3ffffb0fdea398e2f0df31f4...b4a9420ca420b07057df06904623ac939fd45c49#diff-4'>
<strong>
lib/validationData.php
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/lib/validationData.php
</span><span style="color: #000000;background-color: #ddffdd">+++ b/lib/validationData.php
</span><span style="color: #aaaaaa">@@ -1,5 +1,5 @@
</span> <?
-// lookup real names from sid's useing campus ldap
<span style="color: #000000;background-color: #ddffdd">+// lookup real names from sid's using campus ldap
</span> function lookupSID($sid)
 {
     $ds = ldap_connect("ccs-suld1.swan.ac.uk");
<span style="color: #aaaaaa">@@ -12,7 +12,7 @@ function lookupSID($sid)
</span>     return ucwords(strtolower($info[0]['givenname'][0] . " " . $info[0]['sn'][0]));
 }
 
-// lookup addresses from postcodes useing the univeritys website
<span style="color: #000000;background-color: #ddffdd">+// lookup addresses from postcodes using the university's website
</span> function lookup_postcode($postcode)
 {
 
<span style="color: #aaaaaa">@@ -21,9 +21,8 @@ function lookup_postcode($postcode)
</span>     $url = "http://paf.sucs.org/?apikey=$apikey&postcode=" . rawurlencode($postcode);
 
     $req = curl_init($url);
<span style="color: #000000;background-color: #ffdddd">-    $page = curl_exec($req);
</span><span style="color: #000000;background-color: #ddffdd">+    curl_exec($req);
</span>     curl_close($req);
-
 }
 
 ?>
</code></pre>

<br>
</li>

</div>
<div class='footer' style='margin-top: 10px;'>
<p>

<br>
<a href="https://projects.sucs.org/sucssite/sucs-site/compare/a87d2d7631f6bd6e3ffffb0fdea398e2f0df31f4...b4a9420ca420b07057df06904623ac939fd45c49">View it on GitLab</a>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":["merge_requests","issues","commit"],"url":"https://projects.sucs.org/sucssite/sucs-site/compare/a87d2d7631f6bd6e3ffffb0fdea398e2f0df31f4...b4a9420ca420b07057df06904623ac939fd45c49"}}</script>
</p>
</div>
</body>
</html>