пользователи stackoverflow. Я сделал половину издания веб-чата на php, который работает очень странно. Я хочу услышать мнение других пользователей об этом коде. Я не буду добавлять пользователя, я добавлю это позже. У меня такие вопросы: «Насколько хороша моя система загрузки чата?». Я знаю, что я могу переделать загрузку json с сервера, чтобы сделать файлы json на стороне клиента намного проще. "« Что я действительно сделал не так, насколько читабелен мой код? " или что-то еще. Для этого вам нужно только изменить $ domain_name на ваше и domain_name в javascript тоже.

$domain_name = ' ';
file_put_contents('logs.log', time().' : '.$_SERVER['REMOTE_ADDR']."\n", LOCK_EX | FILE_APPEND);
functions_reader();

function functions_reader() {
    if(isset($_GET['function'])) {
        if($_GET['function'] == 'dialog_join()' || $_GET['function'] == 'dialog_read()' || $_GET['function'] == 'dialog_send_message()') {
            if($_GET['function'] == 'dialog_join()') {
                dialog_join();
            }
            elseif($_GET['function'] == 'dialog_read()') {
                echo dialog_read();
            }
            elseif($_GET['function'] == 'dialog_send_message()') {
                dialog_send_message();
            }
        }
        else{
            load_chat_page();
        }
    }
    else{
        load_chat_page();
    }
}

function dialog_join() {
    if(isset($_GET['password'])) {
        $password = $_GET['password'];
        $password = sha1($password.'19r5u1980pgdsfi'.$password);
        $file = $password.'.json';
        if(!file_exists($file)) {
            $json = array ( array ( 
                "message" => 'Чат с заданным вам паролем создан. Чтобы пригласить в него друзей, отправте им этот пароль!',
                "profile" => 'System',
                "date" => time(),
                "ip" => 'System'
                ));
            file_put_contents($file, json_encode($json), LOCK_EX);
            exit('JOIN');
        }
        elseif (file_exists($file)) {
            exit('JOIN');
        }
    }
    else {
        exit('Code-156');
    }
}

function dialog_read() {
    if(isset($_GET['password'])) {
        $password = $_GET['password'];
        $password = sha1($password.'19r5u1980pgdsfi'.$password);
        $file = $password.'.json';
        if(!file_exists($file)) {
            dialog_join();
        }
        elseif(file_exists($file)) {
            return file_get_contents($file);
        }
    }
    else {
        exit('Code-107');
    }
}

function dialog_send_message() {
    if(isset($_GET['password']) && isset($_GET['message'])) {
        $password = $_GET['password'];
        $password = sha1($password.'19r5u1980pgdsfi'.$password);
        $file = $password.'.json';
        if(file_exists($file)) {
            $json_add = array ( 
                "message" => $_GET['message'],
                "profile" => 'System',
                "date" => time(),
                "ip" => $_SERVER['REMOTE_ADDR']
                );
            $json = json_decode(file_get_contents($file),true);
            array_push($json,$json_add);
            file_put_contents($file, json_encode($json), LOCK_EX);
        }
    }
    else{
        exit('Code-403');
    }
}

function load_chat_page() {
 ?>
<!DOCTYPE html>
    <html>
        <head>
            <title>Chat</title>
        </head>
        <body>
            <input type="text" placeholder="пароль" id="input_pass">
            <input type="button" value="Change" onclick="setPassword(document.getElementById('input_pass').value)">
            <div id="chat_box">
            </div>

            <script>
                var domain_name = ' ';
                eraseCookie('LD');
                function setCookie(cname, cvalue, exdays) {
                    var d = new Date();
                    d.setTime(d.getTime() + (exdays*24*60*60*1000));
                    var expires = "expires="+ d.toUTCString();
                    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
                }
                function getCookie(cname) {
                  var name = cname + "=";
                  var decodedCookie = decodeURIComponent(document.cookie);
                  var ca = decodedCookie.split(';');
                  for(var i = 0; i <ca.length; i++) {
                    var c = ca[i];
                    while (c.charAt(0) == ' ') {
                      c = c.substring(1);
                    }
                    if (c.indexOf(name) == 0) {
                      return c.substring(name.length, c.length);
                    }
                  }
                  return "";
                }
                function eraseCookie(cname) {
                    setCookie(cname,"",-1);
                }
                setCookie('LD',0,30);
                setInterval(chat_reader, 100);
                    if(getCookie('password')) {
                        document.getElementById('chat_box').innerHTML += '<br><br>Пароль чата: <input type="text" value="'+getCookie('password')+'">';
                    }
                    else{
                        setPassword('0');
                        var password = getCookie('password');
                    }
                function chat_reader() {
                    if(getCookie('password')) {
                        var password = getCookie('password');
                    }
                    else{
                        setPassword('0');
                        var password = getCookie('password');
                    }
                chatbefore = httpGet('http://'+domain_name+'?function=dialog_read()&password='+password)
                if(chatbefore!='JOIN') {
                chat = JSON.parse(chatbefore);
                loaded_data = getCookie('LD');
                var i = loaded_data;
                for (i = loaded_data; i < chat.length; i++) {
                    var date = new Date(chat[i]['date']*1000);
                    // Hours part from the timestamp
                    var hours = date.getHours();
                    // Minutes part from the timestamp
                    var minutes = "0" + date.getMinutes();
                    // Seconds part from the timestamp
                    var seconds = "0" + date.getSeconds();

                    // Will display time in 10:30:23 format
                    var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
                    document.getElementById('chat_box').innerHTML += '<br><b>'+chat[i]['profile']+' написал(а): </b>"' + chat[i]['message'] + '" в ' + formattedTime;
                    setCookie('LD',Number(i)+Number(1),30);
                }
                }
                }
                function setPassword(password) {
                    setCookie('LD',0,30);
                    setCookie('password',password,30);
                    document.getElementById('chat_box').innerHTML += '<br><br>Пароль чата: <input type="text" value="'+getCookie('password')+'">';
                }
                function httpGet(theUrl)
                {
                    var xmlHttp = new XMLHttpRequest();
                    xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
                    xmlHttp.send( null );
                    return xmlHttp.responseText;
                }
                function sendMessage(message) {
                    httpGet('http://'+domain_name+'?function=dialog_send_message()&password='+getCookie('password')+'&message='+message);
                }
            </script>
        </body>
    </html>
 <?php   
}
?>```
0
Александр А.