Posts filed under 'Internet'

Criando um web service básico usando PHP, MySQL, XML e JSON

Os web services estão dominando todo o mundo. Algumas pessoas creditam o vertiginoso crescimento do Twitter a disponibilização de uma simples, mas rica, API. Por que não utilizar este mesmo modelo para os seus próprios sites?

Segue um exemplo de como criar um web service básico que provê uma resposta XML ou JSON usando apenas PHP e MySQL. O objetivo deste webservice é listar os últimos artigos de determinado autor em um blog do WordPress, mas entendendo a idéia, você poderá criar qualquer outra coisa.

<?php

	/* Solicita o parâmetro "usuario"  */
	if(isset($_GET['usuario']) and intval($_GET['usuario'])) {

		/* verifica se a variável foi passada, ou define o valor das variáveis */
		$numero_de_artigos = isset($_GET['artigos']) ? intval($_GET['artigos']) : 10; //10 é o padrão
		$formato = (isset($_GET['formato']) and strtolower($_GET['formato']) == 'json') ? 'json' : 'xml'; //xml é o padrão
		$id_do_usuario = intval($_GET['usuario']); //sem valor padrão

		/* conecta ao banco de dados */
		$conexao = mysql_connect('servidor','usuario','senha') or die('Não foi possível conectar ao banco de dados');
		mysql_select_db('banco',$conexao) or die('Não foi possível selecionar o banco de dados');
		mysql_set_charset('utf8', $conexao); //se o seu servidor suporta, é uma boa prática. Veja: http://bit.ly/W38Xy

		/* seleciona os artigos do banco de dados */
		$consulta = "SELECT post_title, guid FROM wp_posts WHERE post_author = $id_do_usuario AND post_status = 'publish'
		ORDER BY ID DESC LIMIT $numero_de_artigos";

		$resultado = mysql_query($consulta,$conexao) or die('Consulta com problemas:  '.$consulta);

		/* cria um array mestre com os registros */
		$artigos = array();
		if(mysql_num_rows($resultado)) {
			while($artigo = mysql_fetch_assoc($resultado)) {
				$artigos[] = array('post'=>$artigo);
			}
		}

		/* extrai os dados no formato expecificado */
		if($formato == 'json') {
			header('Content-type: application/json');
			echo json_encode(array('artigos'=>$artigos));
		}
		else {
			header('Content-type: text/xml');
			echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
			echo '<posts>'."\n";
			foreach($artigos as $indice => $artigo) {
				if(is_array($artigo)) {
					foreach($artigo as $chave => $valor) {
						echo "\t<",$chave,'>'."\n";
						if(is_array($valor)) {
							foreach($valor as $tag => $val) {
								echo "\t\t".'<',$tag,'>',$val,'</',$tag,'>'."\n";
							}
						}
						echo "\t".'</',$chave,'>'."\n";
					}
				}
			}
			echo '</posts>'."\n";
		}

		/* desconecta do banco de dados */
		@mysql_close($conexao);
	}

?>

Com o aumento do número de pessoas que acessam seu web service ( que felicidade! ), você precisará adequar a validação antes de se conectar ao banco de dados para evitar ataques de injeção SQL.

Este web service funciona assim: Quando tivermos os resultados desejados do banco de dados, ciclicamente pegamos os resultados e preencheos nosso vetor de resultados. Dependendo do tipo de resposta desejada, nós enviamos os cabeçalhos adequados e o resultado no formato solicitado.

Segue um exemplo de URL que pode ser utilizada para se obter o resultado deste web service:

http://enderecodomeusite.com/web-service.php?usuario=2&artigos=15

Add comment Setembro 16, 2009

RSS? Minha tia morreu disso!

Hoje, no Google Zeitgeist, que mostra os termos mais buscados no Google encontrei os seguintes resultados nas três primeiras posições da lista de definições buscadas em 2007:

  1. what is love
  2. what is autism
  3. what is rss

    Não pude deixar de notar que nesta ferramenta o terceiro termo mais procurado é sobre a definição de RSS. Procurei uma comparação no Google Trends sobre RSS e Autismo e me surpreendi em ver o RSS mais bem colocado. Hora! Que bicho é esse?

    RSS? Minha tia morreu disso!

    Bricadeira, RSS é a sigla de Really Simple Syndication (v 2.0) e é um sistema de alimentação de informações muito utilizado na Internet atual. Sistemas de blogs e portais disponibilizam as suas informações neste formato para que as mesmas sejam lidas em diversos sistemas da web ou do seu desktop.

    Existem diversos componentes e bibliotecas, em quase todas as linguagens para trabalhar com este formato. Para quem gosta de ASP.Net, acho interessante dar uma olhada no RSS Toolkit, ou para quem programa PHP no manual do PHP sobre o DOM XML.

    Feliz Natal!

    Add comment Dezembro 25, 2007

    PHP tem sintaxe alternativa da discórdia

    O PHP é muito interessante, existem formas alternativas de se efetuar a mesma operação, um exemplo disso é a sintaxe do if por exemplo, que pode ser a tradicional:

    if (expressão) { <operações>} else { <operações>}

    Ou:

    if (expressão) : <operações> else: <operações> endif

    Para quem está acostumado com VB a sintaxe alternativa é bem fácil de gravar, mas isso gera muita polêmica, tem gente que nem intende de uma forma, quanto mais tendo duas ou três. O bom é que está ae, e isso que importa.

    <?php
    $variavel = "cassio";
    if ($variavel == 2):
    echo "variavel = 2";
    elseif ($variavel == 7):
    echo "variavel é 7";
    elseif ($variavel == "cassio"):
    echo "variavel =cassio";
    else:
    $variavel = "abracadabra! a variavel nao possui nenhum dos valores definidos.";
    echo $variavel;
    endif
    ?>
    

    Novembro 17, 2007

    Bem vindo

    Aqui publicarei informações sobre diversas linguagens de programação e artimanhas conhecidas na Internet com o objetivo de resolver os principais problemas da didática e mostrar que existem ferramentas disponíveis que não são utilizadas como deveriam.

    Junho 5, 2007


    RSS Cassio Santos

    Categorias

    Calendário

    Dezembro 2009
    S T Q Q S S D
    « Set    
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  

    Feeds

    Tags

    Aritmética Atribuição Basic Cassio Santos Concatenação Controller Funções recursivas IDE Internet Lógica Model Model-View-Controller Modelo de página MVC Net Beens Operadores Page Template Drop Down PHP Programação Programação Web Progressão Aritimética rss Sucessão Aritimética VB VB.Net View Visual Basic webservice Wordpress WP

    Internet