Pusta strona po próbie dodania odpowiedzi na forum

0

Witam, mam na swojej stronie system forum z opcją logowania. Gdy próbuję dodać jakiś post to się nie da i przekierowuje na pustą stronę z samym layoutem (wyglądem). Tak jest gdy próbuję dodać odpowiedź do jakiegoś wątku, lub utworzyć nowy temat. Dodam że to przedtem działało, tylko wyrzuciłem stronę z serwera i teraz spróbowałem wrzucić z powrotem i coś się zepsuło. W którym pliku/miejscu może występować ten błąd ? Bo wątpię że wina leży w bazie danych mysql.

Oto link do strony:
https://www.dbgreat.com.pl

1

Z ciekawości chciałem założyć tam konto, wszedłem na stronę, odpaliłem konsolę i... Zacząłem czytać błędy. Tylko błędy rosną w tempie lawinowym, pomimo tego, że nic na stronie nie robię. Przeczytaj je najpierw.

Jak chcesz możesz także udostępnić kod strony (z klienta jest widoczny tylko front) bez wrażliwych danych i wtedy będzie można iść dalej.

Edit: P.S. brakuje loga RTL7 : )

Edit 2: po rejestracji i kliknięciu w link potwierdzający dostaję z serwera 403.

0

Ok dzięki wielkie, spróbuję naprawić te błędy. A że po rejestracji wyświetla błąd to ciekawe.

1
Mariusz Kubielas napisał(a):

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").

0
ccwrc napisał(a):
Mariusz Kubielas napisał(a):

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>
0

Teraz prosiłbym by ktoś pomógł mi zrobić przekierowanie automatyczne na strone z tematem po założeniu nowego.

0

Udało mi się przekierować na stronę główną za pomocą <meta>

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.