Explorar o código

updated form with validation of email and files

bufon2211 %!s(int64=6) %!d(string=hai) anos
pai
achega
8b1065552a
Modificáronse 3 ficheiros con 107 adicións e 0 borrados
  1. 41 0
      lib/CallbackForm.php
  2. 51 0
      lib/CallbackFormEmailFail.php
  3. 15 0
      lib/FormAbstract.php

+ 41 - 0
lib/CallbackForm.php

@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: artem
+ * Date: 18.05.17
+ * Time: 19:30
+ */
+
+require_once('FormAbstract.php');
+
+class CallbackForm extends FormAbstract
+{
+    public $name;
+    public $phone;
+
+    public function __construct(string $name, string $phone)
+    {
+        $this->name = $name;
+        $this->phone = $phone;
+    }
+
+    public function validate(): bool
+    {
+        if (empty($this->name) || strlen($this->name) > 20 || strlen($this->name) < 2) {
+            return false;
+        }
+        if (empty($this->phone) || strlen($this->phone) < 7 || strlen($this->phone) > 15) {
+            return false;
+        }
+
+        return true;
+    }
+
+    public function send()
+    {
+        echo 'Name: ' . $this->name;
+        echo '<br>';
+        echo 'Phone: ' . $this->phone;
+    }
+}

+ 51 - 0
lib/CallbackFormEmailFail.php

@@ -0,0 +1,51 @@
+<?php
+
+
+require_once('CallbackForm.php');
+
+class CallbackFormEmailFail extends CallbackForm
+{
+    public $email;
+    public $uploadFile;
+
+    public function __construct(string $name, string $phone, string $email, array $uploadFile)
+    {
+        parent:: __construct($name, $phone);
+        $this->email = $email;
+        $this->uploadFile = $uploadFile;
+    }
+
+    public function validate(): bool
+    {
+        if ($this->email && !filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
+            return false;
+        }
+        if (!empty($this->uploadFile['name']) &&
+            (mime_content_type($this->uploadFile['type']) !== 'application/pdf' || $this->uploadFile['size'] > 5242880)) {
+            return false;
+        }
+
+        return parent::validate();
+    }
+
+    public function loadingFile(): bool
+    {
+        $loadDirectory = dirname(__DIR__, 1) . '/files/';
+        if (!file_exists($loadDirectory)) {
+            mkdir($loadDirectory);
+        }
+        if (!move_uploaded_file($this->uploadFile['tmp_name'], $loadDirectory . $this->uploadFile['name'])) {
+            return false;
+        }
+        return true;
+    }
+
+    public function send()
+    {
+        parent::send();
+        echo '<br>';
+        echo 'Email: ' . $this->email;
+        echo '<br>';
+        echo 'Файл ' . $this->uploadFile['name'] . 'успешно загружен';
+    }
+}

+ 15 - 0
lib/FormAbstract.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: artem
+ * Date: 18.05.17
+ * Time: 19:28
+ */
+
+abstract class FormAbstract
+{
+    abstract public function validate();
+
+    abstract public function send();
+}