Untitled
unknown
php
2 years ago
5.9 kB
9
Indexable
<?php
/*******w********
Assignment 2
Name: Ian Chatelain
Date: Sept. 15, 2023
Description: Input Validation
****************/
enum ProvinceCodes: string {
case AB = 'AB'; // Alberta
case BC = 'BC'; // British Columbia
case MB = 'MB'; // Manitoba
case NB = 'NB'; // New Brunswick
case NL = 'NL'; // Newfoundland and Labrador
case NS = 'NS'; // Nova Scotia
case ON = 'ON'; // Ontario
case PE = 'PE'; // Prince Edward Island
case QC = 'QC'; // Quebec
case SK = 'SK'; // Saskatchewan
case NT = 'NT'; // Northwest Territories
case NU = 'NU'; // Nunavut
case YT = 'YT'; // Yukon
}
class ValidateField {
protected $sanitizedData;
protected bool $isValid;
protected string $fieldName;
protected bool $required;
public function __construct(string $fieldName){
$this->fieldName = $fieldName;
}
public function getSanitizedData(){
return $this->sanitizedData;
}
public function getIsValid(){
return $this->isValid;
}
}
class ValidateQuantityField extends ValidateField {
public function __construct($fieldName){
parent::__construct($fieldName);
$this->required = false;
$this->isValid = false;
$this->setData();
$this->setIsValid();
}
public function getIsValid(){
return $this->isValid;
}
private function setIsValid(){
if(is_int($this->sanitizedData)){
$this->isValid = true;
}
}
private function setData(){
$this->sanitizedData = filter_input(INPUT_POST, $this->fieldName, FILTER_SANITIZE_NUMBER_INT);
}
}
// class ValidateEmptyField extends ValidateField {
// public function __construct($name){
// parent::__construct($name);
// $this->required = true;
// $this->sanitizedData = filter_input(INPUT_POST, $name, FILTER_SANITIZE_NUMBER_INT);
// }
// }
$errors = [];
$fieldObjects = [
// Product quantities
'qty1' => new ValidateQuantityField($_POST['qty1']),
'qty2' => new ValidateQuantityField($_POST['qty2']),
'qty3' => new ValidateQuantityField($_POST['qty3']),
'qty4' => new ValidateQuantityField($_POST['qty4']),
'qty5' => new ValidateQuantityField($_POST['qty5']),
// // Shipping information
// 'fullname',
// 'address',
// 'city',
// 'province',
// 'postal',
// 'email',
// // Payment information
// 'cardtype',
// 'cardname',
// 'month',
// 'year',
// 'cardnumber'
];
function validateFields(){
global $fieldObjects;
foreach($fieldObjects as $fields => $object){
if(!$object->getIsValid()){
$errors[$fields] = $object;
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="thankyou.css">
<title>Thanks for your order!</title>
</head>
<body>
<?php if(!validateFields()): ?>
<table>
<tbody>
<tr>
<td colspan="4">
<h3>Address Information</h3>
</td>
</tr>
<tr>
<td class="alignright">
<span class="bold">Address:</span>
</td>
<td></td>
<td class="alignright">
<span class="bold">City:</span>
</td>
<td></td>
</tr>
<tr>
<td class="alignright">
<span class="bold">Province:</span>
</td>
<td></td>
<td class="alignright">
<span class="bold">Postal Code:</span>
</td>
<td></td>
</tr>
<tr>
<td colspan="2" class="alignright">
<span class="bold">Email:</span>
</td>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td colspan="3">
<h3>Order Information</h3>
</td>
</tr>
<tr>
<td><span class="bold">Quantity</span></td>
<td><span class="bold">Description</span></td>
<td><span class="bold">Cost</span></td>
</tr>
<tr>
<td></td>
<td></td>
<td class="alignright"></td>
</tr>
<tr>
<td colspan="2" class="alignright"><span class="bold">Totals</span></td>
<td class="alignright">
<span class="bold">$ 446497.65</span>
</td>
</tr>
</tbody>
</table>
<?php else: ?>
<table>
<tbody>
<tr>
<td>
<h1>The following fields were invalid:</h1>
</td>
</tr>
<tr>
<td>
<ul>
<?php print_r($fieldObjects) ?>
</ul>
</td>
</tr>
</tbody>
</table>
<?php endif ?>
</body>
</html>Editor is loading...