· 8 years ago · Jun 16, 2018, 05:50 PM
1<!DOCTYPE HTML>
2
3
4<?php
5/*
61. Po kliknięciu wyślij ma leciec mail do mnie.
72. Schemat tematu wiadomości np. Problem/$licznik/$date
8gdzie $licznik to będzie zmienna zwiększana po każdym wysłaniu maila
93. Dodawanie załącznika/pliku graficznego do formularza i wysyłanie go potem.
104. Walidacja żeby głupot nie wpisywali.
115. Zapisywanie do bazy danych wysłanych mailem informacji.
126. Rozmiar pliku nie większy niż 2MB.
13*/
14
15/*
16tabela w bazie
17CREATE TABLE IF NOT EXISTS `mail_counter` (
18 `counter` int(255) NOT NULL
19);
20
21*/
22
23 try{
24 $dbconn = new PDO('mysql:host=localhost;dbname=test', 'root', 'epkzpakf');
25 } catch (PDOException $e){
26 print "Błąd połączenia z bazą: " . $e->getMessage() . "<br/>";
27 die();
28 }
29 $query = "SELECT * FROM mail_counter";
30 $row = $dbconn->query($query);
31 //$mailCount = $row["counter"]; czy to jest potrzebne do czegoÅ›?
32
33
34 $formErrors = array(
35 "name" => array(
36 "error" => "Należy podać imię.",
37 "error2" => "Należy wpisywać litery."
38 ),
39 "surname" => array(
40 "error" => "Należy podać nazwisko.",
41 "error2" => "Należy wpisywać litery."
42 ),
43 "company" => array(
44 "error" => "Należy podać nazwę firmy.",
45 "error2" => "Należy wpisywać litery."
46 ),
47 "email" => array(
48 "error" => "Należy podać email kontaktowy.",
49 "error2" => "Należy podać poprawny email. Będzie użyty do kontaktu zwrotnego."
50 ),
51 "comment" => array(
52 "error" => "Należy opisać problem.",
53 ),
54 "upload_file" => array(
55 "error" => "Dozwolone sÄ… tylko obrazki w formatach JPG, PNG, JPEG.",
56 "error2" => "Plik jest większy niż 2MB.",
57 "error3" => "Wystąpił problem z dołączeniem pliku:"
58 )
59 );
60
61/* #usuwanie niepotrzebnych znaków w razie jakby miały się pojawić
62 function prepare_data($form_data) {
63 $form_data = trim($form_data); #skasowanie białych znaków
64 $form_data = stripslashes($form_data); #kasowanie backslashy
65 return $form_data;
66 }
67
68 //do wyrzucenia niepotrzebne zmienne
69 $nameErr = $surnameErr = $companyErr = $emailErr = $commentErr = $upload_fileErr = "";
70 $name = $surname = $company = $email = $comment = $upload_file = $mailMsg = $headers = $body = $content = "";
71 $counter = 0;
72
73
74 if (isset($_POST["name"])) {
75 $name = prepare_data($_POST["name"]);
76 if (!preg_match("/^[a-zA-Z]$/", $name)){
77 $formErrors["name"]["error2"];
78 }
79 }
80
81 if (isset($_POST["surname"])) {
82 $surname = prepare_data($_POST["surname"]);
83 if (!preg_match("/^[a-zA-Z]$/", $surname)){
84 $formErrors["surname"]["error2"];
85 }
86 }
87
88 if (isset($_POST["company"])) {
89 $company = prepare_data($_POST["company"]);
90 if (!preg_match("/^[a-zA-Z]$/", $company)){
91 $formErrors["company"]["error2"];
92 }
93 }
94
95 if (isset($_POST["email"])) {
96 $email = prepare_data($_POST["email"]);
97 if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
98 $formErrors["email"]["error2"];
99 }
100 }
101
102 if (isset($_POST["comment"])) {
103 $comment = prepare_data($_POST["comment"]);
104 }
105
106
107*/
108
109 if (isset($_POST) && !empty($_POST)){
110 $counter = 0;
111 $file_name = $temp_name = $file_type = "";
112 if(!empty($_FILES['upload_file']['name'])) {
113 $file_name = $_FILES['upload_file']['name'];
114 $temp_name = $_FILES['upload_file']['tmp_name'];
115 $file_type = $_FILES['upload_file']['type'];
116 //$upload_folder = "./tmp_dir/";
117
118 move_uploaded_file($_FILES['upload_file']['tmp_name'], "tmp_dir/".$_FILES['upload_file']['name']);
119
120 $base = basename($file_name);
121 $extension = strtolower(pathinfo($base, PATHINFO_EXTENSION));
122 $allowed_extensions = array("jpg", "jpeg", "png");
123
124 if(in_array($extension, $allowed_extensions)) {
125 $from = $_POST['email'];
126 $toEmail = "testdev897@gmail.com";
127 $date = date('Y-m-d h:i:sa');
128 $subject = "Problem/$counter/$date";
129 $message = $_POST['email']; //dodać w formularzu text area i zmienic tu na comment
130
131 //$file = $temp_name;
132 $content = chunk_split(base64_encode(file_get_contents($file_name)));
133 $uid = md5(uniqid(time()));
134
135 $header = "From: ".$from."\r\n";
136 $header .= "Reply-To: ".$toEmail."\r\n";
137 $header .= "MIME-Version: 1.0\r\n";
138 $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
139 $header .= "Mime multipart message.\r\n";
140
141 $header .= "--".$uid."\r\n";
142 $header .= "Content-Type:text/plain; charset=iso-8859-1\r\n";
143 $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
144 $header .= $message."\r\n\r\n";
145
146 $header .= "--".$uid."\r\n";
147 $header .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n";
148 $header .= "Content-Transfer-Encoding: base64\r\n";
149 $header .= "Content-Disposition: attachement; filename=\"".$file_name."\"\r\n\r\n";
150 $header .= $content."\r\n\r\n";
151
152 if (mail($toEmail, $subject, "", $header)) {
153 echo "Mail został wysłany.";
154 $query = "UPDATE mail_counter SET counter = ++$counter";
155 $dbconn->query($query);
156 } else {
157 echo "Nie udało się wysłać maila.";
158 }
159 exit;
160
161 } else {
162 echo $formErrors["upload_file"]["error"];
163 }
164
165 } else {
166 echo $formErrors["upload_file"]["error3"];
167 }
168 }
169
170?>
171<html>
172 <head>
173 <title>HelpDesk - wyślij problem</title>
174 <style>
175 .error {
176 color: #FF0000;
177 }
178 .mailmsg {
179 color: #00ddff;
180 }
181 </style>
182 </head>
183<body>
184 <p><span class="error">* wymagane pola</span></p>
185
186 <form method="post" action="helpdesk_forum.php" enctype="multipart/form-data">
187 <label for="email">Email:<span class="error">*</span></label>
188 <input type="text" name="email"><br>
189 <label for="upload_file">Wybierz plik do podesłania:</label><br>
190 <input type="file" name="upload_file">
191 <input type="submit" name="submit" value="Wyślij">
192 </form>
193
194</body>
195</html>