Balises html non interprétées

Résolu
tuco79 Messages postés 2 Date d'inscription dimanche 27 février 2011 Statut Membre Dernière intervention 10 décembre 2011 - 9 déc. 2011 à 17:40
tuco79 Messages postés 2 Date d'inscription dimanche 27 février 2011 Statut Membre Dernière intervention 10 décembre 2011 - 10 déc. 2011 à 18:56
Bonjour,

je fais des tests avec les sockets (afin de comprendre comment ça fonctionne) et le code suivant me pose quelques problèmes :

[i]$address = $_SERVER['SERVER_ADDR'];
$port = 5203;

$serveur = stream_socket_server("tcp://".$address.":".$port);
$client=stream_socket_accept($serveur);

$read="";
do
{
$read= fgets($client,100);
}while($read===FALSE && !feof($client));

$html="<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">";
$html.="<html><head>";
$html.="<meta http-equiv="Content-type" content="text/html;charset=iso-8859-1"/>";
$html.="</head>";
$html.="
salut
";
$html.="</html>";

fputs($client,$html,strlen($html));
fclose($serveur);/i


Avec IE9 et Chrome tout fonctionne bien. Plus précisément, si je lance ce script depuis mon navigateur et que j'ouvre un nouvel onglet en tapant l'ip de mon serveur suivi de ": 5203" (le numéro de port) je reçois bien le mot "salut" sur ma page.
Mais avec Firefox ou Opera, je reçois tout le texte avec les balises html qui ne sont pas interprétées.

Si quelqu'un a une suggestion ... ça fait pas mal de temps que je cherche.

Merci.

2 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
10 déc. 2011 à 17:37
Salut,

Si tu utilises directement les socket, il va falloir que t'occupes toi même du protocole HTTP.

Quelques liens pour t'aider :
- RFC 2616
- petit tuto
3
tuco79 Messages postés 2 Date d'inscription dimanche 27 février 2011 Statut Membre Dernière intervention 10 décembre 2011
10 déc. 2011 à 18:56
Un grand merci. En ajoutant le texte suivant en début de réponse du serveur de socket : HTTP/1.1 200 OK Content-Type: text/html, ça fonctionne aussi avec Firefox.

Je remet le code final au cas où ça pourrait intéresser quelqu'un.


[i]$address = $_SERVER['SERVER_ADDR'];
$port = 5203;

$serveur = stream_socket_server("tcp://".$address.":".$port);
$client=stream_socket_accept($serveur);

$html = "HTTP/1.1 200 OK\r\n";
$html.="Content-Type: text/html\r\n\r\n";
$html.="<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">";
$html.="<html><head>";
$html.="<meta http-equiv="Content-type" content="text/html;charset=iso-8859-1"/>";
$html.="</head>";
$html.="
salut
";
$html.="</html>";

fputs($client,$html,strlen($html));
fclose($serveur);/i
3
Rejoignez-nous