Ok dzięki wielkie, spróbuję naprawić te błędy. A że po rejestracji wyświetla błąd to ciekawe.
Po prostu sprawdź logi, wątpię żeby o danej godzinie rejestrował się ktoś jeszcze.
Pomimo 'activated' ( /confirm.php?token=joljolelojoljol&status=activated ) w query przy próbie logowania mam komunikat, że konto nie zostało aktywowane ("Błąd. Twoje konto nie zostało jeszcze potwierdzone").
Zrobiłem że możesz się zalogować.
Dobrze wiedzieć że cała strona do poprawki.
Teraz zepsułem bardziej, kiedy próbuję dodać odpowiedź na forum to dodaje się w bazie danych mysql ale nie jest widoczna na stronie. Do tego dodaje nowy temat bez nazwy. Mogę udostępnić kod strony ale który, bo trochę tego jest.
Tutaj w kodzie (kod logowanie.php) na początku był kawałek kodu który blokował dodawanie postów na forum. Usunąłem go i na chwilę podziałało. Tak zepsułem że teraz nie widać tych odpowiedzi na stronie. Chociaż tyle że dodają się w bazie danych.
<!-- LOGOWANIE -->
<?php
if (isset($_SESSION['username'])) {
// Jeśli użytkownik jest zalogowany, wyświetl menu użytkownika
?>
<style>
.user {background-image:url('grafika/user.png');
min-width:304px;
height:183px;
}
</style>
<div class="user" style='width: 239px; margin-top: 23px; margin-left:0px;padding-top: 0px;'>
<?php include 'panel.php'; ?>
</div> <!-- Zakończ pierwszy <div> -->
<?php
} else {
// Jeśli użytkownik nie jest zalogowany, wyświetl panel logowania
?>
<div style="background-image:url('grafika/panel.png');width:307px;height:190px;background-repeat:no-repeat;padding-top:42px;padding-left:13px;">
<form method="post" action="login/zaloguj.php" style="width:260px;" autocomplete="off">
<input type="text" name="username" placeholder="login" style="padding:0;padding-left:6px;width:254px;height:24px;border:0;background:none;color:darkgray;" autocomplete="off">
<input type="password" name="password" placeholder="*****" style="padding:0;padding-left:6px;margin-top:10px;width:254px;height:24px;border:0;background:none;color:darkgray;" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
<input type="submit" value="" style="margin-top:10px;width:97px;height:24px;background:none;border:0;">
</form>
<div style="width:191px;margin-top:25px;font-size:13px;"><b><a href="?akcja=register">Rejestracja</a></b>
/
<a href="?akcja=reset_hasla" class="haslo">Przypomnij hasło</a>
</div>
</div>
<?php
}
?>
<!-- LOGOWANIE -->
Tutaj kod forum:
<!DOCTYPE html>
<html>
<head>
<title>Forum - Temat</title>
<link rel="stylesheet" type="text/css" href="forum_system/css/styl.css">
</head>
<body>
<style>
.post {
padding-bottom: 5px;
}
.user-points {
bottom: 10px;
right: 10px;
background-color: #282d32;
text-align: right;
border-radius: 5px;
margin-bottom: -20;
}
.hover-image {opacity:0.5;
transition: 0.3s ease;}
.hover-image:hover {
width:16;
height:16;
display:inline-block;
opacity:1;
transition: 0.3s ease;
}
</style>
<h2 style="margin-top:0;">Forum - Temat</h2>
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
// Sprawdzenie połączenia
if ($conn->connect_error) {
die("Błąd połączenia z bazą danych: " . $conn->connect_error);
}
// Sprawdzenie, czy użytkownik jest zalogowany
// Załóżmy, że korzystasz z uwierzytelniania na podstawie sesji
session_start();
$czy_uzytkownik_zalogowany = isset($_SESSION['username']);
if (isset($_GET['id'])) {
$topic_id = $_GET['id'];
// Pobranie danych tematu
$sql_get_topic = "SELECT * FROM topics WHERE id = $topic_id";
$result = $conn->query($sql_get_topic);
$topic = $result->fetch_assoc();
if ($topic) {
echo '<h3 style="color:#c3909b;">' . $topic['title'] . '</h3>';
echo '<p>Autor: ' . $topic['author'] . '</p>';
// Pobranie odpowiedzi na temat wraz z avatarem użytkownika (with default avatar handling)
$items_per_page = 5; // Liczba odpowiedzi na stronę
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // Numer bieżącej strony
// Obliczenie OFFSET dla bieżącej strony
$offset = ($current_page - 1) * $items_per_page;
$sql_get_replies = "SELECT r.*, IFNULL(u.avatar, 'login/avatars/default_avatar.png') AS avatar, u.points AS user_points
FROM replies r
LEFT JOIN users u ON r.author = u.username
WHERE r.topic_id = $topic_id
ORDER BY r.timestamp ASC
LIMIT $items_per_page
OFFSET $offset";
$result_replies = $conn->query($sql_get_replies);
if ($result_replies) {
$replies = $result_replies->fetch_all(MYSQLI_ASSOC);
echo '<h4>Odpowiedzi</h4>';
echo '<div style="background:none;margin-right:0;margin-left:6px;position:relative;">';
foreach ($replies as $reply) {
echo '<div style="float: left; margin-right: 10px;">';
echo '<img src="' . $reply['avatar'] . '" alt="Avatar" width="55" height="55" style="border:1px solid rgba(255,255,255,0.1);">';
echo '</div>';
echo '<p style="margin-right:0; white-space: pre-line;min-height:54px;">' . $reply['content'] . '</p>';
echo '<p style="color:#5F9EA0;"><img src="forum_system/img/autor.png" style="vertical-align:middle;margin-right:6px;margin-top:-2px;">' . $reply['author'] . '</p>';
$author = $reply['author'];
$sql = "SELECT signature FROM users WHERE username = '$author'";
$result = $conn->query($sql);
if ($result && $result->num_rows > 0) {
$row = $result->fetch_assoc();
$signature = $row['signature'];
if (isset($signature) && !empty($signature)) {
// Display the author's signature in quotes
echo '<p style="margin-top: 20px;opacity:0.5;">Podpis: <span style="font-style: italic;">"' . $signature . '"</span></p>';
} else {
}
} else {
}
echo '<div class="user-points" style="align-items: center; margin: 0; margin-bottom: 0; float: right; background: transparent; border: 0px solid gray;">';
if (!$czy_uzytkownik_zalogowany) {
echo '<div style="margin-top: -16px;">';
}
if ($czy_uzytkownik_zalogowany && $_SESSION['username'] !== $reply['author']) {
echo '<div style="margin-top: -19px;">';
echo '<a href="?akcja=addpoints&id=' . $reply['id'] . '"><img src="plus4.png" style="vertical-align: middle; margin: 0; margin-top: -3px; margin-right: 0;" class="hover-image"></a>'; // Link do dodawania punktów
echo '<p style="display: inline; margin-left: 5px; margin-bottom: 0; margin-top: -16px;margin-right:-5;">' . $reply['points'] . '</p>'; // Wyświetlenie liczby punktów (display: inline)
echo '<p style="display: inline; margin-left: 5px; margin-bottom: 0; margin-top: -16px;">';
echo '</div>';
} else {
echo '<p style="display: inline; margin-left: 5px; margin-bottom: 0; margin-right: 6px; margin-top: -16px;">' . $reply['points'] . '</p>'; // Wyświetlenie liczby punktów (display: inline)
}
if (!$czy_uzytkownik_zalogowany) {
echo '</div>';
}
echo '</div>';
if ($czy_uzytkownik_zalogowany && $_SESSION['username'] === $reply['author']) {
echo '[<a href="?akcja=editreply&id=' . $reply['id'] . '">Edytuj</a>]';
}
echo '</li>';
echo '<hr style="border:0;height:1px;background:rgba(184,194,197,0.17);margin-bottom:15px;width:100%;">';
}
echo '</ul>';
echo '</div>';
// Pobranie liczby wszystkich odpowiedzi na ten temat
$sql_count_replies = "SELECT COUNT(*) AS total_replies FROM replies WHERE topic_id = $topic_id";
$result_count_replies = $conn->query($sql_count_replies);
$row = $result_count_replies->fetch_assoc();
$total_replies = $row['total_replies'];
// Wyświetlenie paginacji
$total_pages = ceil($total_replies / $items_per_page);
echo '<div style="text-align: center;">'; // Dodajemy pojemnik <div> dla wycentrowania
echo '<div class="pagination" style="display: inline-block;">'; // Dodajemy pojemnik <div> dla paginacji
if ($current_page > 1) {
// Generate the URL for the "wstecz" link
$query_params = $_GET;
$query_params['page'] = $current_page - 1;
$query_string = http_build_query($query_params);
echo '<a href="?' . $query_string . '">« wstecz</a> ';
}
for ($page = 1; $page <= $total_pages; $page++) {
if ($page === $current_page) {
echo '<span class="current-page">' . $page . '</span> ';
} else {
// Use the PHP function http_build_query to construct the URL with all existing parameters
$query_params = $_GET;
$query_params['page'] = $page;
$query_string = http_build_query($query_params);
// Generate the URL with the updated page number
echo '<a href="?' . $query_string . '">' . $page . '</a> ';
}
}
if ($current_page < $total_pages) {
// Generate the URL for the "dalej" link
$query_params = $_GET;
$query_params['page'] = $current_page + 1;
$query_string = http_build_query($query_params);
echo '<a href="?' . $query_string . '">dalej »</a> ';
}
echo '</div>'; // Zamknięcie pojemnika <div> dla paginacji
echo '</div>'; // Zamknięcie pojemnika <div> dla wycentrowania
} else {
echo '<p>Brak odpowiedzi na ten temat.</p>';
}
// Add this section after the previous code block
if (isset($_GET['akcja']) && $_GET['akcja'] === 'editreply' && $czy_uzytkownik_zalogowany) {
if (isset($_GET['id'])) {
$reply_id = $_GET['id'];
// Fetch the reply from the database
$sql_get_reply = "SELECT * FROM replies WHERE id = $reply_id";
$result_reply = $conn->query($sql_get_reply);
$reply = $result_reply->fetch_assoc();
// Check if the user is the author of the reply
if ($reply && $_SESSION['username'] === $reply['author']) {
// Handle form submission for updating the reply
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (isset($_POST['reply_id']) && isset($_POST['content'])) {
$reply_id = $_POST['reply_id'];
$content = $_POST['content'];
// Update the reply in the database
$sql_update_reply = "UPDATE replies SET content = '$content' WHERE id = $reply_id";
if ($conn->query($sql_update_reply) === TRUE) {
echo '<p>Odpowiedź została zaktualizowana.</p>';
} else {
echo '<p>Błąd podczas aktualizacji odpowiedzi: ' . $conn->error . '</p>';
}
} else {
echo '<p>Nieprawidłowe dane formularza.</p>';
}
} else {
echo '<h4>Edytuj odpowiedź</h4>';
echo '<form method="post" action="?akcja=editreply&id=' . $reply_id . '">';
echo '<input type="hidden" name="reply_id" value="' . $reply_id . '">';
echo '<label for="content">Treść odpowiedzi:</label><br>';
echo '<textarea name="content" rows="5" cols="40" required>' . $reply['content'] . '</textarea><br>';
echo '<input type="submit" value="Zapisz zmiany">';
echo '</form>';
}
} else {
echo '<p>Nie masz uprawnień do edycji tej odpowiedzi.</p>';
}
} else {
echo '<p>Brak identyfikatora odpowiedzi.</p>';
}
}
if ($czy_uzytkownik_zalogowany) {
// Formularz do odpowiadania na temat
echo '<h4>Odpowiedz na temat</h4>';
echo '<form method="post" action="?akcja=addreply">';
echo '<input type="hidden" name="topic_id" value="' . htmlspecialchars($topic_id) . '">';
// Dodajemy wyświetlanie avatara
echo '<div style="float: left; margin-right: 10px;">';
// Kod do wyświetlenia avatara (jeśli istnieje)
echo '</div>';
// Dodajemy pole do wprowadzenia treści odpowiedzi
echo '<textarea name="content" rows="5" cols="40" style="background:none;resize:none;color:rgba(178, 185, 192, 0.8);border: 1px solid rgba(255,255,255,0.2);" required>';
echo htmlspecialchars($content, ENT_QUOTES, 'UTF-8');
echo '</textarea><br>';
// Dodajemy przyciski do formatowania tekstu
echo '<p>Formatowanie tekstu:</p>';
echo '<img src="forum_system/img/b.png" style="margin-left:2px;margin-right: 3px; cursor: pointer;" alt="Pogrubienie" onclick="formatText(\'<b>\', \'</b>\')">';
echo '<img src="forum_system/img/i.png" style="margin-right:3px; cursor: pointer;" alt="Pochylenie" onclick="formatText(\'<i>\', \'</i>\')">';
echo '<img src="forum_system/img/u.png" style="margin-right:3px;margin-bottom:-3px; cursor: pointer;" alt="Podkreślenie" onclick="formatText(\'<u>\', \'</u>\')">';
// Dodajemy przycisk do wstawiania linku
echo '<img src="forum_system/img/link.png" style="margin-left:12;margin-right: 3; cursor: pointer;" alt="Link" onclick="insertLink()">';
echo '<br>';
echo '<br>';
echo '<input type="submit" value="Dodaj odpowiedź">';
echo '</form>';
} else {
echo '<p>Musisz być zalogowany, aby dodać odpowiedź.</p>';
}
} else {
echo '<p>Temat nie istnieje.</p>';
}
} else {
echo '<p>Brak identyfikatora tematu.</p>';
}
?>
<p style="margin-bottom:0;"><a href="?akcja=forum">Powrót do listy tematów</a></p>
<script>
function formatText(startTag, endTag) {
var textarea = document.getElementsByName("content")[0];
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
var selectedText = textarea.value.substring(startPos, endPos);
var replacement = startTag + selectedText + endTag;
textarea.value = textarea.value.substring(0, startPos) + replacement + textarea.value.substring(endPos);
}
function insertLink() {
var linkURL = prompt("Wprowadź adres URL linku:", "http://");
if (linkURL) {
var textarea = document.getElementsByName("content")[0];
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
var linkText = textarea.value.substring(startPos, endPos);
var linkTag = '<a href="' + linkURL + '" style="color: #FAC898; text-decoration: underline;">' + linkText + '</a>';
textarea.value = textarea.value.substring(0, startPos) + linkTag + textarea.value.substring(endPos);
}
}
</script>
</body>
</html>