<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Matheus Bratfisch &#187; howto</title>
	<atom:link href="http://www.matbra.com/tag/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.matbra.com</link>
	<description>&#34;Cogito ergo sum&#34;</description>
	<lastBuildDate>Tue, 20 Dec 2011 00:03:21 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Estatísticas no seu TinyURL.</title>
		<link>http://www.matbra.com/2009/07/02/estatisticas-no-seu-tinyurl/</link>
		<comments>http://www.matbra.com/2009/07/02/estatisticas-no-seu-tinyurl/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 20:48:50 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[como fazer]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[little url]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[tinyurl]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=336</guid>
		<description><![CDATA[Olá, Algum tempo atrás eu mostrei como criar um sistema próprio de Tiny-URL, estava curioso para saber como andavam os acessos aos meus links distribuidos por outros endereços, decidi implementar um sistema simples de controle de acessos. Inicialmente você precisa adicionar estas duas tabelas em seu banco de dados: CREATE TABLE access &#40; &#160; aid [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Algum tempo atrás eu mostrei como <a href="http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/">criar um sistema próprio de Tiny-URL</a>, estava curioso para saber como andavam os acessos aos meus links distribuidos por outros endereços, decidi implementar um sistema simples de controle de acessos.</p>
<p>Inicialmente você precisa adicionar estas duas tabelas em seu banco de dados: </p>
<div class="codesnip-container" >
<div class="sql codesnip" style="font-family:monospace;"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> access <span class="br0">&#40;</span><br />
&nbsp; aid INTEGER <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span><span class="sy0">,</span><br />
&nbsp; urls_uid INTEGER <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp; information_iid INTEGER <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp; date DATE <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp; <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span><span class="br0">&#40;</span>aid<span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp; <span class="kw1">INDEX</span> access_FKIndex1<span class="br0">&#40;</span>information_iid<span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp; <span class="kw1">INDEX</span> access_FKIndex2<span class="br0">&#40;</span>urls_uid<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span>;</p>
<p><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> information <span class="br0">&#40;</span><br />
&nbsp; iid INTEGER <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span><span class="sy0">,</span><br />
&nbsp; ip VARCHAR<span class="br0">&#40;</span>255<span class="br0">&#41;</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp; <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span><span class="br0">&#40;</span>iid<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span>;</div>
</div>
<p>Após isso você deve fazer umas alterações no seu function-little-url.php mais especificamente no take_url($ur) deixe-o da seguinte maneira:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">function</span> take_lurl<span class="br0">&#40;</span><span class="re0">$lurl</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">global</span> <span class="re0">$link</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$q</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT * FROM `urls` WHERE `unique_chars` = &#8216;&quot;</span><span class="sy0">.</span><span class="re0">$lurl</span><span class="sy0">.</span><span class="st0">&quot;&#8217;&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$r</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$q</span><span class="sy0">,</span> <span class="re0">$link</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// Realiza consulta.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a><span class="br0">&#40;</span><span class="re0">$r</span><span class="br0">&#41;</span><span class="sy0">&gt;</span>0<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$info</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_fetch_array"><span class="kw3">mysql_fetch_array</span></a><span class="br0">&#40;</span><span class="re0">$r</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$url</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;url&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="co1">// Pega endereço real</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$uid</span> <span class="sy0">=</span> <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;uid&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="co1">// Pega ID do endereço</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$ip</span> <span class="sy0">=</span> <span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st_h">&#8216;REMOTE_ADDR&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="co1">// Pega IP do usuário</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$qr</span> <span class="sy0">=</span> <span class="st0">&quot;select iid from `information` where ip = &#8216;&quot;</span><span class="sy0">.</span><span class="re0">$ip</span><span class="sy0">.</span><span class="st0">&quot;&#8217;&quot;</span> <span class="sy0">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$rr</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$qr</span><span class="sy0">,</span> <span class="re0">$link</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<span class="co1">// Procura se este IP já está no banco de dados</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a><span class="br0">&#40;</span><span class="re0">$rr</span><span class="br0">&#41;</span><span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// Caso esteja insere somente um acesso novo proveniente deste IP</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$iid</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_result"><span class="kw3">mysql_result</span></a><span class="br0">&#40;</span><span class="re0">$rr</span><span class="sy0">,</span><span class="nu0">0</span><span class="sy0">,</span><span class="st0">&quot;iid&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;INSERT INTO `access` (urls_uid,information_iid,date) values (&quot;</span><span class="sy0">.</span><span class="re0">$uid</span><span class="sy0">.</span><span class="st0">&quot;, &quot;</span><span class="sy0">.</span><span class="re0">$iid</span><span class="sy0">.</span><span class="st0">&quot;, now())&quot;</span><span class="sy0">,</span> <span class="re0">$link</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="co1">// Caso não esteja, cria um registro com este IP e após cria um acesso.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$qr</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;INSERT INTO `information` (ip) values (&#8216;&quot;</span><span class="sy0">.</span><span class="re0">$ip</span><span class="sy0">.</span><span class="st0">&quot;&#8217;)&quot;</span><span class="sy0">,</span> <span class="re0">$link</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$iid</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_insert_id"><span class="kw3">mysql_insert_id</span></a><span class="br0">&#40;</span><span class="re0">$qr</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;INSERT INTO `access` (urls_uid,information_iid,date) values (&quot;</span><span class="sy0">.</span><span class="re0">$uid</span><span class="sy0">.</span><span class="st0">&quot;, &quot;</span><span class="sy0">.</span><span class="re0">$iid</span><span class="sy0">.</span><span class="st0">&quot;, now())&quot;</span><span class="sy0">,</span> <span class="re0">$link</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;Sorry, link not found!&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$url</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Neste sistema, existe uma tabela de IPs que já acessaram as URLs, quando uma nova URL é consultada, ele verifica se o IP já está cadastrado, caso esteja cria somente um novo acesso para esse IP no endereço X, caso não esteja cadastra este IP e cria o acesso para este IP no endereço X. </p>
<p><a href="http://www.matbra.com/?attachment_id=351">Como criar um Tiny URL com suporte para estatisticas</a></p>
<p>Matheus</p>
<p>PS: Para consultar os acessos você deve acessar seu banco de dados e realizar consultas manualmente.<br />
PS2: Para seu Tiny URL funcionar, você deve adicionar algumas regras de Rewriting. Você pode ver elas em <a href="http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/">Criar um sistema próprio de Tiny-URL</a></p>
<p>Edit: Corrigido erro que não adicionava a data e hora quando o IP  já estava na tabela.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/07/02/estatisticas-no-seu-tinyurl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criando seu Proprio Tiny-URL.</title>
		<link>http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/</link>
		<comments>http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/#comments</comments>
		<pubDate>Sat, 09 May 2009 06:49:18 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[como fazer]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[little url]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[tinyurl]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=221</guid>
		<description><![CDATA[Boa noite a todos, Ontem pela madrugada estava pensando no Twitter e que ele reduz urls grandes automaticamente para um sistema escolhidos por eles. Então, estava a pensar em como fazer o meu próprio sistema criação de urls pequenas (tiny url) e pesquisei um pouco no Google. Achei várias referências que utilizei como base para [...]]]></description>
			<content:encoded><![CDATA[<p>Boa noite a todos,</p>
<p>Ontem pela madrugada estava pensando no Twitter e que ele reduz urls grandes automaticamente para um sistema escolhidos por eles. Então, estava a pensar em como fazer o meu próprio sistema criação de urls pequenas (tiny url) e pesquisei um pouco no Google. Achei várias referências que utilizei como base para elaboração do meu e os links das mesmas você poderá encontrar no final deste post.</p>
<p>Primeiramente você deve criar uma tabela em seu banco de dados com as seguintes características:</p>
<blockquote><p>
# CREATE TABLE IF NOT EXISTS `urls` (<br />
#   `uid` int(11) NOT NULL auto_increment,<br />
#   `url` text default NULL,<br />
#   `unique_chars` varchar(25) BINARY NOT NULL,<br />
#   PRIMARY KEY  (`uid`),<br />
#   UNIQUE KEY `unique_chars` (`unique_chars`)<br />
# );  </p></blockquote>
<p><em>Este código foi pego do Abhise no seu post &#8220;<a href="http://ad1987.blogspot.com/2008/12/create-your-own-tinyurl-with-php-and.html" target="_blank">Create your own tinyurl with php and mySQL</a>&#8221; que foi minha maior referência, da mesma peguei várias funções mas realizei algumas alterações para melhor eficiência e também tradução para você. Como no código acima foi adicionado o &#8216;BINARY&#8217; para o unique reconhecer diferença entre AAAA e aaaa, por exemplo.</em></p>
<p>O Abhise diz para criarmos tais e tais arquivos, eu particularmente, criei um arquivo de funções onde adicionei as diversas funções utilizadas e simplesmente chamei as mesmas nos seus respectivos arquivos. </p>
<p>&#8212;- Para ler o artigo inteiro acesse o link abaixo.<br />
<span id="more-221"></span></p>
<p>Inicialmente precisamos de uma função para conectar/desconectar do mysql e também adicionei algumas variáveis e &#8220;diretivas&#8221; </p>
<blockquote><p>
error_reporting(E_ALL);<br />
$link;<br />
$config;<br />
function connect_db_lurl() {<br />
	global $link;<br />
	global $config;<br />
	$hostname = &#8220;localhost&#8221;;<br />
	$username = &#8220;USUARIO&#8221;;<br />
	$password = &#8220;SENHA&#8221;;<br />
	$dbname = &#8220;DATABASE&#8221;;<br />
	$link = mysql_connect($hostname, $username, $password);  // Conecta ao mysql.<br />
	mysql_select_db($dbname) or die(&#8220;Unknown database!&#8221;);   // Seleciona o Banco de dados.<br />
	$config["domain"] = &#8220;http://seudominio.com&#8221;;  // Define a configuração da URL inicial<br />
}</p>
<p>function close_db_lurl() {<br />
	mysql_close(); // Fecha a conexão com o banco de dados<br />
}
</p></blockquote>
<p>Segundo passo foi criar uma função para redirecionamento, ou seja, uma função que redirecionasse para URL original</p>
<blockquote><p>function redirect($url) {<br />
	header(&#8220;Location:&#8221;.$url); // Redireciona para a url.<br />
}</p></blockquote>
<p>Logo em seguida utilizei a função já criada por Abhise para gerar a sequencia de caracteres. (Adicionei algumas letras que ele não estava utilizando elevando assim muito a quantidade de combinações possíveis)</p>
<blockquote><p>function generate_chars() {<br />
	$num_chars = 6; // Tamanho que você deseja as strings<br />
	$i = 0;<br />
	$my_keys = &#8220;123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#8221;; // Caracteres que valem para formação de endereço<br />
	$keys_length = strlen($my_keys);<br />
	$url  = &#8220;&#8221;;<br />
	while($i<$num_chars) {  // Gera sequencia aleatoria<br />
		$rand_num = mt_rand(1, $keys_length-1);<br />
	   	$url .= $my_keys[$rand_num];<br />
		$i++;<br />
	}<br />
	return $url;<br />
}  </p></blockquote>
<p>Utilizamos também um método para verificar se a chave é única: </p>
<blockquote><p>function isUnique($chars)  {<br />
	global $link;<br />
	$q = &#8220;SELECT * FROM `urls` WHERE `unique_chars`=&#8217;&#8221;.$chars.&#8221;&#8216;&#8221;;<br />
	$r = mysql_query($q, $link);  // Verifica se a chave é unica.<br />
	if( mysql_num_rows($r)>0 ) {<br />
		return false;<br />
	} else {<br />
		return true;<br />
	}<br />
}  </p></blockquote>
<p>E outro para verificar se a URL já existe no banco de dados:</p>
<blockquote><p>function isThere($url) {<br />
	global $link;<br />
	$q = &#8220;SELECT * FROM `urls` WHERE `url`=&#8217;&#8221;.$url.&#8221;&#8216;&#8221;;<br />
	$r = mysql_query($q);  // Verifica se já existe a url<br />
	if(mysql_num_rows($r)>0) {<br />
		return true;<br />
	} else {<br />
		return false;<br />
	}<br />
}</p></blockquote>
<p>Por fim, a função para gerar as urls: </p>
<blockquote><p>function create() {<br />
	global $link;<br />
	global $config;<br />
	$chars = generate_chars(); // Gera sequencia de caracteres.</p>
<p>	while(!isUnique($chars)){ // Verifica se é unico, se não for gera denovo.<br />
	  $chars = generate_chars();<br />
	}</p>
<p>	$url = $_GET["u"]; // Pega o endereço que está em ?u=endereço<br />
	$url = trim($url); // Retira espaços em branco do inicio e do fim<br />
	$url = mysql_real_escape_string($url);</p>
<p>	if(!isThere($url)) { // Caso não exista o endereço no banco.<br />
		$q = &#8220;INSERT INTO `urls` (url, unique_chars) VALUES (&#8216;&#8221;.$url.&#8221;&#8216;, &#8216;&#8221;.$chars.&#8221;&#8216;)&#8221;;<br />
		$r = mysql_query($q, $link); // Insere o endereço<br />
		if(mysql_affected_rows()) {<br />
			$q = &#8220;SELECT * FROM `urls` WHERE `url`=&#8217;&#8221;.$url.&#8221;&#8216;&#8221;;<br />
			$r = mysql_query($q);<br />
			$row = mysql_fetch_row($r);<br />
			echo $config["domain"].&#8221;/&#8221;.$row[2]; // Imprime endereço para acesso da nova url<br />
		} else {<br />
			 echo &#8220;Desculpe, problemas com o banco de dados.&#8221;;<br />
		}<br />
	} else { // Caso já exista<br />
		$q = &#8220;SELECT * FROM `urls` WHERE `url` = &#8216;&#8221;.$url.&#8221;&#8216;&#8221;;<br />
		$r = mysql_query($q); // Seleciona endereço para URL<br />
		$row = mysql_fetch_row($r);<br />
		echo $config["domain"].&#8221;/&#8221;.$row[2]; // Imprime endereço para acesso da url.<br />
 	}<br />
}</p></blockquote>
<p>Olhando o código algum tempo depois resolvi criar outra função para Pegar o endereço:</p>
<blockquote><p>function take_lurl($lurl) {<br />
	global $link;<br />
	$q = &#8220;SELECT url FROM `urls` WHERE `unique_chars` = &#8216;&#8221;.$lurl.&#8221;&#8216;&#8221;;<br />
	$r = mysql_query($q, $link); // Pega endereço original para tal string.<br />
	if(mysql_num_rows($r)>0) {<br />
		 $info = mysql_fetch_array($r);<br />
		 $url = $info["url"];<br />
	} else {<br />
		echo &#8220;Sorry, link not found!&#8221;;<br />
	}<br />
	return $url;<br />
}</p></blockquote>
<p>Criei o arquivo &#8220;functions-little-url.php&#8221; com os códigos anteriores e os demais arquivos dessa maneira: </p>
<p>index.php:</p>
<blockquote><p><?<br />
ob_start(); //Inicia Buffer de saida<br />
include("functions-little-url.php");<br />
connect_db_lurl();<br />
$lurl = $_GET["u"]; //Sequencia de caracteres<br />
$url = take_lurl($lurl);<br />
redirect($url);<br />
close_db_lurl();<br />
ob_end_flush(); // Fecha buffer de saida<br />
?></p></blockquote>
<p>create.php:</p>
<blockquote><p><?<br />
include("functions-little-url.php");<br />
connect_db_lurl();<br />
create();<br />
close_db_lurl();<br />
?></p></blockquote>
<p>Até aqui tranquilo, logo em seguida devemos adicionar o Mod_Rewrite no Apache e adicionar as seguintes linhas no .htaccess</p>
<blockquote><p><IfModule mod_rewrite.c><br />
RewriteEngine On<br />
RewriteRule   ^([1-9a-zA-Z]*)$ index.php\?u=$1 [L]<br />
</IfModule></p></blockquote>
<p>Eu fiz o meu dessa maneira, como foi descrito nas referências, realizando algumas modificações. Tudo funcionou bem.</p>
<p>Como eu utilizo o sistema wordpress e gostaria de utilizar o mesmo (que já usava mod_rewrite) junto dessa minha nova funcionalidade tive que pesquisar mais sobre este módulo para apache. Então caso você deseje utilizar este sistema junto ao seu sistema WordPress faça da seguinte maneira:  </p>
<blockquote><p><IfModule mod_rewrite.c><br />
RewriteEngine On<br />
RewriteBase /</p>
<p>RewriteCond %{REQUEST_FILENAME} !-f # Verifica se a página acessada não é um arquivo real<br />
RewriteCond %{REQUEST_FILENAME} !-d# Verifica se a página acessada não é um diretório<br />
RewriteRule ^([A-Za-z0-9]{6})$ /lurl/index.php?u=$1 [L] # Caso coincida com a expressão regular redirecione para /lurl/index.php?u=$1 onde /lurl/ é o diretório que está os meus arquivos de tiny-url e [L] indica que é a ultima instrução a ser executada. </p>
<p># Caso não feche com a parte em cima continua nas regras &#8220;padrões&#8221; do WordPress<br />
RewriteCond %{REQUEST_FILENAME} !-f # Verifica se a página acessada não é um arquivo real<br />
RewriteCond %{REQUEST_FILENAME} !-d# Verifica se a página acessada não é um diretório<br />
RewriteRule . /index.php [L]<br />
</IfModule></p></blockquote>
<p>Para criar URLs acesse o endereço create.php?u=ENDEREÇO_DO_SITE<br />
Para acessar URLs o arquivo index.php cuidara disso para você.</p>
<p>Você pode baixar estes arquivos de <a href="http://www.matbra.com/?attachment_id=219">Como criar seu proprio sistema de TinyURL</a> aqui.</p>
<p>Qualquer dúvida, sinta-se a vontade para entrar em contato comigo. E em breve estou pensando em disponibilizar esse &#8220;compressor&#8221; de URL como um serviço do meu blog. Lembrando que você não deve ter pastas com nomes do mesmo tamanho que o utilizado pelo L-Url.</p>
<p>Abraço a todos,<br />
Matheus Bratfisch</p>
<p>PS: Eu tinha feito algo mais bonito, com Objetos e tudo mais, porém após ter feito os códigos e tentar testar descobri que o meu PHP não estava atualizado, então assim que eu atualizar o mesmo eu testo e posto as modificações para você. </p>
<p>Referências:<br />
&#8212;- &#8220;Tiny Url&#8221;:<br />
<a href="http://www.php.net" target="_blank">www.php.net</a><br />
<a href="http://www.wynia.org/wordpress/2007/05/06/making-your-own-tiny-urls-with-php/" target="_blank">Wynia.org</a><br />
<a href="http://www.htmlcenter.com/blog/make-your-own-tinyurl-service/" target="_blank">htmlCenter</a><br />
&#8212;- &#8220;Mod Rewrite&#8221;:<br />
<a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html" target="_blank"> Apache Mod Rewrite</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Damn Small Linux no VirtualBox 2.2 e JAVA</title>
		<link>http://www.matbra.com/2009/04/29/damn-small-linux-no-virtualbox-22-e-java/</link>
		<comments>http://www.matbra.com/2009/04/29/damn-small-linux-no-virtualbox-22-e-java/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 05:30:27 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[2.2]]></category>
		<category><![CDATA[banco]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[maquina virtual]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=132</guid>
		<description><![CDATA[Bom inicio de madrugada leitores, Esses dias estava conversando com um amigo sobre autenticação de banco, que por exemplo, no banco do brasil, você deve cadastrar a maquina para conseguir fazer certas ações nos seus sites. Chegamos a conclusão que era um saco fazer isso sempre que mudavamos de maquina, atualizavamos sistema operacional ou coisas [...]]]></description>
			<content:encoded><![CDATA[<p>Bom inicio de madrugada leitores, </p>
<p>Esses dias estava conversando com um amigo sobre autenticação de banco, que por exemplo, no banco do brasil, você deve cadastrar a maquina para conseguir fazer certas ações nos seus sites. Chegamos a conclusão que era um saco fazer isso sempre que mudavamos de maquina, atualizavamos sistema operacional ou coisas assim. Então estava pensando e tive uma idéia interessante, porque não pegar um linux que fosse super leve, instala-lo em uma virtualbox e assim utiliza-lo sempre para esse tipo de ação. Pensando nisso, pesquisei um pouco na internet sobre distribuições de linux leves e conversei com algumas pessoas, como o Giovani, e resolvi instalar o DSL (<a href="http://damnsmalllinux.org/download.html" target="_blank">Damn Small Linux</a>). </p>
<p>Bom, criei minha maquina virtual com o auxilio do virtualbox, baixei a ultima versão do DSL e resolvi instalar o mesmo. Iniciei a maquina virtual e vi que ele estava executando como livecd, li um pouco na internet e vi que ele era &#8220;dedicado&#8221; ao uso em lives cds, porem que ele permitia a instalação do mesmo. Para efetuar a instalação li <a href="http://blogs.sun.com/AngeloJ/entry/virtualbox_and_dsl_damn_small" target="_blank">este</a> artigo. Como ele está em ingles, vou traduzi-lo para que você não passe nenhum sufoco. Então vamos lá.</p>
<p>Digite:<br />
 sudo -s<br />
 cfdisk</p>
<p>- Selecione &#8216;Y&#8217; quando perguntar se você quer começar uma &#8220;zero table&#8221;.<br />
Agora você verá o cfdisk. Use as setas e selecione &#8220;New&#8221;</p>
<p>- Selecione &#8220;Primary&#8221; então escolha o tamanho.<br />
- Selecione &#8220;Bootable&#8221;<br />
- Selecione &#8220;Write&#8221;<br />
- Quando perguntado com um Y/N escolha Y (Ele pergunta se você tem certeza que deseja escrever)<br />
- Selecione &#8220;Quit&#8221;</p>
<p>Agora de volta ao &#8220;prompt&#8221; digite &#8220;mkfs /dev/hda1&#8243;<br />
- Digite &#8220;dsl-hdinstall&#8221;<br />
- Você será questionado sobre o drive de destino, digite hda1 e pressione enter.<br />
- Selecione Y para multiuser login.<br />
- Selecione Y para usar o ext3 como sistema de arquivos.<br />
- Selecione Y para continuar.<br />
- Selecione Y quando for questionado &#8220;Proceed to install a boot loader&#8221;<br />
- Selecione G para grub.<br />
- Selecione Y quando perguntado se você quer reiniciar. </p>
<p>Importante: Na tela de boot do Virtualbox, pressione &#8220;Machine->Pause&#8221; no menu.<br />
- Pressione &#8220;Devices->Unmoun Cd/DVD-ROM&#8221;<br />
- Pressione &#8220;Machine->Resume&#8221; e continue o boot do hd.<br />
Você deverá ser questionado de uma senha para &#8220;root&#8221; e para o usuario &#8220;dsl&#8221; </p>
<p>Se o seu DSL desktop iniciar você instalou corretamente o mesmo para seu HD.</p>
<p>Bom, após terminada a instalação percebi que meu mouse (usb) não estava funcionando. Então pesquisei um pouco na internet e descobri que eu deveria executar o comando &#8220;xsetup.sh&#8221; e na hora de escolher o mouse colocar como se ele não fosse USB. Testado e vua-la, funcionando! </p>
<p>Para instalar o java para o firefox faça o seguinte&#8230;</p>
<p>Acesse <a href="http://www.java.com/en/download/linux_manual.jsp" target="_blank">http://www.java.com/en/download/linux_manual.jsp</a> , baixe a versao para seu linux e siga os passos que estao ao lado do mesmo em Instructions.</p>
<p>Nao vou traduzir o mesmo agora, pois estou morto de cansado e estou indo dormir. Mas amanha ou assim que eu tiver um tempo maior faço a traduçao dos passos que eu segui.</p>
<p>Abraço a todos,<br />
Matheus</p>
<p><a href="http://www.matbra.com/2009/04/29/damn-small-linux-no-virtualbox-22-e-java/">Damn Small Linux @ VirtualBox with Java English Version</a></p>
<p>PS: Utilizar uma maquina virtual com linux é muito mais seguro do que o windows, então se você é usuario do windows não se desanime, tem como você instalar uma maquina virtual dentro do seu windows e utilizar o linux para ter mais segurança nesse tipo de transação. Quer fazer isso? Google! Ou me convença a postar como. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/04/29/damn-small-linux-no-virtualbox-22-e-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como fazer relatórios&#8230;</title>
		<link>http://www.matbra.com/2009/02/26/como-fazer-relatorios/</link>
		<comments>http://www.matbra.com/2009/02/26/como-fazer-relatorios/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 02:33:25 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[como fazer]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[relatórios]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=17</guid>
		<description><![CDATA[Assim que tive as primeiras aulas e laboratórios me deparei com a tarefa de criar relatórios. O Willi Gonçalez Osaka, que me deu os laboratórios de Circuitos e tecnicas digitais criou um arquivo molde de algumas informações de como se criar um relatório. Então, para todos os que terão que fazer o mesmo aqui está [...]]]></description>
			<content:encoded><![CDATA[<p>Assim que tive as primeiras aulas e laboratórios me deparei com a tarefa de criar relatórios. O Willi Gonçalez Osaka, que me deu os laboratórios de Circuitos e tecnicas digitais criou um arquivo molde de algumas informações de como se criar um relatório. Então, para todos os que terão que fazer o mesmo aqui está o arquivo. Junto a este torno disponivel um exemplo de relatório que um amigo me enviou e eu fiz algumas mudanças.</p>
<p><a href="http://www.matbra.com/wp-content/uploads/como_fazer_relatorio.pdf" target="_blank">Como se criar um relatorio</a> (Willi G. Osaka)<br />
<a href="http://www.matbra.com/wp-content/uploads/modelo_relatorio.odt" target="_blank">Exemplo de relatório com outras informações.</a></p>
<p>Espero que esse artigo seja util,<br />
Matheus</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/02/26/como-fazer-relatorios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

