@Artemka324234

Кто поможет по php?

Всем привет пишу мессенджер сделал приветствие и прописал везде выводит ip а мне надо что бы ввыводил имя пользователя из сесии я знаю как вывести из сесии имя вот так $_SESSION['user']['login'] но я пробывал выводила пустоту это MYSQL и PHP
Файлы: server.php
<?php
session_start();
define('PORT',"8090");


require_once ("classes/chat.php");

$chat = new Chat();

$socket = socket_create(AF_INET, SOCK_STREAM,SOL_TCP);

socket_set_option($socket, SOL_SOCKET,SO_REUSEADDR, 1);
socket_bind($socket,0, PORT);


socket_listen($socket);

$clientSocketArray = array($socket);

while(true) {
    
    $newSocketArray = $clientSocketArray;
    $nullA = [];
    socket_select($newSocketArray,$nullA, $nullA,0,10);

    if(in_array($socket, $newSocketArray)) {
        $newSocket = socket_accept($socket);
        $clientSocketArray[] = $newSocket;
        
        $header = socket_read($newSocket, 1024);
        $chat->sendHeaders($header,$newSocket,'localhost/chat',PORT);

        socket_getpeername($newSocket, $client_ip_adress);
        $connectionACK = $chat->newConnectionACK($client_ip_adress);
        $chat->send($connectionACK,$clientSocketArray);




    }



}


socket_close($socket);


Класс Chat.php
<?php

class Chat
{
    public function sendHeaders($headersText, $newSocket, $host, $port) {
        $headers = array();
        $tmpLine = preg_split("/\r\n/", $headersText);

        foreach($tmpLine as $line) {
                $line = rtrim($line);
                if(preg_match('/\A(\S+): (.*)\z/',$line, $matches)) {
                    $headers[$matches[1]] = $matches[2];
                }
        }

        $key = $headers['Sec-WebSocket-Key'];
        $sKey = base64_encode(pack('H*', sha1($key.'258EAFA5-E914-47DA-95CA-C5AB0DC85B11')));

        $strHeadr = "HTTP/1.1 101 Switching Protocols \r\n" .
            "Upgrade: websocket\r\n" .
            "Connection: Upgrade\r\n" .
            "WebSocket-Origin: $host\r\n" .
            "WebSocket-Location: ws://$host:$port/chat/server.php\r\n".
            "Sec-WebSocket-Accept:$sKey\r\n\r\n"
            ;

            socket_write($newSocket,$strHeadr, strlen($strHeadr));
    }

    
    public function newConnectionACK($client_ip_adress) {
        $message = "Хэй! к нам подключился ". $client_ip_adress.'!';
        $messageArray = [
            "message" => $message,
            "type" => " "
        ];
        $ask = $this->seal(json_encode($messageArray));
        return $ask;
    }

    public function seal($socketData) {
        $b1 = 0x81;
        $length = strlen($socketData);
        $header = "";

        if($length <= 125) {
            $header = pack('CC', $b1, $length);
        }
        else if($length > 125 && $length < 65536) {
            $header = pack('CCn', $b1, 126, $length);
        }
        else if($length > 65536) {
            $header = pack('CCNN', $b1, 127, $length);
        }

        return $header.$socketData;
    }

    public function send($message,$clientSocketArray) {
        $messageLength = strlen($message);

        foreach($clientSocketArray as $clientSocket) {
            socket_write($clientSocket, $message, $messageLength);
        }
     
        return true; 
    }
}


Пожалуйста помогите
  • Вопрос задан
  • 435 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы