Вход Регистрация
Комментировать коды можно с уровня Продвинутый
[отв] * INPHERNO (13 Апр 2023 в 11:47)
Подправил и немного обновил.
  1. <?php
  2. session_start(); // начинаем сессию
  3. $dbhost = "localhost"; // адрес сервера базы данных
  4. $dbuser = "username"; // имя пользователя для подключения к базе данных
  5. $dbpassword = "password"; // пароль для подключения к базе данных
  6. $dbname = "database_name"; // имя базы данных
  7. $link = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); // подключаемся к базе данных
  8.  
  9. if(isset($_POST['submit']) && isset($_POST['text'])) { // проверяем, была ли отправлена форма
  10. $text = mysqli_real_escape_string($link, $_POST['text']); // экранируем специальные символы в тексте сообщения
  11. $login = mysqli_real_escape_string($link, $_SESSION['login']); // экранируем специальные символы в имени пользователя
  12. mysqli_query($link, "SET NAMES cp1251"); // устанавливаем кодировку для соединения с базой данных
  13. mysqli_query($link, "INSERT INTO chat VALUES ('', '$text', '$login', NOW()) "); // вставляем новое сообщение в базу данных
  14. header("Location: chat.php"); // перенаправляем пользователя на страницу чата
  15. exit(); // завершаем выполнение скрипта
  16. }
  17.  
  18. $result = mysqli_query($link, "SELECT * FROM chat ORDER BY time DESC LIMIT 10"); // выбираем последние 10 сообщений из базы данных
  19. mysqli_query($link, "SET NAMES cp1251"); // устанавливаем кодировку для соединения с базой данных
  20. while($row = mysqli_fetch_assoc($result)) { // выводим сообщения на страницу
  21. echo "{$row['time']}: {$row['login']}: {$row['text']} <br>";
  22. }
  23.  
  24. echo "<form method='POST' action='chat.php'>
  25. <textarea name='text'></textarea><br><br>
  26. <input type='submit' name='submit' value='Отправить'>
  27. </form>";
  28.  
  29. mysqli_close($link); // закрываем соединение с базой данных
  30. ?>


Chat message insertion.


RV Kudrinskiy
if($_POST['submit'] AND $_POST['text']){
mysql_query("SET NAMES cp1251");
mysql_query("INSERT INTO caht VALUES ('','$_POST[text]','$_SESSION[login]', NOW()) ");
exit(header("location: chat.php")) ;
}
$rew = mysql_query("SELECT * FROM caht ORDER BY 'time' DESC LIMIT 10");
mysql_query("SET NAMES cp1251");
while($row = mysql_fetch_assoc($rew)) {
echo "$row[time]:$row[login]:$row[text] <br>";
}

echo "<form method = 'POST' action='chat.php'>
<textarea name='text'></textarea><br><br>
<input type = 'submit' name = 'submit' value = 'Отправить'>
</form>";
Исправь ошибки и обнови код

Перед приведенным кодом необходимо подключиться к базе данных. Для этого необходимо использовать функцию mysql_connect() или другие альтернативные средства, такие как объекты PDO или MySQLi.

Приведенный код содержит несколько ошибок, которые необходимо исправить. Вот исправленный код:

php
Copy code
<?php
session_start(); // начинаем сессию
$dbhost = "localhost"; // адрес сервера базы данных
$dbuser = "username"; // имя пользователя для подключения к базе данных
$dbpassword = "password"; // пароль для подключения к базе данных
$dbname = "database_name"; // имя базы данных
$link = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); // подключаемся к базе данных

if(isset($_POST['submit']) && isset($_POST['text'])) { // проверяем, была ли отправлена форма
$text = mysqli_real_escape_string($link, $_POST['text']); // экранируем специальные символы в тексте сообщения
$login = mysqli_real_escape_string($link, $_SESSION['login']); // экранируем специальные символы в имени пользователя
mysqli_query($link, "SET NAMES cp1251"); // устанавливаем кодировку для соединения с базой данных
mysqli_query($link, "INSERT INTO chat VALUES ('', '$text', '$login', NOW()) "); // вставляем новое сообщение в базу данных
header("Location: chat.php"); // перенаправляем пользователя на страницу чата
exit(); // завершаем выполнение скрипта
}

$result = mysqli_query($link, "SELECT * FROM chat ORDER BY time DESC LIMIT 10"); // выбираем последние 10 сообщений из базы данных
mysqli_query($link, "SET NAMES cp1251"); // устанавливаем кодировку для соединения с базой данных
while($row = mysqli_fetch_assoc($result)) { // выводим сообщения на страницу
echo "{$row['time']}: {$row['login']}: {$row['text']} <br>";
}

echo "<form method='POST' action='chat.php'>
<textarea name='text'></textarea><br><br>
<input type='submit' name='submit' value='Отправить'>
</form>";

mysqli_close($link); // закрываем соединение с базой данных
?>
Исправления, которые были внесены:

Использование функции mysqli_connect() вместо mysql_connect(), так как последняя устарела.
Проверка наличия параметров 'submit' и 'text' при отправке формы.
Экранирование специальных символов в тексте сообщения и имени пользователя с помощью функции mysqli_real_escape_string(), чтобы избежать возможности атаки SQL-инъекцией.
Замена запроса на выборку данных из таблицы caht на запрос на выборку данных из таблицы chat.
Исправление синтаксической ошибки в запросе на выборку данных
[отв] * AgentM (28 Июля 2018 в 19:33)
где база?!!!!!.952.
[отв] * foxik * (21 Фев 2016 в 21:38)
вот баран
[отв] * akademik (26 Янв 2016 в 14:51)
1. Где база? (Понимаю бред но все же.)
2. Данные вообще фильтровать не надо? Привет XSS.
3. Имя пользователя с сессии... А где у нас там сессия обьявлена, и добавлена переменная с именем пользователя???
Короче парень, иди учи.
[отв] * Taltos * (25 Янв 2016 в 03:00)
kainsk, ну почему же =) отправка есть вывод есть.но и дыкро есть
[отв] * Taltos * (25 Янв 2016 в 02:59)
еще и с дырко
[отв] * kainsk (24 Янв 2016 в 06:09)
Какой чат блин кусок кода формы отправкм
Онлайн: 1
Реклама