sql — PHP чат отправить кнопку обновления

Я только начал работать с SQL, и я делаю чат.

Несколько вопросов:-

1) Если вы пришли с index.php (сайт, где вы можете ввести только имя пользователя)
Вы придете на home.php. Чем вверху написано: Вы еще не отправили сообщение. и каждый раз, когда я обновляю его, просто загружает последнее сообщение. Я знаю, что есть решение, которое я просто не смог найти.

2) Если я нажимаю на кнопку отправки, она обновляет страницу и идет вверх. Таким образом, вы должны прокрутить весь путь вниз, чтобы войти и увидеть ваше сообщение. + Я могу исправить это без обновления, но вы не видите никаких сообщений beign send.

<?php

if (isset($_POST["afzender"])){
$_SESSION['afzender'] = $_POST['afzender'];
}

$servername = "localhost";
$username = "*******";
$password = "******";
$dbname = "*****";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO 'chatbox_berichten'
(''id', 'afzender', 'chatbox_id', 'bericht', 'tijd')
VALUES (NULL, '".$_SESSION['afzender']."', '', '".$_POST['bericht']."', CURRENT_TIMESTAMP);";
echo $sql;
if ($conn->query($sql) === TRUE) {
echo "Succesvol Toegevoegd.";
} else {
echo $conn->connect_error;
}
echo "<hr/>";

$sql = "SELECT * FROM chatbox_berichten";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
echo "<table border='2'>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["id"]. "<td>" . $row["afzender"]. "<td>" . $row["bericht"]. "  <td>" . $row["tijd"]. "</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}


$conn->close();
?>
<?php echo $_SESSION['afzender']; ?>
<form action="home.php" method="post">
Bericht: <input type="text" name="bericht"><br>
<input type="submit">
</form>

Я знаю, что код выглядит грязно. У меня нет никаких уроков, чтобы это выглядело лучше.

Так что любая помощь будет оценена.

0

Решение

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

каждый раз, когда я обновляю это просто загружает последнее сообщение

Если вы обновите страницу, ваш браузер будет повторять последний запрос. Если вы отправили сообщение раньше, это будет запрос POST. Поэтому сообщение будет отправлено снова, так как браузер повторяет HTTP-запрос.

Наиболее распространенный обходной путь — HTTP-перенаправление на тот же URL-адрес при обработке запроса POST, поэтому последний запрос, который выполняет браузер, — это запрос GET (замечания приведены ниже).

Если я нажимаю на кнопку отправки, он обновляет страницу и проходит все
путь вверх. Таким образом, вы должны прокрутить весь путь вниз, чтобы войти и увидеть ваш
сообщение. + я могу исправить это без обновления, но чем вы не видите
любые сообщения beign отправить.

Для приложения чата это не самый лучший способ. Вы можете изменить порядок сообщений чата (самые новые вверху), чтобы вам не приходилось прокручивать страницу вниз, чтобы увидеть последние сообщения.

Идеальным подходом было бы асинхронное взаимодействие клиент / сервер. Пойдите и прочитайте несколько статей об AJAX (или веб-сокетах, если вы хотите сделать огромный шаг к современным технологиям). Простой скрипт может периодически (или через уведомления с использованием веб-сокетов) проверять наличие новых сообщений, добавлять их в список старых сообщений и прокручивать их соответствующим образом. Если вы отправите сообщение также в фоновом режиме, ваша первая проблема исчезнет, ​​так как вам не нужно будет выполнять «приоритетный запрос» для отправки / получения сообщений.

Еще одна вещь: вы действительно должны прочитать некоторые статьи о веб-атаках. Ваш код уязвим для атак XSS и SQL-инъекций. В настоящее время ваш PHP-код позволяет злоумышленникам захватить вашу базу данных и внедрить произвольный код на страницу. Вы должны использовать экранирование HTML и SQL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector