Posts TaggedPHP

A opção “template da página” sumiu do WordPress

Utilizar o WordPress como CMS requer conhecimento das funcionalidades e ferramentas que o WordPress dispõe mas e quando uma coisa não funciona como esperado? Em um projeto deparei-me com a falta do campo Modelo que deveria estar na lateral do formulário de edição de páginas.

Procurei solucionar o erro e quase modifiquei o arquivo edit-page-form.php para exibir as opções que eu definisse, mas verificando melhor a estrutura do WordPress percebi que o meu problema era muito mais simples de resolver. Era um erro com o modelo ativo. Então fica a dica: conheça a ferramenta e estude o seu funcionamento antes de colocar a culpa no código do CMS.

3 comments Setembro 21, 2009

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

Funções recursivas no PHP

Sempre gostei de fazer funções recursivas e quando posso tento utilizá-las pois acho charmosas e economizam código mas elas requerem um pouco mais de raciocíonio e atenção devido a facilidade de se criar loop/laço infinito.

( Noel Rocha )

<?php
function escape($var)
{
	if (!is_array($var)) {
		if(get_magic_quotes_gpc() == 1)
			$var = stripslashes($var);
		return mysql_escape_string($var);
	}

	foreach ($var as $chave => $valor)
		$var[$chave] = escape($valor);

	return $var;
}
?>

— Função recursiva criada pelo Noel para o escape, isto é, a anulação dos caracteres de controle de texto que uma variável de texto possuí como contra-barras, apóstrofo, aspas e aspas duplas.

Pessoalmente eu não utilizava funções recursivas pois é verdade que devemos ter muito cuidado com a criação de loops infinitos, mas a devida utilização das funções recursivas é muito importante de se compreender.

A função acima também poderia ser dividida em duas, mas neste caso teríamos mais um procedimento criado e talvez nós não o utilizássemos mais no nosso projeto. Determinadas vezes é chato ver procedimentos e mais procedimentos em alguns scripts. Crie-os quando for necessário. Se for possível, use as funções recursivas.

Além da forma apontada é claro que existem outras alternativas para o tratamento de strings no PHP para evitar uma Injeção SQL, mas este não é o nosso assunto de hoje, ok?

Add comment Junho 1, 2009

IDE NetBeans

A IDE NetBeans é muito utilizada para o desenvolvimento de scripts em Java. Em busca de ferramentas para aumentar a minha produtividade fiz o download do sistema e analisei como ele se comporta no desenvolvimento em PHP.

Pensei ter encontrado um Microsoft Visual Studio para PHP. A ferramenta pesada e perfeita… mas de perfeita ela não tem muita coisa e acredito que o Eclipse continua sendo mais produtivo. O Kate quebra o galho quando se precisa de mais velocidade.

Funcionou bem no meu Open Solaris. No Ubuntu eu tive que instalar o Java SE Development Kit (JDK) com o Java Runtime Environment (JRE).

No Windows eu não testei. Por quê? Porque a Sun não envia mais CDs com o conteúdo do sistema e eu teria que baixar todo o executável para Windows com a certeza de que não usaria esta IDE.

2 comments Setembro 1, 2008

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


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