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