· 8 years ago · Jun 16, 2018, 07:44 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
106http://sandbox.onlinephpfunctions.com/code/4737d56f760c9fb9abb4ef72f4a71f0e316095a5
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
117 move_uploaded_file($_FILES['upload_file']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/tmp_dir/'.$_FILES['upload_file']['name']);
118
119 $base = basename($file_name);
120 $extension = strtolower(pathinfo($base, PATHINFO_EXTENSION));
121 $allowed_extensions = array("jpg", "jpeg", "png");
122
123 if(in_array($extension, $allowed_extensions)) {
124 $from = $_POST['email'];
125 $toEmail = "testdev897@gmail.com";
126 $date = date('Y-m-d h:i:sa');
127 $subject = "Problem/$counter/$date";
128 $message = $_POST['email']; //dodać w formularzu text area i zmienic tu na comment
129
130 //move_uploaded_file($_FILES['upload_file']['tmp_name'], '/htdocs/tmp_dir/'.$_FILES['upload_file']['name']);
131 //$file = $temp_name;
132 //dodany dump zmiennej która powinna zawierać plik
133 //var_dump($_FILES['upload_file']['tmp_name']);
134 //die();
135
136 $content = chunk_split(base64_encode(file_get_contents($file_name)));
137 $uid = md5(uniqid(time()));
138
139 $header = "From: ".$from."\r\n";
140 $header .= "Reply-To: ".$toEmail."\r\n";
141 $header .= "MIME-Version: 1.0\r\n";
142 $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
143 $header .= "Mime multipart message.\r\n";
144
145 $header .= "--".$uid."\r\n";
146 $header .= "Content-Type:text/plain; charset=iso-8859-1\r\n";
147 $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
148 $header .= $message."\r\n\r\n";
149
150 $header .= "--".$uid."\r\n";
151 $header .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n";
152 $header .= "Content-Transfer-Encoding: base64\r\n";
153 $header .= "Content-Disposition: attachement; filename=\"".$file_name."\"\r\n\r\n";
154 $header .= $content."\r\n\r\n";
155
156 if (mail($toEmail, $subject, "", $header)) {
157 echo "Mail został wysłany.";
158 $query = "UPDATE mail_counter SET counter = '++$counter'";
159 $dbconn->query($query);
160 } else {
161 echo "Nie udało się wysłać maila.";
162 }
163 exit;
164
165 } else {
166 echo $formErrors["upload_file"]["error"];
167 }
168
169 } else {
170 echo $formErrors["upload_file"]["error3"];
171 }
172 }
173
174?>
175<html>
176 <head>
177 <title>HelpDesk - wyślij problem</title>
178 <style>
179 .error {
180 color: #FF0000;
181 }
182 .mailmsg {
183 color: #00ddff;
184 }
185 </style>
186 </head>
187<body>
188 <p><span class="error">* wymagane pola</span></p>
189
190 <form method="post" action="helpdesk_forum.php" enctype="multipart/form-data">
191 <label for="email">Email:<span class="error">*</span></label>
192 <input type="text" name="email"><br>
193 <label for="upload_file">Wybierz plik do podesłania:</label><br>
194 <input type="file" name="upload_file">
195 <input type="submit" name="submit" value="Wyślij">
196 </form>
197
198</body>
199</html>