Exportando lista de MSN

Publicado por João Pinto Neto em 06/06/2007

[ Hits: 7.942 ]

Blog: http://joaopintoneto.com/

 


Exportando lista de MSN



Neste exemplo eu tenho uma tabela com id, nome e msn dos usuários. O objetivo é efetuar o download de uma lista de todos os endereços MSN com base nos dados desta tabela. Esta lista possibilita a importação desses contatos no MSN Messenger.

Uma maneira muito interessante que encontrei de fazer isso foi efetuar o download diretamente do resultado do SELECT, onde o arquivo que é transmitido não existe no servidor. Isto é possível alterando o header e eu demonstrarei como fazer nos seguintes passos.

Para começar, crie a tabela que usaremos no exemplo:

mysql> create table usuarios(
    -> usr_id smallint(10) primary key  not null auto_increment,
    -> usr_nome varchar(40),
    -> usr_msn varchar(255)
    -> );
Query OK, 0 rows affected (0.03 sec)

Depois insira alguns dados:

mysql> insert into usuarios values
    -> (null,"Joao P. Neto","xxxxxx@hotmail.com"),
    -> (null,"Billie Joe Armstrong","biliejoe@hotmail.com"),
    -> (null,"Tre Cool","trecool@hotmail.com");
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

Pronto, agora já temos a tabela que irá prover a lista. Precisamos então criar o script que conecta, faz o SELECT e retorna os resultados para download em um arquivo no formato da importação do MSN.

Abra o seu editor de texto preferido e copie o código abaixo, salve na pasta raiz do seu servidor HTTP com o nome de export_msn.php.

OBS: Altere o que for preciso para que funcione no seu banco de dados.

<?php
//Conexão com o banco
$host = "localhost"; //host, na maioria das vezes não se altera
$user = "root"; //Usuário que conecta no banco
$pass = ""; //Senha de conexão, na maioria das vezes é nullo
$DB = "Teste"; //Essa é sua base de dados, tem que alterar! ;)

$conn = @mysql_connect($host',$user,$pass) or die('Erro Conectando');
$db = @mysql_select_db($DB,$conn) or die('Erro Selecionando Banco');

/*
Explicando basicamente, este header altera a forma do navegador receber os dados, conforme o PHP "imprime" os dados eles vão em formato stream.
filename=MSN_".date("d-m-Y").".ctt" diz qual será o nome do arquivo que o browser vai receber é "MSN_DATAATUAL.ctt"
*/

header('Content-Type: application/octet-stream');
header("Content-disposition: attachment; filename=MSN_".date("d-m-Y").".ctt");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");

$sql = "select usr_msn from usuarios";
$res = mysql_query($sql);
echo "<?xml version=\"1.0\"?>
<messenger>
  <service name=\".NET Messenger Service\">
    <contactlist>\r\n";

while($dados = mysql_fetch_array($res)) {
  echo ($dados['fun_msn'] != "")? "    <contact>".$dados['usr_msn']."</contact>\r\n" : "";
}
echo "    </contactlist>
  </service>
</messenger>\r\n";

?>

Agora abra o browser e abra o seu script, o http://CAMINHO/expot_msn.php e se tudo correr bem ele vai iniciar o processo de download.

Eu acho que é só isso pessoal.

[]'s

Outras dicas deste autor

Mostrar mensagem aleatória (arquivo texto)

Leitura recomendada

Executar um script remotamente via ssh

Liberando acesso ao Moodle para a rede externa

Validar máscara e IP inicial da rede com PHP

jQuery + PHP = Monitor de status

Usando um script PHP como inclusão do lado servidor

  

Comentários
[1] Comentário enviado por coffnix em 06/06/2007 - 10:59h

não funcionou no meu PHP5

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/chemonz/apache/export_msn.php on line 8


deu esse erro.... alguma solução?

[2] Comentário enviado por squivos em 08/12/2007 - 08:39h

Aqui comigo não da nenhum erro mas também não puxa nada . Fica assim


<messenger>

<service name=".NET Messenger Service">
<contactlist>
</contactlist>
</service>
</messenger>

Pode me ajudar???

[3] Comentário enviado por valmir-6 em 30/01/2008 - 15:28h

Como faço para deletar todosos contatos de uma vez só, ao invés de um por um?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts