Php Socket

Gloubi -  
imaday Messages postés 1 Statut Membre -
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 ++
A voir également:

7 réponses

Utilisateur anonyme
 
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
1
Gloubi
 
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 !
0
Utilisateur anonyme
 
Salut,
Il te manquerait pas une identification pour envoyer du courrier par Wanadoo ?

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
0
DJ-Matthieu
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
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
0
Dj-Matthieu
 
Il ne faut pas tout envoyer d'un coup. <-- c'est ce que j'entendais pas un temps entre chaque envoi.

Matt.
0
Gloubi
 
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
0
imaday Messages postés 1 Statut Membre
 
please;
si vous pouvez me guider pour telecharger une appllication chat multiutilisateur en php qui utilise les sockets .
et merci bcp.
0