Здравствуйте, делаю загрузку аватара. Всё работало, решил сделать через popup окно с помощью js и ajax. Всё почти работает, php не ловит POST запрос.
Помогите пожалуйста
Код html:
HTML5 |
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
| <?php
require('engine/auth/db.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style/style.css">
<link rel="stylesheet" type="text/css" href="style/profile.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#load_avatars').submit(function(e){
//отменяем стандартное действие при отправке формы
e.preventDefault();
$("body div.lc_popup .errors").remove(); // удаляем ошибки перед отправкой
//берем из формы метод передачи данных
var m_method=$(this).attr('method');
//получаем адрес скрипта на сервере, куда нужно отправить форму
var m_action=$(this).attr('action');
//получаем данные, введенные пользователем в формате input1=value1&input2=value2...,
//то есть в стандартном формате передачи данных формы
var m_data=$(this).serialize();
$.ajax({
type: m_method,
url: m_action,
data: m_data,
success: function(result){
$("body div.lc_popup").append(result);
}
});
});
//script for popups
$('a.change_a').click(function () {
$('div.'+$(this).attr("rel")).fadeIn(500);
$("body").append("<div id='overlay'></div>");
$('#overlay').show().css({'filter' : 'alpha(opacity=80)'});
return false;
});
$('a.close').click(function () {
$(this).parent().fadeOut(100);
$('#overlay').remove('#overlay');
$("body div.lc_popup .errors").remove(); // удаляем ошибки при нажатии крестика
return false;
});
});
</script>
<title>Личный Кабинет</title>
</head>
<body>
<div class="lc">
<div class="lc_header">
<div class="lc_foto thumbs"><?php
$data = R::load('users', $_SESSION['logged_user']->id);
if ($data['avatar'] == 0) $Avatar = 0;
else $Avatar = $data['avatar'].'/'.$data['id'];
echo '<div class="caption">
<span class="title"><a class="change_a" rel="lc_popup" href="#">Сменить аватар</a></span>
</div>' ;
echo '<img src="engine/profile/avatar/'.$Avatar.'.jpg" width="200" height="200" alt="Аватар" align="left">'; ?>
</div></div>
<div class="lc_gcontent">
<div class="lc_content">
<div class="lc_inf">
<div class="nick">Ваш логин: <?php echo $_SESSION['logged_user']->login; ?> </div>
<div class="nick">Дата регистрации: <?php
$data = R::load('users', $_SESSION['logged_user']->id);
echo $data['dates'];
?> </div>
<?php
$data = R::load('users', $_SESSION['logged_user']->id);
echo $data['email'];
?>
</div>
</div>
</div>
</div>
</div>
<div class="lc_popup">
<a class="close" href="#">Close</a>
<div class="load_avatar">
<form method="post" action="engine/profile/avatar.php" id="load_avatars">
<input type="file" name="avatar">
<input type="submit" name="enter" value="Сохранить">
</div>
</form>
</div>
</body>
</html> |
|
А вот сам php скрипт
PHP |
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
| <?php
require('db.php');
if ($_POST['enter'])
{
$data = R::load('users', $_SESSION['logged_user']->id);
if ($_FILES['avatar']['tmp_name']) {
if ($_FILES['avatar']['type'] != 'image/jpeg')
{
echo '<div class="errors">Не верный тип изображения</div>';
}
if ($_FILES['avatar']['size'] > 200000){
echo '<div class="errors">Размер изображения слишком большой</div>';
}
$Image = imagecreatefromjpeg($_FILES['avatar']['tmp_name']);
$Size = getimagesize($_FILES['avatar']['tmp_name']);
$Tmp = imagecreatetruecolor(200, 200);
imagecopyresampled($Tmp, $Image, 0, 0, 0, 0, 200, 200, $Size[0], $Size[1]);
if ($data["avatar"] == 0) {
$Files = glob('avatar/*', GLOB_ONLYDIR);
$Num = 0;
foreach($Files as $num => $Dir) {
$Num ++;
$Count = sizeof(glob($Dir.'/*.*'));
if ($Count < 250) {
$data["avatar"] = end(explode('/',$Dir));
$av = R::load('users', $_SESSION['logged_user']->id);
$av->avatar = $data['avatar'] ;
R::store($av);
}
}
}
if (!empty($data['avatar'])) {
$Download = 'avatar/'.$data["avatar"].'/'.$data["id"];
imagejpeg($Tmp, $Download.'.jpg');
}
imagedestroy($Image);
imagedestroy($Tmp);
clearstatcache(); // очищаем кэш
header('Location: /alimius/profile.php'); // переходим мгновенно на профиль, чтобы аватар обновился, умнее ничего не придумал)
}
}
?> |
|
Добавлено через 25 минут
Забыл добавить enctype="multipart/form-data"
<form method="post" action="engine/profile/avatar.php" id="load_avatars">
Сейчас он выглядит
<form method="post" action="engine/profile/avatar.php" enctype="multipart/form-data" id="load_avatars">
Но всё равно не работает