Posez votre question Signaler

Php Socket

Gloubi - Dernière réponse le 16 mar 2009 à 12:44
Salut à tous !

Ce script Php permet d'effectuer une requête HTTP et d'afficher le résultat de celle ci en utilisant la fonction fsockopen, feof, etc ...

<?php
$fp = fsockopen("www.php.net", 80, &$errno, &$errstr, 30);
if(!$fp) 
{    
          echo "$errstr ($errno)<br>\n";
}
else 
{    
          fputs($fp,"GET / HTTP/1.0\n\n");    
          while(!feof($fp)) 
          {       
                    echo fgets($fp,128);    
          }    
          fclose($fp);
}
?>


Il fonctionne parfaitement, le problême et que si je veux par exemple envoyer un mail, je remplace le port 80 par 25, et le site par smtp.wanadoo.fr par exemple.
La requête HTTP je la transforme également en requête SMTP : Helo, mail from, rcpt to, datz etc ...
Cependant, ça ne fonctionne pas, et je ne comprend pas ! voici le script que j'ai fait puor envoyer un mail par exemple :

<?php
$fp = fsockopen("smtp.wanadoo.fr", 25, &$errno, &$errstr, 30);

$request = "HELO Googleman\n\n" or die ("marche pas");
$request .= "MAIL FROM: <blabla@wanadoo.fr>\n\n";
$request .= "RCPT TO: <blibli@wanadoo.fr>\n\n";
$request .= "DATA\n\n";
$request .= ".\n\n";
$request .= "quit\n\n";

if(!$fp) 
{    
	echo "$errstr ($errno)<br>\n";
}
else 
{    
	fputs($fp,$requete);    
	while(!feof($fp)) 
	{        
		echo fgets($fp,1024);    
	}    
	fclose($fp);
}
?>


Merci de m'expliquer là ou ç va pas, car je suis désespérer :( !

Merci beaucoup ++
Lire la suite 

Php Socket »

8 réponses
Réponse
+1
moins plus
Ben tu vides la socket entre chaque commande avec:
truc=fgets($fp,1024);

Et ensuite tu t'assures que la réponse (truc) commence bien par le code de succès. Sinon tu affiches ce qui est retourné pour avoir la description de l'erreur.
Petite remarque, ton "or die (...)" m'a l'air pas du tout à sa place.

Fat_cartman,
Ass-Kicked by ASP
Ajouter un commentaire
Réponse
+0
moins plus
dans le deuxième code les variables $request et $requete devraient avoir le mm nom, dsl de cette faute d'inattention, mais ça ne marche toujours pas de toute façon !
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Il te manquerait pas une identification pour envoyer du courrier par Wanadoo ?

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
Ajouter un commentaire
Réponse
+0
moins plus
salut,

il faudrait pour que ton mail passe que tu fasse une pause de qq secondes (sleep(4);) entre chaque envoi de la variable "request"

j'espèque que tu m'as compris...

Matt.
Ajouter un commentaire
Réponse
+0
moins plus
En fait le probleme vient pas du temps, mais du fait qu'il faut que tu lises ce qu'on t'envoie par la socket à la fin de chaque ligne, pour:
- recupérer les codes d'erreur
- vider la socket
Il ne faut pas tout envoyer d'un coup.

Fat_cartman,
Ass-Kicked by ASP
Dj-Matthieu - 29 jui 2004 à 15:59
Il ne faut pas tout envoyer d'un coup. <-- c'est ce que j'entendais pas un temps entre chaque envoi.

Matt.
Ajouter un commentaire
Réponse
+0
moins plus
Ouais ok j'ai compris mais comment je fais ça moi, récupérer pour chaque ligne lescodes d'erreur et vider la socket ? Tu pourrais me mettre un bout de code stp ce serait sympa :)
Merci de vos réponses
Ajouter un commentaire
Réponse
+0
moins plus
please;
si vous pouvez me guider pour telecharger une appllication chat multiutilisateur en php qui utilise les sockets .
et merci bcp.
Ajouter un commentaire
Ce document intitulé « Php Socket » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook