Php Socket

Fermé
Gloubi - 7 juil. 2004 à 13:59
imaday Messages postés 1 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 16 mars 2009 - 16 mars 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 ++
A voir également:

7 réponses

Utilisateur anonyme
30 juil. 2004 à 09:14
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
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
7 juil. 2004 à 14:19
Salut,
Il te manquerait pas une identification pour envoyer du courrier par Wanadoo ?

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
0
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
29 juil. 2004 à 15:47
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
Il ne faut pas tout envoyer d'un coup. <-- c'est ce que j'entendais pas un temps entre chaque envoi.

Matt.
0
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 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 16 mars 2009
16 mars 2009 à 12:44
please;
si vous pouvez me guider pour telecharger une appllication chat multiutilisateur en php qui utilise les sockets .
et merci bcp.
0

Discussions similaires