0

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 = &quot;SELECT `avatar` FROM `zprodaccountservices` WHERE `zprodaccountservices`.`login` = ?&quot;;
            $stmt = $connect-&gt;prepare($query);
            $stmt-&gt;bind_param(&quot;s&quot;, $login);
            $stmt-&gt;execute();

            if ($row = $stmt-&gt;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, &quot;SELECT * FROM `zprodaccountservices` WHERE `login` = '$login'&quot;);
        if (mysqli_num_rows($check_login) &gt; 0) {
            $_SESSION['msg'] = 'Данный логин уже существует, введите другой!';
            header('Location: ../index.php');
        } else {

            $stmt = $connect-&gt;prepare(&quot;INSERT INTO `zprodaccountservices` (`id`, `login`, `email`, `avatar`, `password`, `password2`) VALUES (NULL, ?, ?, ?, ?, ?)&quot;);
            $stmt-&gt;bind_param(&quot;sssss&quot;, $login, $email, $image, $password, $password2);
            $stmt-&gt;execute();
            if (!$stmt-&gt;execute()) {
                $_SESSION['msg'] = &quot;Ошибка при выполнении запроса: &quot; . $stmt-&gt;error;
                header('Location: ../register.php');
            }
            $stmt = $connect-&gt;prepare(&quot;INSERT INTO `zepics` (`user_id`, `login`, `cb5f07b1bb794a5e898656d411fc0467`, `639ec7bf2a974488a15aa864e877479d`, `cc2bfaf5ff3d424494e5fb2dd99e50fc`, `bdf627f939c9498887f39851e7615ca7`) VALUES (NULL, ?, 'false', 'false', 'false', 'false')&quot;);
            $stmt-&gt;bind_param(&quot;s&quot;, $login);
            $stmt-&gt;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>

        &lt;/div&gt;
        &lt;button type=&quot;button&quot; onclick=&quot;accountdelete()&quot;&gt;Удалить аккаунт&lt;/button&gt;
        &lt;button type=&quot;button&quot; onclick=&quot;logout()&quot;&gt;Выход&lt;/button&gt;
        &lt;button type=&quot;button&quot; onclick=&quot;pass()&quot;&gt;Сменить пароль&lt;/button&gt;
        &lt;div class=&quot;profile-bottom&quot;&gt;
        &lt;p&gt;Ваш ID: &lt;?= $_SESSION['user']['id'] ?&gt;&lt;/p&gt;
        &lt;p&gt;Ваша почта: &lt;?= $_SESSION['user']['email'] ?&gt;&lt;/p&gt;
        &lt;/div&gt;     
    &lt;/div&gt;

&lt;/div&gt;

</body> </html>

при попытке вывести . '" class="profile-pic"> выводит значок повреждённого изображения.

Я пробовал спрашивать у AI. Помогало исправлять проблемы, но появлялись проблемы одни за другой. В итоге достиг того, что проблемы пропали, а аватарка не грузит

  • Так проблема с внесением в БД или выводом информации? – Алексей Шиманский Sep 02 '23 at 11:13
  • проблема и с тем, и тем. В базе данных в столбце avatar ничего нет. А изображение отображает в profile.php в качестве повреждённого –  Sep 02 '23 at 11:15
  • во-первых возьмите отладчик и пройдитесь по коду PHP и проследите что не так... (об отладке: https://ru.stackoverflow.com/a/701146/191482) . как минимум возможно что-то не так с переменной $image возможно выше в коде не попадает в условия для его формирования......во-вторых включите сообщения об ошибках https://ru.stackoverflow.com/a/701145/191482 ..возможно что-то они скажут....в-третьих - примера JS, который отправляет данные на сервер тут не представлено..и вообще той формы....возможно сама отправка сделана коряво...опять же надо смотреть в отладку PHP и в консоль разработчика для JS – Алексей Шиманский Sep 02 '23 at 11:23
  • Хорошо, попробую. По поводу JS, у меня его почти нет. Он нужен только для перехода по html кнопкам. Весь бэкэнд сделан на php –  Sep 02 '23 at 11:25
  • и кстати в коде нет base64_encode , а значит что обработка происходит только случая, если аватар есть в БД... и если есть - то почему-то декодированная версия записывается в $image...... код очень странный, видимо сгенерированный..... проще нормально адекватно заново написать имхо..... – Алексей Шиманский Sep 02 '23 at 11:33
  • Где в коде profile.php ваш $avatar объявлен? Видимо переменная должна содержать $avatar = $row['avatar']; из БД, хотя это не указано, как и то, что она хотя бы из сессии берётся... – Pashok Sep 02 '23 at 15:52

0 Answers0