add_image.php
6.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?php
/*
if(!$_GET['i'] AND !$_GET['h']) {
header("Location:etusivu");
} else {
echo "id: " .$_GET['i'] . "<br>";
echo "hash: " . $_GET['h'] . "<br>";
}
*/
$maxkoko = 10485760; // korkein tiedoston koko tavuina
if ($_POST["i"] && $_POST["h"]) {
if ( $_POST["i"]<0 || !is_numeric($_POST["i"]) ) die("Malformed ID");
$id = $_POST["i"];
$sha1 = sha1("A4VJoyfVecto10nbGCCE41".$id."H3yvFDAqramaxGYn7mc");
if ($sha1 != $_POST["h"]) die("Malformed hash");
$tiedosto = $_FILES["f"];
if (isset($tiedosto)) {
$siirtoeroorit = array("", "Liian iso tiedosto", "Liian iso tiedosto",
"Tiedosto siirtyi vain osittain", "Tiedosto ei siirtynyt", "Palvelimen sisäinen virhe");
if ($tiedosto["size"] > $maxkoko) {
echo "<p>Tiedosto {$tiedosto["name"]} on liian suuri! Muista maksimikoko, " .
round($maxkoko / 1048576, 1) . "Mt.</p>\n";
}
elseif ($tiedosto["error"] != 0) {
echo "<p>Siirrossa tapahtui virhe! (" . $siirtoeroorit[$tiedosto["error"]] . ")</p>\n";
}
elseif ($tiedosto["tmp_name"] == "") {
echo "<p>Et valinnut tiedostoa? <a href=\"image.php?i=$id&h=$h\">Takaisin</a></p>\n";
}
elseif (is_uploaded_file($tiedosto["tmp_name"])) {
list($width, $height) = getimagesize($tiedosto["tmp_name"]);
$old = imagecreatefromjpeg($tiedosto["tmp_name"]);
if (!$old) die("Sopimaton JPEG!");
$wid = imagesx($old);
$hei = imagesy($old);
$miniw = 280;
$minih = 410;
$thumb = 4; // neljasosa
$new = imagecreatetruecolor($miniw, $minih);
if ($wid / $hei > $miniw / $minih)
{
$y=0;
$x = ($wid - $hei / $minih * $miniw) / 2;
$wid = $hei / $minih * $miniw;
}
else
{
$x=0;
$y = ($hei - $wid / $miniw * $minih) / 2;
$hei = $wid / $miniw * $minih;
}
imagecopyresampled($new, $old, 0, 0, $x, $y, $miniw, $minih, $wid, $hei);
imagepng($new, $tiedosto["tmp_name"]);
$fullpic = file_get_contents($tiedosto["tmp_name"]);
$halfpic = imagecreatetruecolor($miniw/$thumb, $minih/$thumb);
imagecopyresampled($halfpic, $new, 0, 0, 0, 0, $miniw/$thumb, $minih/$thumb, $miniw, $minih);
ob_start();
imagepng($halfpic);
$halfpic2 = ob_get_contents();
ob_end_clean();
$fullpic = base64_encode($fullpic);
$data = array( 'IMAGEDATA' => $fullpic,
'MIMETYPE' => 'image/png',
'DEFAULTIMAGE' => '1'
);
$hasimg = $db->fetchOne("SELECT count(ID) FROM USERIMAGE WHERE OWNER_ID = '$id'");
if($hasimg != 0) {
$db->update('USERIMAGE', $data, "OWNER_ID = $id");
} else {
$data['OWNER_ID'] = $id;
$db->insert('USERIMAGE', $data, "OWNER_ID = $id");
}
header("Location: /index.php?pid=addimg&i=$id&h=$sha1");
}
}
}
if ( $_GET["i"]<0 || !is_numeric($_GET["i"]) ) die("Malformed ID");
$id = $_GET["i"];
$sha1 = sha1("A4VJoyfVecto10nbGCCE41".$id."H3yvFDAqramaxGYn7mc");
if ($sha1 != $_GET["h"]) die("Malformed hash");
if ($_GET["a"] == "sendurl") {
$email = $db->fetchOne("SELECT EMAIL FROM USER WHERE ID = '$id'");
if($email) {
mail($email,
"Insomnia XI -kuvasi",
"Hei,\r\nsinua on pyydetty tallentamaan tai\r\n".
"vaihtamaan Insomnia X-tapahtuman kulkukorttiin tuleva kuva.\r\n".
"Kuvan voi vaihtaa osoitteesta \r\n".
"http://kauppa.insomnia.fi/index.php?pid=addimg&i=$id&h=$sha1\r\n".
"Tarkastathan samalla tietosi ja tarvittaessa muutat ne oikeiksi / pyydät ryhmänjohtajaasi muuttamaan.".
"\r\n\r\n".
"--\r\n".
"Terveisin,\r\n".
"Insomnia X organisaatio",
"From: laskutus@insomnia.fi\r\n".
"Reply-To: laskutus@insomnia.fi\r\n".
"Content-Type: text/plain; charset=UTF-8\r\n".
"Content-Transfer-Encoding: 8bit"
);
$asia .= "Viesti lähetetty osoitteeseen $email. <a href=\"/index.php?pid=details\">Takaisin listaukseen</a>";
} else {
$asia .= "Sähköpostiosoitetta ei ole määritetty";
}
} elseif ($_GET["a"] == "redirect") { // selain ei lähettäis uudelleen
header("Location: image.php?i=$id&h=$sha1&a=up");
} elseif ($_GET["a"] == "show") { // näytetään kuva
$row = $db->fetchRow("SELECT ID, IMAGEDATA, MIMETYPE, DESCRIPTION, NAME, DEFAULTIMAGE, OWNER_ID FROM USERIMAGE WHERE OWNER_ID = '$id'");
if(empty($row['IMAGEDATA'])) {
die('12765b - ei kuvaa');
}
header('Content-type: ' . $row['MIMETYPE']);
echo base64_decode($row['IMAGEDATA']);
# die();
} else {
$hlo = $db->fetchRow("SELECT NAME, NICK, EMAIL, ADDRESS, ZIP, TOWN, PHONE, BIRTHYEAR, TYPE FROM USER WHERE ID = '$id'");
$kuvadata = $db->fetchOne("SELECT COUNT(ID) FROM USERIMAGE WHERE OWNER_ID = '$id'");
$asia .= "<h3>Kuvan vaihtaminen</h3>";
if ($_GET["a"] == "up") echo "<p><b>Tiedoston lähettäminen onnistui!</b></p>";
$asia .= ($kuvadata != 0 ? "<img src=\"/index.php?pid=addimg&i=$id&h=$sha1\" />" : " ");
$asia .= "
<table style=\"text-align:left\">
<tr><th>Nimi: </th><td>".$hlo['NAME']."</td></tr>
<tr><th>Nick: </th><td>".$hlo['NICK']."</td></tr>
<tr><th>Sähköposti: </th><td>".$hlo['EMAIL']."</td></tr>
<tr><th valign=\"top\">Osoite: </th><td>".$hlo['ADDRESS']."<br />".$hlo['ZIP']." " .$hlo['TOWN']."</td></tr>
<tr><th>Puhelin: </th><td>".$hlo['PHONE']."</td></tr>
<tr><th align=\"top\">Kuva </th><td>".
($kuvadata != 0 ? "
<a href=\"/index.php?pid=addimg&i=$id&h=$sha1&a=show\" style=\"color:blue\">
<img style=\"border: 2px solid black\" src=\"/index.php?pid=addimg&i=$id&h=$sha1&a=show\" width=70 height=102 >
</a>." : "<b>Ei</b>")."</td></tr>
</table>
<hr />
<h3>Tallenna uusi kuva</h3>
".($i["id"] != '' ? "<p><i>Huomaathan, että olet lähettänyt jo kuvasi. Jos lähetät uuden kuvan, vanha kuvasi pyyhkiytyy pois.</i></p>" : '')."
<form action=\"/index.php?pid=addimg\" method=\"post\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"h\" value=\"{$sha1}\" />
<input type=\"hidden\" name=\"i\" value=\"{$id}\" />
<input type=\"file\" name=\"f\" />
<input type=\"submit\" value=\"Tallenna kuva\" />
</form>
<a href=\"http://www.poliisi.fi/poliisi/home.nsf/pages/43B5BDB1FCDD358CC22570180036A9C0?opendocument\" target=\"_blank\">Kuvaohje</a><br><br>
Suositeltu kuvan koko on 280x410 pikseliä. Kuva rajataan tarvittaessa oikean kokoiseksi. <br>
Vain <b>alle 1MB kokoiset JPEG-kuvat</b> kelpaavat.
";
} // a=show else
?>