• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sld

PHP + hi5 + fsockopen

8 mensagens neste tópico

Viva pessoal,

Tenho que criar um script que faça upload de fotos para o hi5, a minha dúvida não reside no script em si, mas em como deve ser feito, passo a explicar;

Para fazer upload de fotos de um determinado utilizador é necessário que este se identifique, esta parte já está feita, ao ser dado o username/password o script faz o login no hi5.

A minha dúvida está em como manter o utilizador logged in, visto que estas operações são feitas em dois "pedidos" diferentes, o 1º efectua o login, e o 2º faria o upload da foto!

Ideias para fazer algo semelhante a isto?

PS: Não posso utilizar curl!

Ideias e opiniões são bem vindas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não estou em erro o site utiliza Cookies para se manter autenticado.

Quando fazes o primeiro pedido, deves guardar a cookie que tens de utilizar no pedido seguinte.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho aqui algo de género, só não é com envio de ficheiros:

<?
global $botusername, $botpassword;
$to=arg($args, 0);
$note=arg($args, 1, true);
$note="Hi there ".$to.",<br />This note was sent to you by ".$from." in ".str_replace("chat:","#",$channel)." at ".time()." (Unix Timestamp)<br />Note's contents:<br /><pre>".$note."</pre><br /><br />Service bought to you by :devviva-os-torresmos: and dAmn :aww:";
// gets cookie

$host = 'www.deviantart.com';
$service_uri = '/users/login';
$vars ='username='.$botusername.'&password='.$botpassword."&reusetoken=1";
$cookie="";

$header = "Host: $host\r\n";
$header .= "User-Agent: getcookie.php/0.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($vars)."\r\n";
$header .= "Connection: close\r\n\r\n";

$fp = fsockopen($host, 80, $errno, $errstr);
if(!$fp){
	$dAmn->say("$errstr ($errno)<br/>\n", $c);
	$dAmn->say($fp, $c);
}else{
    fputs($fp, "POST $service_uri  HTTP/1.1\r\n");
    fputs($fp, $header.$vars);
    fwrite($fp, $out);
	$a=1;
	$b=7;
	$times=3;
	while(!feof($fp) && $a<$b){
		$get=fgets($fp, 128);
		if($a>$times){
			$cookie=$cookie.$get;
		}
		$a++;
	}
}
fclose($fp);
$cookie=str_replace("Set-Cookie: ", "", $cookie);
file_put_contents($dir."savedata/cookie.txt", unserialize(str_replace("userinfo=","",urldecode($cookie))));

// gets note's page
$host = 'my.deviantart.com';
$service_uri = '/notes/send';
$vars="ref=http://my.deviantart.com/notes/&recipients=".urlencode($to)."&subject=".urlencode("dAmnNote")."&body=".urlencode($note);
$file= "";

$header = "Host: $host\r\n";
$header .= "Cookie: ".$cookie."\r\n";
$header .= "User-Agent: sendnote.php/0.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($vars)."\r\n";
$header .= "Connection: close\r\n\r\n";

$fp = fsockopen($host, 80, $errno, $errstr);
if(!$fp){
dAmn_msg("$errstr ($errno)<br/>\n", $channel);
dAmn_msg($fp,$channel);
}else{
   fputs($fp, "POST $service_uri  HTTP/1.1\r\n");
   fputs($fp, $header.$vars);
   fwrite($fp, $out);
$x=0;
while (!feof($fp)) {
   	   $get=fgets($fp, 128);
	if($x>9) $file=$file.$get;
	$x++;
   }
}
fclose($fp);
dAmn_msg("$from: Sucessfully sent note to $to",$channel);
?> 

Make it suit your own needs ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por nao:

www.hi5.com

login...

carregar foto / upload picture

espera-se....

....

.

.

.

.

.

.

txara!! foto uploaded! :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por nao:

www.hi5.com

login...

carregar foto / upload picture

espera-se....

txara!! foto uploaded! :thumbsup:

Pois por acaso é mais facil ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, parece que fui mal intepretado, provavelmente não me expliquei bem...

Volto a explicar, a minha dúvida prendia-se com a preservação dos cookies capturados no 1º pedido, de qualquer das formas algo semelhante a isto deve resolver:

$header .= "Cookie: ".$cookie."\r\n";

Obrigado pelos comentários do shumy pela confirmação de algo que tinha ideia de ser uma solução possível e pelo do djthyrax a exemplificar essa mesma ideia!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, parece que fui mal intepretado, provavelmente não me expliquei bem...

Volto a explicar, a minha dúvida prendia-se com a preservação dos cookies capturados no 1º pedido, de qualquer das formas algo semelhante a isto deve resolver:

$cookie=str_replace("Set-Cookie: ", "", $cookie);

Obrigado pelos comentários do shumy pela confirmação de algo que tinha ideia de ser uma solução possível e pelo do djthyrax a exemplificar essa mesma ideia!

Eu vou reformular uma coisa que está mal no while para o cookie. Só tens que ir buscar dados até te aparecer um \r\n\r\n. Depois, para ires buscar cada cookie é fácil, viva o explode() :thumbsup:
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora