@Afafks123132132165

Как расшифровать ответ сервера?

Ну делал я значит чат и дошел до отображения сообщений ,а он отображаются как:
<b>Name<b>Text<br>
Ответ от сервера(файлика php) приходит правильно но <b>заменяются на &b или что то в этом роде.Как можно это расшифровать и сделать отображение правильным?
js
<html>
    <head>
        <meta charset = "utf-8">
        <title>Chat</title>
    </head>
    <body>
        <div id = "div"></div>
        <div id = "div2">
          <input id = "name" type = "text" placeholder = "Name" required>
          <input id = "text" type = "text" placeholder = "Text" required>
          <button id = "button" onclick = "send()">Send</button>
        </div>
        <style>
            #div{
                margin: 0;
                padding: 0;
                background-color: black;
                width: 100%;
                height: 90%;
                color: white;
                overflow-x: scroll;
            }
            #div2{
                margin: 0;
                padding: 0;
                width: 100%;
                height: 10%;
            }
            #name{
                margin: 0;
                padding: 0;
                width: 100%;
                height: 50%;
            }
            #text{
                margin: 0;
                padding: 0;
                float: left;
                width: 80%;
                height: 50%;
            }
            #button{
                margin: 0;
                padding: 0;
                float: left;
                width: 20%;
                height: 50%;
            }
            #button:hover{
                background-color: red;
            }
        </style>
        <script>
            function send(){
                name = document.getElementById("name").value;
                text = document.getElementById("text").value;
                name = encodeURIComponent(name);
                text = encodeURIComponent(text);
                var xhr = new XMLHttpRequest();
                xhr.open("GET","chat.php?" + "Name=" + name + "&text=" + text + "&status=" + "0");
                xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                document.getElementById("text").value = "";
                xhr.send();
            }
            function text(){
                var xh = new XMLHttpRequest();
                xh.open("GET","chat1.php?" + "status=" + "1");
                xh.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                xh.send();
                xh.onreadystatechange = function(){
                if(xh.readyState === 4 && xh.status === 200){
                    document.getElementById("div").innerHTML = xh.responseText;
                    document.getElementById("div").scrollTop = 9999;
                }
                }
            }
            setInterval(text,500);
        </script>
    </body>
</html>

Код который записывает:
<?php
$str = "";
if($_GET["status"] == 0){
  $name = $_GET["Name"];
  $text = $_GET["text"];
  $fd = fopen("chat.txt","a");
  $a = "<b>".$name."</b>".$text."<br>";
  fwrite($fd,"\n");
  fwrite($fd,$a);
  fclose();
}
?>

Код который читает из файла:
<?php
$str = "";
if($_GET["status"] == 1){
  $fd = fopen("chat.txt","r");
  while(!feof($fd)){
    $str .= htmlentities(fgets($fd));
  }
  echo $str;
}
?>
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
netrox
@netrox
Вы используете htmlentities() во время чтения, так что результат ожидаемый. Но если хотите безопасно отображать разметку, то используйте HTML Purifier.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы