Добавь при авторизации , выдаеться токен и подпись токена в переменой verficat_token . мне нужно  проверить на клиенте  мой ли токен или потдельный 

<?php 

// Подключение к базе данных
$dsn = 'mysql:host=localhost;dbname=u2812027_books;charset=utf8mb4';
$username = 'u2812027_mazhar';
$password = 'strongPasswordReg$@';
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];

$db = new PDO($dsn, $username, $password, $options);

// Получение данных из запроса
$input = json_decode(file_get_contents('php://input'), true);
$action = $input['action'] ?? null;

// Функция для хеширования пароля с использованием MD5
function hashPassword($password) {
    return md5($password);
}

// Функция для проверки пароля
function verifyPassword($password, $hash) {
    return md5($password) === $hash;
}

// Генерация токена
function generateToken($email) {
    return hash('sha256', $email . time());
}

if ($action === 'register') {
    $email = $input['email'];
    $password = hashPassword($input['password']);
    $login = $input['login'];

    // Проверка, существует ли пользователь
    $stmt = $db->prepare('SELECT * FROM users WHERE email = ?');
    $stmt->execute([$email]);
    if ($stmt->fetch()) {
        echo json_encode(['error' => 'Email already exists']);
        exit;
    }

    // Генерация кода подтверждения email
    $verf_email_code = '';
    for ($i = 0; $i < 5; $i++) {
        $verf_email_code .= mt_rand(0, 9);  // Генерация случайной цифры от 0 до 9
    }
    // Сохранение пользователя с кодом подтверждения
    $stmt = $db->prepare('INSERT INTO users (email, password, login, verf_email_code, verf_email) VALUES (?, ?, ?, ?, ?)');
    if ($stmt->execute([$email, $password, $login, $verf_email_code, false])) {
        // Отправка письма с подтверждением email
        $to = $email;
        $subject = 'Подтверждение Email';
        $confirmLink = "$verf_email_code";
        $message = "Для подтверждения вашего email введите код: $confirmLink";
        $headers = 'From: info@andreymazharov.ru' . "\r\n" .
                   'Reply-To: info@andreymazharov.ru' . "\r\n" .
                   'X-Mailer: PHP/' . phpversion();

        if (mail($to, $subject, $message, $headers)) {
            echo json_encode(['success' => 'User registered successfully. Подтвердите ваш email.']);
        } else {
            echo json_encode(['error' => 'Ошибка при отправке письма подтверждения.']);
        }
    } else {
        echo json_encode(['error' => 'Registration failed']);
    }

} elseif ($action === 'confirm_email' && isset($input['token_email'])) {
    // Подтверждение email по токену
    $token_email = $input['token_email'];

    // Проверка токена
    $stmt = $db->prepare('SELECT * FROM users WHERE verf_email_code = ?');
    $stmt->execute([$token_email]);
    $user = $stmt->fetch();

    if ($user) {
        // Обновление состояния подтверждения email
        $stmt = $db->prepare('UPDATE users SET verf_email = true WHERE verf_email_code = ?');
        $stmt->execute([$token_email]);

        echo json_encode(['success' => 'Email успешно подтверждён.']);
    } else {
        echo json_encode(['error' => 'Неверный или устаревший токен подтверждения.']);
    }

} elseif ($action === 'login') {
    $email = $input['email'];
    $password = $input['password'];

    // Проверка email и пароля
    $stmt = $db->prepare('SELECT * FROM users WHERE email = ?');
    $stmt->execute([$email]);
    $user = $stmt->fetch();

    if ($user) {
        // Проверка, подтверждён ли email
        if ($user['verf_email'] == false) {
            echo json_encode(['error' => 'Email не подтверждён']);
        } else {
            // Проверка пароля
            if (verifyPassword($password, $user['password'])) {
                $token = generateToken($email);

                // Сохранение токена в базе данных
                $stmt = $db->prepare('UPDATE users SET token = ? WHERE email = ?');
                $stmt->execute([$token, $email]);

                echo json_encode(['token' => $token]);
            } else {
                echo json_encode(['error' => 'Неверный email или пароль']);
            }
        }
    } else {
        echo json_encode(['error' => 'Неверный email или пароль']);
    }

} elseif ($action === 'getBooks' && isset($input['token']))
 {
    $token = $input['token'];
    
    // Проверка валидности токена и извлечение email
    $stmt = $db->prepare('SELECT id FROM users WHERE token = ?');
    $stmt->execute([$token]);
    $user = $stmt->fetch();

    if (!$user) {
        echo json_encode(['error' => 'Invalid token']);
        exit;
    }

    // Сохранение email в переменную
    $paid_user_id = $user['id'];



    // Получение списка книг
    $stmt = $db->query('SELECT books.id AS book_id, books.title AS book_title, books.One, books.Three, books.Six, books.twelve, 
                           books.create_time AS book_create_time, books.svg_ico AS svg_ico,  
                           chapters.id AS chapter_id, chapters.title AS chapter_title, chapters.category, chapters.status, 
                           chapters.sort_order  
                    FROM books
                    LEFT JOIN chapters ON books.id = chapters.book_id');

    if (!$stmt) {
        die('Ошибка в запросе: ' . $db->errorInfo()[2]); // Проверка на ошибки
    }

    $books = [];
   while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
{
    $book_id = $row['book_id'];



// SQL-запрос для получения всех записей с указанным user_id и book_id
$sql = "SELECT status, date_create FROM payments WHERE user_id = :user_id AND book_id = :book_id";

// Подготовка запроса
$stmt_check = $db->prepare($sql);

// Выполнение запроса с подстановкой значений user_id и book_id
$stmt_check->execute(['user_id' => $paid_user_id, 'book_id' => $book_id]);

// Извлечение всех результатов
$results = $stmt_check->fetchAll();

$cp_status = 'false';
$paid_data = 'false';
$currentDate = date('d.m.Y');
// Проверка каждого результата
foreach ($results as $result) {
    if (isset($result['status']) && $result['status'] === 'paid') {
        // Преобразуем дату из базы данных и текущую дату в объекты DateTime
        $dbDate = DateTime::createFromFormat('d.m.Y', $result['date_create']);
        $nowDate = DateTime::createFromFormat('d.m.Y', $currentDate);

        // Сравниваем даты
        if ($dbDate && $nowDate && $nowDate <= $dbDate) {
            $cp_status = $result['status'];
            $paid_data = $result['date_create'];
        }

        break; // Прерываем цикл, если найден 'paid'
    }
}


  


    // Если книга еще не добавлена в массив, создаем новый элемент
    if (!isset($books[$book_id])) 
    {
        $books[$book_id] = [
            'id' => $book_id,
            'title' => $row['book_title'],
            'create_time' => $row['book_create_time'], 
            'prices' => [
                'One' => $row['One'],
                'Three' => $row['Three'],
                'Six' => $row['Six'],
                'twelve' => $row['twelve'],
            ],
            'chapters' => [],
            'svg_ico' => $row['svg_ico'],
            'paid_data'=> $paid_data
        ];
    }


    // Если у книги есть главы
    if ($row['chapter_title']) 
    {
        // Условие на статус платежа: если статус "paid", то rrstatus = 0
        if ($cp_status == 'paid') 
        {
            $rrstatus = 1;
        } 
        else 
        {
            $rrstatus = $row['status'];
        }

        // Добавление главы в массив книги
        $books[$book_id]['chapters'][] = [
            'id' => $row['chapter_id'],
            'title' => $row['chapter_title'],
            'category' => $row['category'],
            'status' => $rrstatus,
            'sort_order' => $row['sort_order']
        ];
    }
}

    echo json_encode(['books' => array_values($books)]);

} elseif ($action === 'getChapterSvg' && isset($input['token'], $input['chapter_id'])) {
    $token = $input['token'];
    $chapter_id = $input['chapter_id'];

    // Проверка валидности токена
    $stmt = $db->prepare('SELECT * FROM users WHERE token = ?');
    $stmt->execute([$token]);
    if (!$stmt->fetch()) {
        echo json_encode(['error' => 'Invalid token']);
        exit;
    }

    // Получение svg_file конкретной главы
    $stmt = $db->prepare('SELECT svg_file FROM chapters WHERE id = ?');
    $stmt->execute([$chapter_id]);
    $chapter = $stmt->fetch();

    if ($chapter) {
        echo json_encode(['svg_file' => $chapter['svg_file']]);
    } else {
        echo json_encode(['error' => 'Chapter not found']);
    }

} else {
    echo json_encode(['error' => 'Invalid action or token']);
}

?>