Untitled

 avatar
unknown
php
2 years ago
5.9 kB
8
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...