signup.php
<?php
session_start();
require_once 'connect.php';
$login = $_POST['login'];
$password = $_POST['password'];
$email = $_POST['email'];
$password2 = $_POST['password2'];
$msg = isset($_SESSION['msg']) ? $_SESSION['msg'] : '';
if (preg_match('/[^\p{Latin}]/u', $login)) {
$_SESSION['msg'] = 'Логин содержит кириллицу. Напишите латинскими буквами';
header('Location ../register.php');
} else {
if (preg_match('/[^\p{Latin}]/u', $password)) {
$_SESSION['msg'] = 'Пароль содержит кириллицу. Напишите латинскими буквами';
header('Location: ../register.php');
} else {
if ($password === $password2) {
$path = 'uploads/' . time() . $_FILES['avatar']['name'];
if (!move_uploaded_file($_FILES['avatar']['tmp_name'], '../' . $path)) {
$msg = 'Ошибка при загрузке аватара';
header('Location: ../register.php');
}
$query = "SELECT `avatar` FROM `zprodaccountservices` WHERE `zprodaccountservices`.`login` = ?";
$stmt = $connect->prepare($query);
$stmt->bind_param("s", $login);
$stmt->execute();
if ($row = $stmt->fetch()) {
$avatar = $row['avatar'];
if (!is_null($avatar)) {
$imageData = base64_decode($avatar);
$image = imagecreatefromstring($imageData);
// Do something with the image
// For example, save it to a file
imagepng($image, $path);
// Remember to free memory allocated for the image
imagedestroy($image);
}
else {
$_SESSION['msg'] = 'Ошибка загрузки аватара';
header('Location: ../register.php');
}
}
$check_login = mysqli_query($connect, "SELECT * FROM `zprodaccountservices` WHERE `login` = '$login'");
if (mysqli_num_rows($check_login) > 0) {
$_SESSION['msg'] = 'Данный логин уже существует, введите другой!';
header('Location: ../index.php');
} else {
$stmt = $connect->prepare("INSERT INTO `zprodaccountservices` (`id`, `login`, `email`, `avatar`, `password`, `password2`) VALUES (NULL, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $login, $email, $image, $password, $password2);
$stmt->execute();
if (!$stmt->execute()) {
$_SESSION['msg'] = "Ошибка при выполнении запроса: " . $stmt->error;
header('Location: ../register.php');
}
$stmt = $connect->prepare("INSERT INTO `zepics` (`user_id`, `login`, `cb5f07b1bb794a5e898656d411fc0467`, `639ec7bf2a974488a15aa864e877479d`, `cc2bfaf5ff3d424494e5fb2dd99e50fc`, `bdf627f939c9498887f39851e7615ca7`) VALUES (NULL, ?, 'false', 'false', 'false', 'false')");
$stmt->bind_param("s", $login);
$stmt->execute();
header('Location: ../index.php');
}
} else {
$_SESSION['msg'] = 'Пароли не совпадают!';
header('Location: ../register.php');
}
}
}
?>
profile.php:
<?php
session_start();
if (!$_SESSION['user']) {
header('Location: /');
}
include 'vendor/signup.php';
$loginconfirm = $_SESSION['user']['login'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Z. PROD >> Профиль <?= $_SESSION['user']['login'] ?></title>
<link rel="stylesheet" href="assets/css/style.css">
<link rel="stylesheet" href="assets/css/profile-style.css">
<script src="buttonRedirect.js" defer></script>
</head>
<body>
<div class="container">
<div class="profile-box">
<h2>Z. Prod</h2>
<img src="data:image/jpeg;base64,' . <?= $avatar ?> . '" class="profile-pic">
<div class="main-info">
<p class="title"><?= $_SESSION['user']['title'] ?></p>
<h3 class="login"><?= $_SESSION['user']['login'] ?></h3>
</div>
<button type="button" onclick="accountdelete()">Удалить аккаунт</button>
<button type="button" onclick="logout()">Выход</button>
<button type="button" onclick="pass()">Сменить пароль</button>
<div class="profile-bottom">
<p>Ваш ID: <?= $_SESSION['user']['id'] ?></p>
<p>Ваша почта: <?= $_SESSION['user']['email'] ?></p>
</div>
</div>
</div>
</body>
</html>
при попытке вывести . '" class="profile-pic"> выводит значок повреждённого изображения.
Я пробовал спрашивать у AI. Помогало исправлять проблемы, но появлялись проблемы одни за другой. В итоге достиг того, что проблемы пропали, а аватарка не грузит
avatarничего нет. А изображение отображает в profile.php в качестве повреждённого – Sep 02 '23 at 11:15$imageвозможно выше в коде не попадает в условия для его формирования......во-вторых включите сообщения об ошибках https://ru.stackoverflow.com/a/701145/191482 ..возможно что-то они скажут....в-третьих - примера JS, который отправляет данные на сервер тут не представлено..и вообще той формы....возможно сама отправка сделана коряво...опять же надо смотреть в отладку PHP и в консоль разработчика для JS – Алексей Шиманский Sep 02 '23 at 11:23profile.phpваш$avatarобъявлен? Видимо переменная должна содержать$avatar = $row['avatar'];из БД, хотя это не указано, как и то, что она хотя бы из сессии берётся... – Pashok Sep 02 '23 at 15:52