<?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>Ajaxman &#187; Recursos</title>
	<atom:link href="http://www.ajaxman.net/tag/recursos/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ajaxman.net</link>
	<description>Servicios Web, Desarrollo de aplicaciones, tutoriales sobre software</description>
	<lastBuildDate>Sun, 01 Apr 2012 06:18:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[PHP] Usando el modulo de autenticación Kohana A1</title>
		<link>http://www.ajaxman.net/php-usando-el-modulo-de-autenticacion-kohana-a1.html</link>
		<comments>http://www.ajaxman.net/php-usando-el-modulo-de-autenticacion-kohana-a1.html#comments</comments>
		<pubDate>Tue, 15 Nov 2011 05:40:11 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[Manuales]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Autenticación]]></category>
		<category><![CDATA[Kohana A1]]></category>
		<category><![CDATA[Recursos]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2155</guid>
		<description><![CDATA[<p>Kohana A1, es un modulo de kohana el cual nos permite implementar de una forma efectiva, potente y clara, un sistema de autenticación, de una forma fácil y sencilla. Antes de empezar a usarlo es importante considerar que el modulo usa la el constructor crypt de PHP pero usando como hash CRYPT_BLOWFISH, esto no afecta [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Kohana A1, es un modulo de kohana el cual nos permite implementar de una forma efectiva, potente y clara, un sistema de autenticación, de una forma fácil y sencilla.</p>
<blockquote><p><strong>Antes de empezar a usarlo es importante considerar que el modulo usa la el constructor crypt de PHP pero usando como hash CRYPT_BLOWFISH, esto no afecta si estas usando PHP 5.3, pero si tienes este inconveniente al final del post pondré como solucionarlo(o cambiarte de hosting a uno mas actualizado).</strong></p></blockquote>
<p>Vamos a ver como usarlo para hacer un login.</p>
<p>Requisitos:</p>
<ul>
<li>Kohana 3.2</li>
<li>Kohana A1 module</li>
<li>
Kohana ORM</li>
<li>Kohana Database</li>
</ul>
<p>Como dicen los requisitos para usar A1 debemos de estar conectados a una base de datos, también debemos de tener un modulo que abstraiga dicha base de datos, para esto podemos usar Kohana ORM, Automodeler, Jelly, Sprig o entre otros, si estamos haciendo pruebas yo recomiendo usar Kohana ORM, y ya en base a sus requerimientos y necesidades usar el que mas les agrade.</p>
<p>Instalamos kohana de modo que quede en http://localhost/kohana1/ ,creamos una base de datos yo la llamare, &#8220;<strong>system</strong>&#8221; y le pondré  como datos de conexión ultra-seguros user:<strong>root</strong> password:<strong>root</strong>, recuerden activar el modulo database y ORM.</p>
<p>Y posteriormente nos toca, agregar el siguiente código SQL a nuestra base de datos, obviamente lo pueden modificar a su gusto, aunque de momento dejémoslo así.</p>
<div id="gist-1353924" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>&nbsp;<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="o">`</span><span class="n">users</span><span class="o">`</span> <span class="p">(</span></div><div class='line' id='LC2'>	  <span class="o">`</span><span class="n">id</span><span class="o">`</span> <span class="nb">int</span><span class="p">(</span><span class="mi">11</span><span class="p">)</span> <span class="n">UNSIGNED</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="n">AUTO_INCREMENT</span><span class="p">,</span></div><div class='line' id='LC3'>	  <span class="o">`</span><span class="n">email</span><span class="o">`</span> <span class="nb">varchar</span><span class="p">(</span><span class="mi">127</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span></div><div class='line' id='LC4'>	  <span class="o">`</span><span class="n">username</span><span class="o">`</span> <span class="nb">varchar</span><span class="p">(</span><span class="mi">32</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">DEFAULT</span> <span class="s1">&#39;&#39;</span><span class="p">,</span></div><div class='line' id='LC5'>	  <span class="o">`</span><span class="n">password</span><span class="o">`</span> <span class="nb">char</span><span class="p">(</span><span class="mi">80</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">`</span><span class="n">token</span><span class="o">`</span> <span class="nb">char</span><span class="p">(</span><span class="mi">80</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">DEFAULT</span> <span class="s1">&#39;&#39;</span><span class="p">,</span></div><div class='line' id='LC7'>	  <span class="o">`</span><span class="n">logins</span><span class="o">`</span> <span class="nb">int</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="n">UNSIGNED</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">DEFAULT</span> <span class="s1">&#39;0&#39;</span><span class="p">,</span></div><div class='line' id='LC8'>	  <span class="o">`</span><span class="n">last_login</span><span class="o">`</span> <span class="nb">int</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="n">UNSIGNED</span><span class="p">,</span></div><div class='line' id='LC9'>	  <span class="k">PRIMARY</span> <span class="k">KEY</span>  <span class="p">(</span><span class="o">`</span><span class="n">id</span><span class="o">`</span><span class="p">)</span></div><div class='line' id='LC10'><span class="p">)</span> <span class="n">ENGINE</span><span class="o">=</span><span class="n">InnoDB</span>  <span class="k">DEFAULT</span> <span class="n">CHARSET</span><span class="o">=</span><span class="n">utf8</span><span class="p">;</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1353924/42d633389d83c04aba081e70fd61226708ce97a4/users.sql" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1353924#file_users.sql" style="float:right;margin-right:10px;color:#666">users.sql</a>
            <a href="https://gist.github.com/1353924">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Ahora procedemos a bajar el modulo A1, que esta aquí: <a href="https://github.com/Wouterrr/A1/ " title="Kohana A1">https://github.com/Wouterrr/A1/ </a></p>
<p>Y lo ponemos en nuestro carpeta modules nombrando a la carpeta A1 de modo que quedara asi &#8220;modules/A1&#8243;.Dentro de dicha &#8220;modules/A1&#8243; hay una carpeta config y dentro de ella un archivo llamado a1.php, bien este archivo es el archivo de configuración del modulo Kohana A1, de igual forma que se hace con todos los módulos hay que copiar este archivo a &#8220;application/config/&#8221; para poder editarlo y que no afecte directamente al modulo.</p>
<p>El archivo se ve de la siguiente forma:</p>
<div id="gist-1353957" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="k">return</span> <span class="k">array</span><span class="p">(</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'>	<span class="s1">&#39;driver&#39;</span>     <span class="o">=&gt;</span> <span class="s1">&#39;ORM&#39;</span><span class="p">,</span> <span class="c1">// orm/jelly/mango/sprig</span></div><div class='line' id='LC6'>	<span class="s1">&#39;user_model&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;user&#39;</span><span class="p">,</span></div><div class='line' id='LC7'>	<span class="s1">&#39;cost&#39;</span>       <span class="o">=&gt;</span> <span class="mi">12</span><span class="p">,</span>    <span class="c1">// Bcrypt Cost - any number between 4 and 31 -&gt; higher = stronger hash</span></div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'>	<span class="s1">&#39;cookie&#39;</span>     <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span></div><div class='line' id='LC10'>		<span class="s1">&#39;key&#39;</span>         <span class="o">=&gt;</span> <span class="s1">&#39;a1_{name}_autologin&#39;</span><span class="p">,</span></div><div class='line' id='LC11'>		<span class="s1">&#39;lifetime&#39;</span>    <span class="o">=&gt;</span> <span class="mi">1209600</span><span class="p">,</span> <span class="c1">// two weeks</span></div><div class='line' id='LC12'>	<span class="p">),</span></div><div class='line' id='LC13'><br/></div><div class='line' id='LC14'>	<span class="s1">&#39;columns&#39;</span>   <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span></div><div class='line' id='LC15'>		<span class="s1">&#39;username&#39;</span>    <span class="o">=&gt;</span> <span class="s1">&#39;username&#39;</span><span class="p">,</span></div><div class='line' id='LC16'>		<span class="s1">&#39;password&#39;</span>    <span class="o">=&gt;</span> <span class="s1">&#39;password&#39;</span><span class="p">,</span></div><div class='line' id='LC17'>		<span class="s1">&#39;token&#39;</span>       <span class="o">=&gt;</span> <span class="s1">&#39;token&#39;</span><span class="p">,</span></div><div class='line' id='LC18'>		<span class="c1">//&#39;last_login&#39;=&gt; &#39;last_login&#39;, // (optional)</span></div><div class='line' id='LC19'>		<span class="c1">//&#39;logins&#39;    =&gt; &#39;logins&#39;      // (optional)</span></div><div class='line' id='LC20'>	<span class="p">),</span></div><div class='line' id='LC21'><br/></div><div class='line' id='LC22'>	<span class="s1">&#39;session&#39;</span>  <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span></div><div class='line' id='LC23'>		<span class="s1">&#39;type&#39;</span>        <span class="o">=&gt;</span> <span class="s1">&#39;native&#39;</span> <span class="c1">// native or database</span></div><div class='line' id='LC24'>	<span class="p">)</span></div><div class='line' id='LC25'><span class="p">);</span></div><div class='line' id='LC26'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1353957/033cdfc081efa08539b97d548b8e91a72e347a6c/a1.php" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1353957#file_a1.php" style="float:right;margin-right:10px;color:#666">a1.php</a>
            <a href="https://gist.github.com/1353957">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Aquí pongo la descripción de cada elemento:</p>
<ul>
<li><strong>driver</strong>: EL ORM que usara (ORM,jelly,mango,sprig[se pueden agregar mas pero hay que modificar el modulo o extenderlo])</li>
<li><strong>user_model</strong>: tabla(modelo) que se usara &#8216;user&#8217;</li>
<li><strong>cost</strong>: fuerza (tamaño de la clave) entre 4 y 31, lo ideal es  12, si ponen un numero muy grande tomar en cuenta que consumirá mas recursos.</li>
<li><strong>cookie</strong>: los datos de la cookie que generara a1, para hacer el login(nombre y duración)</li>
<li><strong>columns</strong>: aquí le estamos asignando a los items de A1, las columnas de la base de datos, es decir si en su base de datos el nombre de usuarios están en el campo nombre, tendrán que poner &#8216;username&#8217; => &#8216;nombre&#8217;, modificando lo que esta en el array, los campos opcionales de momento no los usaremos, aunque cabe señalar que solo guardan información extra.</li>
<li><strong>session</strong>: Aquí es donde definimos el tipo de sesión, de momento y regularmente bastara con dejarlo como esta, si su aplicación correrá en varios servidores conviene ponerlo en modo database(aunque en este caso hay que hacer un par de cosas mas, espero postear pronto sobre esto)</li>
<p>.</ul>
<p>No se les olvide activar le modulo en el bootstrap, el cual en la sección módulos debería verse así:<br />
<span id="more-2155"></span><br />
<div id="gist-1354170" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span></div><div class='line' id='LC2'><span class="c1">//more code</span></div><div class='line' id='LC3'><span class="sd">/**</span></div><div class='line' id='LC4'><span class="sd"> * Enable modules. Modules are referenced by a relative or absolute path.</span></div><div class='line' id='LC5'><span class="sd"> */</span></div><div class='line' id='LC6'><span class="nx">Kohana</span><span class="o">::</span><span class="na">modules</span><span class="p">(</span><span class="k">array</span><span class="p">(</span></div><div class='line' id='LC7'>	<span class="c1">// &#39;auth&#39;       =&gt; MODPATH.&#39;auth&#39;,       // Basic authentication</span></div><div class='line' id='LC8'>	<span class="c1">// &#39;cache&#39;      =&gt; MODPATH.&#39;cache&#39;,      // Caching with multiple backends</span></div><div class='line' id='LC9'>	<span class="c1">// &#39;codebench&#39;  =&gt; MODPATH.&#39;codebench&#39;,  // Benchmarking tool</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;A1&#39;</span>         <span class="o">=&gt;</span> <span class="nx">MODPATH</span><span class="o">.</span><span class="s1">&#39;A1&#39;</span><span class="p">,</span>           <span class="c1">//A1 authentication</span></div><div class='line' id='LC11'>	 <span class="s1">&#39;database&#39;</span>   <span class="o">=&gt;</span> <span class="nx">MODPATH</span><span class="o">.</span><span class="s1">&#39;database&#39;</span><span class="p">,</span>   <span class="c1">// Database access</span></div><div class='line' id='LC12'>	<span class="c1">// &#39;image&#39;      =&gt; MODPATH.&#39;image&#39;,      // Image manipulation</span></div><div class='line' id='LC13'>	 <span class="s1">&#39;orm&#39;</span>        <span class="o">=&gt;</span> <span class="nx">MODPATH</span><span class="o">.</span><span class="s1">&#39;orm&#39;</span><span class="p">,</span>        <span class="c1">// Object Relationship Mapping</span></div><div class='line' id='LC14'>	<span class="c1">// &#39;unittest&#39;   =&gt; MODPATH.&#39;unittest&#39;,   // Unit testing</span></div><div class='line' id='LC15'>	<span class="c1">// &#39;userguide&#39;  =&gt; MODPATH.&#39;userguide&#39;,  // User guide and API documentation</span></div><div class='line' id='LC16'>	<span class="p">));</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1354170/10f6dc8ae106e3bdeb34c471c9ca49e17c73f33f/bootstrap.php" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1354170#file_bootstrap.php" style="float:right;margin-right:10px;color:#666">bootstrap.php</a>
            <a href="https://gist.github.com/1354170">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>Ahora vamos a crear un controlador que sera en este caso el backend, el cual verificara que si estas logueado te deja entrar a ejecutar cualquier acción, si no te re-direccionara a un controlador &#8220;account&#8221; y al action &#8220;login&#8221; que tendra la vista del formulario de login, y también tendrá un link a registrarse usando este modulo A1.</p>
<p>En este controlador &#8220;backend&#8221; tenemos una action, llamada index que cargara un vista, en donde mostraremos un mensaje que dirá &#8220;bienvenido Nombre_de_usuario&#8221;</p>
<div id="gist-1354210" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span> <span class="nb">defined</span><span class="p">(</span><span class="s1">&#39;SYSPATH&#39;</span><span class="p">)</span> <span class="k">or</span> <span class="k">die</span><span class="p">(</span><span class="s1">&#39;No direct script access.&#39;</span><span class="p">);</span></div><div class='line' id='LC2'><span class="sd">/**</span></div><div class='line' id='LC3'><span class="sd"> * Controller_Backend </span></div><div class='line' id='LC4'><span class="sd"> * </span></div><div class='line' id='LC5'><span class="sd"> * Este es el backend de una aplicacion que esta usando A1 como metodo de autenticación</span></div><div class='line' id='LC6'><span class="sd"> * </span></div><div class='line' id='LC7'><span class="sd"> * @author Javier</span></div><div class='line' id='LC8'><span class="sd"> * @package Backend</span></div><div class='line' id='LC9'><span class="sd"> * </span></div><div class='line' id='LC10'><span class="sd"> */</span></div><div class='line' id='LC11'><span class="k">class</span> <span class="nc">Controller_Backend</span> <span class="k">extends</span> <span class="nx">Controller</span> <span class="p">{</span></div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">/**</span></div><div class='line' id='LC14'><span class="sd">     *</span></div><div class='line' id='LC15'><span class="sd">     * @var User $auth contains object a1 user </span></div><div class='line' id='LC16'><span class="sd">     */</span></div><div class='line' id='LC17'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="nv">$auth</span><span class="p">;</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC19'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">/**</span></div><div class='line' id='LC20'><span class="sd">     * (non-PHPdoc)</span></div><div class='line' id='LC21'><span class="sd">     * @see system/classes/kohana/Kohana_Controller::before()</span></div><div class='line' id='LC22'><span class="sd">     */</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">before</span><span class="p">()</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">parent</span><span class="o">::</span><span class="na">before</span><span class="p">();</span></div><div class='line' id='LC26'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span> <span class="o">=</span> <span class="nx">A1</span><span class="o">::</span><span class="na">instance</span><span class="p">();</span></div><div class='line' id='LC27'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_prevent_back</span><span class="p">();</span></div><div class='line' id='LC28'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="o">-&gt;</span><span class="na">logged_in</span><span class="p">()</span><span class="o">===</span> <span class="k">FALSE</span><span class="p">)</span></div><div class='line' id='LC29'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC30'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">request</span><span class="o">-&gt;</span><span class="na">redirect</span><span class="p">(</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account&#39;</span><span class="p">,</span> <span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;login&#39;</span><span class="p">)));</span></div><div class='line' id='LC31'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span><span class="p">;</span></div><div class='line' id='LC32'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC33'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">view</span><span class="o">::</span><span class="na">set_global</span><span class="p">(</span><span class="s1">&#39;logout&#39;</span><span class="p">,</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account&#39;</span><span class="p">,</span> <span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;logout&#39;</span><span class="p">)));</span></div><div class='line' id='LC34'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC35'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC36'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">action_index</span><span class="p">()</span></div><div class='line' id='LC37'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC38'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$view</span> <span class="o">=</span> <span class="nx">View</span><span class="o">::</span><span class="na">factory</span><span class="p">(</span><span class="s2">&quot;backend/home&quot;</span><span class="p">)</span></div><div class='line' id='LC39'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s2">&quot;auth&quot;</span><span class="p">,</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="p">);</span></div><div class='line' id='LC40'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC41'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">response</span><span class="o">-&gt;</span><span class="na">body</span><span class="p">(</span><span class="nv">$view</span><span class="p">);</span></div><div class='line' id='LC42'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC43'><br/></div><div class='line' id='LC44'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">private</span> <span class="k">function</span> <span class="nf">_prevent_back</span><span class="p">()</span></div><div class='line' id='LC45'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC46'>&nbsp;&nbsp;&nbsp;&nbsp;	<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">response</span><span class="o">-&gt;</span><span class="na">headers</span><span class="p">(</span><span class="s2">&quot;Cache-Control&quot;</span><span class="p">,</span><span class="s2">&quot;no-store, no-cache, must-revalidate&quot;</span><span class="p">);</span></div><div class='line' id='LC47'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC48'><span class="p">}</span> <span class="c1">// End Welcome</span></div><div class='line' id='LC49'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1354210/d4ae1cbf4b119cdc79325599c075335d0910eb70/backend.php" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1354210#file_backend.php" style="float:right;margin-right:10px;color:#666">backend.php</a>
            <a href="https://gist.github.com/1354210">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Las partes importantes a destacar son:</p>
<ul>
<li>En el método before asignamos a $this->auth (variable publica) una instancia de A1, que es el modulo que hará el login.</li>
<li>Luego preguntamos mediante el método $this->auth->logged_in() que seria lo mismo que usar A1::instance()->logged_in(), que si es FALSE, significa que no esta logeado entonces lo redirecciona a la siguiente url:</li>
<li>Route::url(&#8216;default&#8217;,array(&#8216;controller&#8217; => &#8216;account&#8217;, &#8216;action&#8217; => &#8216;login&#8217;) la cual dice: que usando el route llamado default construya un url basada en cierto controlador, cierta acción y cierto id.</li>
<li>Tenemos un action (metodo) index que mostrara una vista que estará en la carpeta backend, la vista se llama home y le digo que envié los datos de autenticación usando la variable auth.</li>
</ul>
<div id="gist-1359633" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="x">&lt;!DOCTYPE html&gt;</span></div><div class='line' id='LC2'><span class="x">&lt;html&gt;</span></div><div class='line' id='LC3'><span class="x">    &lt;head&gt;</span></div><div class='line' id='LC4'><span class="x">        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;</span></div><div class='line' id='LC5'><span class="x">        &lt;title&gt;&lt;/title&gt;</span></div><div class='line' id='LC6'><span class="x">    &lt;/head&gt;</span></div><div class='line' id='LC7'><span class="x">    &lt;body&gt;</span></div><div class='line' id='LC8'><span class="x">        &lt;div&gt;</span></div><div class='line' id='LC9'><span class="x">            &lt;p&gt;Bienvenido al sistema &lt;strong&gt;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$auth</span><span class="o">-&gt;</span><span class="na">get_user</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">email</span><span class="p">;</span> <span class="cp">?&gt;</span><span class="x">&lt;/strong&gt;&lt;/p&gt;</span></div><div class='line' id='LC10'><span class="x">            &lt;p style=&quot;float:right;&quot;&gt;</span></div><div class='line' id='LC11'><span class="x">            	&lt;a href=&quot;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$logout</span> <span class="cp">?&gt;</span><span class="x">&quot; &gt;Salir&lt;/a&gt;</span></div><div class='line' id='LC12'><span class="x">            &lt;/p&gt;</span></div><div class='line' id='LC13'><span class="x">        &lt;/div&gt;</span></div><div class='line' id='LC14'><span class="x">    &lt;/body&gt;</span></div><div class='line' id='LC15'><span class="x">&lt;/html&gt;</span></div><div class='line' id='LC16'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1359633/fbb995d48ef6bf0186137317ee2b952dacf0637d/home.php" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1359633#file_home.php" style="float:right;margin-right:10px;color:#666">home.php</a>
            <a href="https://gist.github.com/1359633">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Este es el código del controlador account, con sus metodos/acciones de registro y login.</p>
<div id="gist-1354245" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span> <span class="nb">defined</span><span class="p">(</span><span class="s1">&#39;SYSPATH&#39;</span><span class="p">)</span> <span class="k">or</span> <span class="k">die</span><span class="p">(</span><span class="s1">&#39;No direct script access.&#39;</span><span class="p">);</span></div><div class='line' id='LC2'><span class="sd">/**</span></div><div class='line' id='LC3'><span class="sd"> * Controller_Account</span></div><div class='line' id='LC4'><span class="sd"> * </span></div><div class='line' id='LC5'><span class="sd"> * Aqui estaran las funcionalidades de login y registro</span></div><div class='line' id='LC6'><span class="sd"> * </span></div><div class='line' id='LC7'><span class="sd"> * @author Javier</span></div><div class='line' id='LC8'><span class="sd"> * @package Backend</span></div><div class='line' id='LC9'><span class="sd"> * </span></div><div class='line' id='LC10'><span class="sd"> */</span></div><div class='line' id='LC11'><span class="k">class</span> <span class="nc">Controller_Account</span> <span class="k">extends</span> <span class="nx">Controller</span> <span class="p">{</span></div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">/**</span></div><div class='line' id='LC14'><span class="sd">     *</span></div><div class='line' id='LC15'><span class="sd">     * @var User $auth contains object a1 user </span></div><div class='line' id='LC16'><span class="sd">     */</span></div><div class='line' id='LC17'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="nv">$auth</span><span class="p">;</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC19'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">/**</span></div><div class='line' id='LC20'><span class="sd">     * </span></div><div class='line' id='LC21'><span class="sd">     * Variable que guardara la sesión</span></div><div class='line' id='LC22'><span class="sd">     * @var Session $session</span></div><div class='line' id='LC23'><span class="sd">     */</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="nv">$session</span><span class="p">;</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC26'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">/**</span></div><div class='line' id='LC27'><span class="sd">     * </span></div><div class='line' id='LC28'><span class="sd">     * Vista que usara el sistema</span></div><div class='line' id='LC29'><span class="sd">     * @var View|String $view</span></div><div class='line' id='LC30'><span class="sd">     */</span></div><div class='line' id='LC31'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="nv">$view</span><span class="p">;</span></div><div class='line' id='LC32'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC33'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">/**</span></div><div class='line' id='LC34'><span class="sd">     * </span></div><div class='line' id='LC35'><span class="sd">     * Aqui se cargara el modelo users</span></div><div class='line' id='LC36'><span class="sd">     * @var Model_Users $users</span></div><div class='line' id='LC37'><span class="sd">     */</span></div><div class='line' id='LC38'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="nv">$users</span><span class="p">;</span></div><div class='line' id='LC39'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC40'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">/**</span></div><div class='line' id='LC41'><span class="sd">     * (non-PHPdoc)</span></div><div class='line' id='LC42'><span class="sd">     * @see system/classes/kohana/Kohana_Controller::before()</span></div><div class='line' id='LC43'><span class="sd">     */</span></div><div class='line' id='LC44'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">before</span><span class="p">()</span></div><div class='line' id='LC45'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC46'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">parent</span><span class="o">::</span><span class="na">before</span><span class="p">();</span></div><div class='line' id='LC47'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span> <span class="o">=</span> <span class="nx">A1</span><span class="o">::</span><span class="na">instance</span><span class="p">();</span></div><div class='line' id='LC48'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">session</span> <span class="o">=</span>  <span class="nx">Session</span><span class="o">::</span><span class="na">instance</span><span class="p">();</span></div><div class='line' id='LC49'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">users</span>   <span class="o">=</span> <span class="k">new</span> <span class="nx">Model_Users</span><span class="p">();</span></div><div class='line' id='LC50'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC51'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC52'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">action_index</span><span class="p">()</span></div><div class='line' id='LC53'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC54'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">action_login</span><span class="p">();</span></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC56'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC57'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">action_login</span><span class="p">()</span></div><div class='line' id='LC58'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC59'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$errors</span> <span class="o">=</span>  <span class="k">array</span><span class="p">();</span></div><div class='line' id='LC60'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">request</span><span class="o">-&gt;</span><span class="na">method</span><span class="p">()</span><span class="o">==</span><span class="s2">&quot;POST&quot;</span><span class="p">)</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span> </div><div class='line' id='LC62'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC63'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$username</span> <span class="o">=</span> <span class="nx">Arr</span><span class="o">::</span><span class="na">get</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">,</span> <span class="s1">&#39;username&#39;</span><span class="p">);</span></div><div class='line' id='LC64'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$password</span> <span class="o">=</span> <span class="nx">Arr</span><span class="o">::</span><span class="na">get</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">,</span> <span class="s1">&#39;password&#39;</span><span class="p">);</span></div><div class='line' id='LC65'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$remember</span> <span class="o">=</span> <span class="p">(</span><span class="nb">isset</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">[</span><span class="s1">&#39;remember&#39;</span><span class="p">]))</span><span class="o">?</span><span class="k">TRUE</span><span class="o">:</span><span class="k">FALSE</span><span class="p">;</span></div><div class='line' id='LC66'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC67'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="o">-&gt;</span><span class="na">login</span><span class="p">(</span><span class="nv">$username</span><span class="p">,</span><span class="nv">$password</span><span class="p">,</span><span class="nv">$remember</span><span class="p">))</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span>      </div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$session</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="o">-&gt;</span><span class="na">session</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">as_array</span><span class="p">();</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$session</span><span class="p">[</span><span class="s2">&quot;user&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="o">-&gt;</span><span class="na">get_user</span><span class="p">();</span></div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">session</span> <span class="o">=</span> <span class="nv">$session</span><span class="p">;</span></div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">request</span><span class="o">-&gt;</span><span class="na">redirect</span><span class="p">(</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;backend&#39;</span><span class="p">,</span><span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="k">FALSE</span><span class="p">)));</span> </div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$errors</span><span class="p">[</span><span class="s1">&#39;login&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Datos no validos&quot;</span><span class="p">;</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">view</span> <span class="o">=</span> <span class="nx">View</span><span class="o">::</span><span class="na">factory</span><span class="p">(</span><span class="s1">&#39;backend/login&#39;</span><span class="p">)</span></div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;					<span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;posturl&#39;</span><span class="p">,</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account&#39;</span><span class="p">,</span> <span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;login&#39;</span><span class="p">)))</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;					<span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;registerurl&#39;</span><span class="p">,</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account&#39;</span><span class="p">,</span> <span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;register&#39;</span><span class="p">)))</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s2">&quot;errors&quot;</span><span class="p">,</span><span class="nv">$errors</span><span class="p">);</span></div><div class='line' id='LC83'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC84'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC85'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">action_register</span><span class="p">()</span></div><div class='line' id='LC86'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC87'>&nbsp;&nbsp;&nbsp;&nbsp;	<span class="nv">$errors</span> <span class="o">=</span>  <span class="k">array</span><span class="p">();</span></div><div class='line' id='LC88'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">request</span><span class="o">-&gt;</span><span class="na">method</span><span class="p">()</span><span class="o">==</span> <span class="s2">&quot;POST&quot;</span><span class="p">)</span></div><div class='line' id='LC89'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC90'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	<span class="nv">$username</span> <span class="o">=</span> <span class="nx">Arr</span><span class="o">::</span><span class="na">get</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">,</span> <span class="s1">&#39;username&#39;</span><span class="p">);</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$password</span> <span class="o">=</span> <span class="nx">Arr</span><span class="o">::</span><span class="na">get</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">,</span> <span class="s1">&#39;password&#39;</span><span class="p">);</span></div><div class='line' id='LC92'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$errors</span><span class="p">[</span><span class="s1">&#39;register&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Error al intentar registrarse&quot;</span><span class="p">;</span></div><div class='line' id='LC93'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">users</span><span class="o">-&gt;</span><span class="na">unique_user</span><span class="p">(</span><span class="nv">$username</span><span class="p">)</span><span class="o">===</span> <span class="k">FALSE</span><span class="p">)</span></div><div class='line' id='LC94'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC95'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		   	<span class="nv">$new_user</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">users</span><span class="o">-&gt;</span><span class="na">save_user</span><span class="p">(</span><span class="nv">$username</span><span class="p">,</span><span class="nv">$password</span><span class="p">,</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="p">);</span></div><div class='line' id='LC96'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		   	<span class="k">if</span><span class="p">(</span><span class="nv">$new_user</span><span class="o">-&gt;</span><span class="na">saved</span><span class="p">())</span></div><div class='line' id='LC97'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		   	<span class="p">{</span></div><div class='line' id='LC98'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		   		<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="o">-&gt;</span><span class="na">complete_login</span><span class="p">(</span><span class="nv">$new_user</span><span class="p">);</span></div><div class='line' id='LC99'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		   		<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">request</span><span class="o">-&gt;</span><span class="na">redirect</span><span class="p">(</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account&#39;</span><span class="p">,</span> <span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;login&#39;</span><span class="p">))</span><span class="o">.</span><span class="s1">&#39;?saved&#39;</span><span class="p">);</span></div><div class='line' id='LC100'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		   	<span class="p">}</span></div><div class='line' id='LC101'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		   	<span class="nv">$errors</span><span class="p">[</span><span class="s2">&quot;register&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;No se pudo guardar el nuevo registro&quot;</span><span class="p">;</span></div><div class='line' id='LC102'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC103'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$errors</span><span class="p">[</span><span class="s1">&#39;register&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;El usuario </span><span class="si">{</span><span class="nv">$username</span><span class="si">}</span><span class="s2"> ya existe en la base de datos&quot;</span><span class="p">;</span></div><div class='line' id='LC104'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC105'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">view</span> <span class="o">=</span> <span class="nx">View</span><span class="o">::</span><span class="na">factory</span><span class="p">(</span><span class="s1">&#39;backend/register&#39;</span><span class="p">)</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;						<span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;errors&#39;</span><span class="p">,</span><span class="nv">$errors</span><span class="p">)</span></div><div class='line' id='LC107'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;					<span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;posturl&#39;</span><span class="p">,</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account&#39;</span><span class="p">,</span> <span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;login&#39;</span><span class="p">)))</span></div><div class='line' id='LC108'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;						<span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s1">&#39;registerurl&#39;</span><span class="p">,</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account&#39;</span><span class="p">,</span> <span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;register&#39;</span><span class="p">)));</span>    </div><div class='line' id='LC109'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC110'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC111'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">action_logout</span><span class="p">()</span></div><div class='line' id='LC112'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC113'>&nbsp;&nbsp;&nbsp;&nbsp;	<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">auth</span><span class="o">-&gt;</span><span class="na">logout</span><span class="p">();</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;	<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">request</span><span class="o">-&gt;</span><span class="na">redirect</span><span class="p">(</span><span class="nx">Route</span><span class="o">::</span><span class="na">url</span><span class="p">(</span><span class="s1">&#39;default&#39;</span><span class="p">,</span><span class="k">array</span><span class="p">(</span><span class="s1">&#39;controller&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;backend&#39;</span><span class="p">,</span><span class="s1">&#39;action&#39;</span> <span class="o">=&gt;</span> <span class="k">FALSE</span><span class="p">)));</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC116'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC117'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">function</span> <span class="nf">after</span><span class="p">()</span></div><div class='line' id='LC118'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC119'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">response</span><span class="o">-&gt;</span><span class="na">body</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">view</span><span class="p">);</span></div><div class='line' id='LC120'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">parent</span><span class="o">::</span><span class="na">after</span><span class="p">();</span></div><div class='line' id='LC121'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC122'><br/></div><div class='line' id='LC123'><span class="p">}</span> <span class="c1">// End Account</span></div><div class='line' id='LC124'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1354245/dba5e427ce1e019cc23e6b64e9d3b643cae56b75/account.php" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1354245#file_account.php" style="float:right;margin-right:10px;color:#666">account.php</a>
            <a href="https://gist.github.com/1354245">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Como vemos este controlador, tenemos el método before que se ejecuta antes de cualquier &#8220;action&#8221; en donde establecemos el valor de algunas propiedades de la clase como la autenticación, la sesión y el modelo (entidad).</p>
<p>También le indico que si recibo el método action_index, en realidad ejecute el método action_login, que es el que hará el trabajo.</p>
<p>El método action_login, lo que hace es mostrar la vista login, la cual tiene esta estructura.</p>
<div id="gist-1359634" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="x">&lt;!DOCTYPE html&gt;</span></div><div class='line' id='LC2'><span class="x">&lt;html&gt;</span></div><div class='line' id='LC3'><span class="x">    &lt;head&gt;</span></div><div class='line' id='LC4'><span class="x">        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;</span></div><div class='line' id='LC5'><span class="x">        &lt;title&gt;&lt;/title&gt;</span></div><div class='line' id='LC6'><span class="x">    &lt;/head&gt;</span></div><div class='line' id='LC7'><span class="x">    &lt;body&gt;</span></div><div class='line' id='LC8'><span class="x">        &lt;div&gt;</span></div><div class='line' id='LC9'><span class="x">        &lt;h2&gt;Iniciar sesión&lt;/h2&gt;</span></div><div class='line' id='LC10'><span class="x">        </span><span class="cp">&lt;?php</span> <span class="k">if</span><span class="p">(</span><span class="nb">isset</span><span class="p">(</span><span class="nv">$errors</span><span class="p">[</span><span class="s1">&#39;login&#39;</span><span class="p">]))</span><span class="o">:?&gt;</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">&lt;</span><span class="nx">p</span> <span class="nx">style</span><span class="o">=</span><span class="s2">&quot;border:#F00 1px solid;background:#dd0000;color:#fff;width:auto;&quot;</span><span class="o">&gt;</span></div><div class='line' id='LC12'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	<span class="o">&lt;?</span><span class="nx">php</span> <span class="k">echo</span> <span class="nv">$errors</span><span class="p">[</span><span class="s1">&#39;login&#39;</span><span class="p">]</span> <span class="cp">?&gt;</span><span class="x"></span></div><div class='line' id='LC13'><span class="x">        &lt;/p&gt;</span></div><div class='line' id='LC14'><span class="x">        </span><span class="cp">&lt;?php</span> <span class="k">endif</span><span class="p">;</span> <span class="cp">?&gt;</span><span class="x"></span></div><div class='line' id='LC15'><span class="x">        &lt;form action=&quot;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$posturl</span> <span class="cp">?&gt;</span><span class="x">&quot; method=&quot;POST&quot;&gt;</span></div><div class='line' id='LC16'><span class="x">            &lt;p&gt;</span></div><div class='line' id='LC17'><span class="x">                &lt;label&gt;Usuario&lt;/label&gt;</span></div><div class='line' id='LC18'><span class="x">                &lt;input type=&quot;text&quot; value=&quot;&quot; name=&quot;username&quot; /&gt;</span></div><div class='line' id='LC19'><span class="x">            &lt;/p&gt;</span></div><div class='line' id='LC20'><span class="x">            &lt;p&gt;</span></div><div class='line' id='LC21'><span class="x">                &lt;label&gt;Password&lt;/label&gt;</span></div><div class='line' id='LC22'><span class="x">                &lt;input type=&quot;password&quot; value=&quot;&quot; name=&quot;password&quot; /&gt;</span></div><div class='line' id='LC23'><span class="x">            &lt;/p&gt;</span></div><div class='line' id='LC24'><span class="x">            &lt;p&gt;</span></div><div class='line' id='LC25'><span class="x">                &lt;input type=&quot;checkbox&quot; name=&quot;remember&quot; /&gt;</span></div><div class='line' id='LC26'><span class="x">                &lt;label&gt;Recordar password&lt;/label&gt;</span></div><div class='line' id='LC27'><span class="x">            &lt;p&gt;</span></div><div class='line' id='LC28'><span class="x">                &lt;input type=&quot;submit&quot; value=&quot;Iniciar sesión&quot; name=&quot;login&quot; &gt;            </span></div><div class='line' id='LC29'><span class="x">            &lt;/p&gt;            </span></div><div class='line' id='LC30'><span class="x">        &lt;/form&gt;</span></div><div class='line' id='LC31'><span class="x">        &lt;p&gt;</span></div><div class='line' id='LC32'><span class="x">            &lt;a href=&quot;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$registerurl</span> <span class="cp">?&gt;</span><span class="x">&quot;&gt;Registrarse&lt;/a&gt;</span></div><div class='line' id='LC33'><span class="x">        &lt;/p&gt;</span></div><div class='line' id='LC34'><span class="x">        &lt;/div&gt;</span></div><div class='line' id='LC35'><span class="x">    &lt;/body&gt;</span></div><div class='line' id='LC36'><span class="x">&lt;/html&gt;</span></div><div class='line' id='LC37'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1359634/bbb935e5e538abacee0014247829f98b7ce23eb9/login.php" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1359634#file_login.php" style="float:right;margin-right:10px;color:#666">login.php</a>
            <a href="https://gist.github.com/1359634">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Que como vemos, es un simple formulario.</p>
<p>En el mismo método action_index, tiene un if que comprueba si recibe una petición POST, si es así extraemos las variables usando Arr::get de kohana, también verificamos si existe la variable remember, la cual actúa como una FLAG, que en caso de ser verdadero lo usaremos para recordar los datos del usuario.</p>
<p>Aquí es donde ocurre, toda la &#8220;magia&#8221;, y haremos hincapié en esto.</p>
<p><strong> if($this->auth->login($username,$password,$remember)) </strong>:</p>
<p>Este código lo que hace es hacer el login, y el ultimo parámetro remember tiene la capacidad de generar el recordatorio del password.</p>
<p>Si el login es correcto, se creara un sesión y hará la lógica de asignación de variables del usuario a la sesión, posteriormente se redirecciona a el backend del sistema.</p>
<p>En caso de no hacer el login, tenemos anteriormente un array, que en este caso asignara a una clave llamada login, un mensaje de error., el cual se mostrara en la vista login.</p>
<p>También tenemos un método action_register, que posee, un formulario similar al de login, y que en este caso hace el registro de un usuario, usando el modelo users, el cual también hace validación de que no exista un usuario con el mismo nombre(obviamente la validación puede ser diferente).</p>
<p>Y también tenemos el método save_user que es encargado de hacer el insert del nuevo usuario, aquí vemos que usamos para el password, $auth->hash(), que es un método de A1, que lo estamos inyectando como dependencia (DI), y es importante usar este método ya que con esto generamos el password usando el algoritmo de cifrado que incluye A1, aunque lo podremos modificar, pero es indispensable convertir el password al guardarlo, al hacer el login no es necesario convertirlo A1 lo hace en automático.</p>
<div id="gist-1365997" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span> <span class="nb">defined</span><span class="p">(</span><span class="s1">&#39;SYSPATH&#39;</span><span class="p">)</span> <span class="k">or</span> <span class="k">die</span><span class="p">(</span><span class="s1">&#39;No direct script access.&#39;</span><span class="p">);</span></div><div class='line' id='LC2'><span class="sd">/**</span></div><div class='line' id='LC3'><span class="sd"> * </span></div><div class='line' id='LC4'><span class="sd"> * Model_Users </span></div><div class='line' id='LC5'><span class="sd"> * </span></div><div class='line' id='LC6'><span class="sd"> * Modelo/entidad de la tabla users</span></div><div class='line' id='LC7'><span class="sd"> * </span></div><div class='line' id='LC8'><span class="sd"> * @author Javier</span></div><div class='line' id='LC9'><span class="sd"> * @package backend</span></div><div class='line' id='LC10'><span class="sd"> */</span></div><div class='line' id='LC11'><span class="k">class</span> <span class="nc">Model_Users</span> <span class="k">extends</span> <span class="nx">ORM</span> <span class="p">{</span></div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'>	<span class="sd">/**</span></div><div class='line' id='LC14'><span class="sd">	 * </span></div><div class='line' id='LC15'><span class="sd">	 * Evitamos que convierta mi tabla a plural</span></div><div class='line' id='LC16'><span class="sd">	 * @var boolean $_table_names_plural</span></div><div class='line' id='LC17'><span class="sd">	 */</span></div><div class='line' id='LC18'>	<span class="k">protected</span> <span class="nv">$_table_names_plural</span> <span class="o">=</span> <span class="k">FALSE</span><span class="p">;</span></div><div class='line' id='LC19'><br/></div><div class='line' id='LC20'><br/></div><div class='line' id='LC21'>	<span class="sd">/**</span></div><div class='line' id='LC22'><span class="sd">	 * </span></div><div class='line' id='LC23'><span class="sd">	 * Comprueba que no exista en la base de datos(evita duplicados)</span></div><div class='line' id='LC24'><span class="sd">	 * @param String $username</span></div><div class='line' id='LC25'><span class="sd">	 * @return boolean </span></div><div class='line' id='LC26'><span class="sd">	 * </span></div><div class='line' id='LC27'><span class="sd">	 */</span></div><div class='line' id='LC28'>	<span class="k">public</span> <span class="k">function</span> <span class="nf">unique_user</span><span class="p">(</span><span class="nv">$username</span><span class="p">)</span></div><div class='line' id='LC29'>	<span class="p">{</span></div><div class='line' id='LC30'>		<span class="nv">$user</span> <span class="o">=</span> <span class="nx">ORM</span><span class="o">::</span><span class="na">factory</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_table_name</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">where</span><span class="p">(</span><span class="s1">&#39;email&#39;</span><span class="p">,</span><span class="s1">&#39;=&#39;</span><span class="p">,</span><span class="nv">$username</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">find</span><span class="p">();</span></div><div class='line' id='LC31'>		<span class="k">return</span> <span class="p">(</span><span class="nx">bool</span><span class="p">)</span> <span class="nv">$user</span><span class="o">-&gt;</span><span class="na">loaded</span><span class="p">();</span></div><div class='line' id='LC32'>	<span class="p">}</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'>	<span class="sd">/**</span></div><div class='line' id='LC35'><span class="sd">	 * </span></div><div class='line' id='LC36'><span class="sd">	 * Inserta un nuevo usuario</span></div><div class='line' id='LC37'><span class="sd">	 * @param String $username</span></div><div class='line' id='LC38'><span class="sd">	 * @param String $password</span></div><div class='line' id='LC39'><span class="sd">	 * @param A1 $auth</span></div><div class='line' id='LC40'><span class="sd">	 * @return Model_Users $user</span></div><div class='line' id='LC41'><span class="sd">	 * </span></div><div class='line' id='LC42'><span class="sd">	 */</span></div><div class='line' id='LC43'>	<span class="k">public</span> <span class="k">function</span> <span class="nf">save_user</span><span class="p">(</span><span class="nv">$username</span><span class="p">,</span> <span class="nv">$password</span><span class="p">,</span> <span class="nx">A1</span> <span class="nv">$auth</span><span class="p">)</span></div><div class='line' id='LC44'>	<span class="p">{</span></div><div class='line' id='LC45'>		<span class="nv">$user</span> <span class="o">=</span> <span class="nx">ORM</span><span class="o">::</span><span class="na">factory</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_table_name</span><span class="p">);</span></div><div class='line' id='LC46'>		<span class="nv">$user</span><span class="o">-&gt;</span><span class="na">email</span> <span class="o">=</span> <span class="nv">$username</span><span class="p">;</span></div><div class='line' id='LC47'>		<span class="nv">$user</span><span class="o">-&gt;</span><span class="na">password</span> <span class="o">=</span> <span class="nv">$auth</span><span class="o">-&gt;</span><span class="na">hash</span><span class="p">(</span><span class="nv">$password</span><span class="p">);</span></div><div class='line' id='LC48'>		<span class="nv">$user</span><span class="o">-&gt;</span><span class="na">save</span><span class="p">();</span></div><div class='line' id='LC49'>		<span class="k">return</span> <span class="nv">$user</span><span class="p">;</span></div><div class='line' id='LC50'>	<span class="p">}</span></div><div class='line' id='LC51'><br/></div><div class='line' id='LC52'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1365997/d2e9efff9ec24a7d04995956081ceceedeab69c5/users.php" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1365997#file_users.php" style="float:right;margin-right:10px;color:#666">users.php</a>
            <a href="https://gist.github.com/1365997">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Regresando al controlador, después de que el nuevo usuario se haya registrado, se redirecciona al login, si no simplemente avisa del error, mandando esta información, a la vista.</p>
<p>En el mismo controlador tenemos un método action_logout, que lo que hace es cerrar la sesión, y redireccionar, aquí creo que no hace falta mas explicación.</p>
<p>En el método after lo que hago es lanzar la vista a la pantalla usando $this->response->body</p>
<p>Quizá un poco larga la explicación pero es mejor que quede claro.</p>
<p>En resumen, creamos nuestro controlador que haga el login, y otro que cree las cuentas, usamos A1, para manejar el password, para registrar el usuario y para hacer el login, evitando volver a reescribir este proceso cada vez que necesitemos hacer un login.<br />
<strong><br />
Como nota adicional, verán en el controlador backend un método privado que se llama: _prevent_back(), este método evita que cuando hagamos logout, al dar clic en el botón atrás, no regrese a la sesión como si nunca hubiéramos salido por que esta cacheado, aunque realmente hayamos finalizado la sesión y no permita hacer nada. Estoy en contacto con el creador del modulo y mande la propuesta de agregar este control de cache al core del modulo, y la parecer en breve ya vendrá por default y ya no tendrán que agregar este método(sera configurable desde el archivo de configuración del modulo).</strong></p>
<p>Tambien me falto agregar que el campo de la base de datos para el password, debe de ser de al menos 70-80 caracteres, o más, por que las cadenas que genera A1, para los passwords son muy grandes, y si aumentan el cost en el config, aun seran mas grandes.</p>
<p>Aparte de los gists, dejo el proyecto en github, para que quien guste lo puede tomarlo y bajarlo:</p>
<p>Hasta el próximo post.</p>
<p>Github: <strong><a href="https://github.com/Ajaxman/kohana1" title="Implementación Kohana A1">kohana A1 implementación</a></strong>.<br />
Parche para usar A1 pero con <strong>sha1</strong> si necesidad de usar bcrypt: <a href="https://gist.github.com/1352205" title="Hack Kohana A1">https://gist.github.com/1352205</a><br />
Colocar el archivo del parche (a1.php) en application/classes/ y ahora sus password que generen o usen usaran sha1 y no brcypt con CRYPT_BLOWFISH</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/php-usando-el-modulo-de-autenticacion-kohana-a1.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[PDF-Python] Disponible revista Phyton Entre Todos (PET)</title>
		<link>http://www.ajaxman.net/pdf-python-disponible-revista-phyton-entre-todos-pet.html</link>
		<comments>http://www.ajaxman.net/pdf-python-disponible-revista-phyton-entre-todos-pet.html#comments</comments>
		<pubDate>Fri, 20 Aug 2010 18:41:22 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Pdf]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[PET]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2013</guid>
		<description><![CDATA[<p>Pues aunque esta noticia ya tiene varios días, pero como no la he visto muy publicada, hago eco de la misma. Python tes un lenguaje bello, simple y poderoso, y ya se bastante del mismo, y me acabo de enterar de que salio una revisa gratuita para desarrolladores y aficionados de Python, a mi me [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } -->Pues aunque esta noticia ya tiene varios días, pero como no la he visto muy publicada, hago eco de la misma.</p>
<p>Python tes un lenguaje bello, simple y poderoso, y ya se bastante del mismo, y me acabo de enterar de que salio una revisa gratuita para desarrolladores y aficionados de Python, a mi me cae perfecto puesto que son pocas hojas y con información clara y precisa.</p>
<p style="text-align: center;">
<div id="attachment_2014" class="wp-caption aligncenter" style="width: 578px"><a href="http://revista.python.org.ar/"><img class="size-full wp-image-2014  " title="PET: Python Entre Todos" src="http://www.ajaxman.net/wp-content/uploads/2010/08/tapa-nro1.jpg" alt="PET: Python Entre Todos" width="568" height="401" /></a><p class="wp-caption-text">PET: Python Entre Todos</p></div>
<p>Ademas esta en varios formatos y los trozos de código ayudan mucho a lo iniciado como yo en Python.</p>
<p>Los temas que trae el numero 1 de la revisa son:</p>
<ul>
<li>PET First Shot</li>
<li>Cómo contribuir a PET</li>
<li>PyAr, la historia</li>
<li>from gc import commonsense &#8211; Finish Him!</li>
<li>Concurrencia Indolora: el módulo processing</li>
<li>Introducción a Unit Testing con Python</li>
<li>Taint Mode en Python</li>
<li>Dinamismo Aplicado</li>
<li>Decorando Código (Parte 1)</li>
<li>Web2Py Para Todos</li>
<li>¿Cómo Está Hecha Esta Revista?</li>
<li>Desafío PET</li>
<li>Un poco de xkcd</li>
</ul>
<p>Yo ya la baje y ya la estoy estudiando, ojala y le sirva a todos como a mi y ayudemos entre todos a difundir este increíble lenguaje.</p>
<p>Web de la revista:  <a href="http://revista.python.org.ar/">Python Entre Todos(PET)</a></p>
<p>Enlace de descarga:<a href="http://revista.python.org.ar/1/html/"> Descarga Python Entre Todos(PET)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/pdf-python-disponible-revista-phyton-entre-todos-pet.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Recursos] 60 Temas para wordpress</title>
		<link>http://www.ajaxman.net/recursos-60-temas-para-wordpress.html</link>
		<comments>http://www.ajaxman.net/recursos-60-temas-para-wordpress.html#comments</comments>
		<pubDate>Fri, 30 Apr 2010 19:19:12 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Enlaces]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[Temas]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1883</guid>
		<description><![CDATA[<p>Y aprovechando que me encontré estos themes para wordpress, pues se los paso, la verdad todos se ven muy bien. Pero esperen no se alarmen, aun no cambiare el tema del blog, y aun sigo sin PC, pero mientras pueda postear un poquito pues eso haré. Bueno aquí les dejo unas muestras si quieren ver [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Y aprovechando que me encontré estos <strong>themes para wordpress</strong>, pues se los paso, la verdad todos se ven muy bien.</p>
<p>Pero esperen no se alarmen, aun no cambiare el tema del blog, y aun sigo sin PC, pero mientras pueda postear un poquito pues eso haré.</p>
<p>Bueno aquí les dejo unas muestras si quieren ver mas solo den click en la liga mas abajo y verán todos.</p>
<p>Tema: <strong>Bright Sky</strong></p>
<p><a href="http://www.kreativethemes.com/bright-sky/"><img class="aligncenter size-full wp-image-1884" title="brightsky" src="http://www.ajaxman.net/wp-content/uploads/2010/04/brightsky.jpg" alt="" width="615" height="500" /></a></p>
<p>Tema: <strong>Maamo</strong><br />
<strong><a href="http://www.paddsolutions.com/wordpress-theme-maamo/"><img class="aligncenter size-full wp-image-1886" title="maamo" src="http://www.ajaxman.net/wp-content/uploads/2010/04/maamo.jpg" alt="" width="615" height="500" /></a> </strong></p>
<p><span id="more-1883"></span></p>
<p>Tema: <strong>Simple Folio</strong></p>
<p><strong><a href="http://www.smashingmagazine.com/2010/02/07/simplefolio-a-free-clean-portfolio-wordpress-%20%20theme/"><img class="aligncenter size-full wp-image-1887" title="simplefolio" src="http://www.ajaxman.net/wp-content/uploads/2010/04/simplefolio.jpg" alt="" width="615" height="500" /></a> </strong></p>
<p>Ver todos | <a href="http://www.webdesignerdepot.com/2010/04/60-awesome-new-wordpress-themes/" target="_blank">60+ Awesome New WordPress Themes </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/recursos-60-temas-para-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Python:Recursos] Por donde empezar con Python</title>
		<link>http://www.ajaxman.net/pythonrecursos-por-donde-empezar-con-python.html</link>
		<comments>http://www.ajaxman.net/pythonrecursos-por-donde-empezar-con-python.html#comments</comments>
		<pubDate>Wed, 06 Jan 2010 22:27:43 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[BeginnersGuide Python]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1781</guid>
		<description><![CDATA[<p>Si tu al igual que yo andar perdido en Python y estas buscando por donde empezar. Te recomiendo ampliamente que visites este enlace: En donde encontraras un lista muy extensa de recursos para iniciarte con Python, de hecho yo ando picandole en esta parte porque no se me da muy bien el ingles y ando [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Si tu al igual que yo andar perdido en Python y estas buscando por donde empezar.</p>
<p>Te recomiendo ampliamente que visites este enlace:</p>
<div id="attachment_1782" class="wp-caption aligncenter" style="width: 195px"><a href="http://wiki.python.org/moin/BeginnersGuide"><img class="size-full wp-image-1782" title="Python" src="http://www.ajaxman.net/wp-content/uploads/2010/01/Python.png" alt="Python" width="185" height="63" /></a><p class="wp-caption-text">Beginner Guide Python</p></div>
<p>En donde encontraras un lista muy extensa de recursos para iniciarte con Python, de hecho yo ando picandole en esta parte porque no se me da muy bien el ingles y ando tambien revisando este  sitio.</p>
<p>Aquí dejo la lista que nos presenta en donde reúnen varios recursos</p>
<ol>
<li><a href="http://wiki.python.org/moin/BeginnersGuide"><strong>BeginnersGuide</strong></a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/Download"><strong>BeginnersGuide</strong>/Download</a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/Examples"><strong>BeginnersGuide</strong>/Examples</a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/Help"><strong>BeginnersGuide</strong>/Help</a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/NonProgrammers"><strong>BeginnersGuide</strong>/NonProgrammers</a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/Overview"><strong>BeginnersGuide</strong>/Overview</a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/Programmers?action=AttachFile&amp;do=get&amp;target=Tutorial.txt"><strong>BeginnersGuide</strong>/Programmers <strong>(Tutorial.txt)</strong></a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/Programmers?action=AttachFile&amp;do=get&amp;target=Cpp2Python.pdf"><strong>BeginnersGuide</strong>/Programmers <strong>(Cpp2Python.pdf)</strong></a></li>
<li><a href="http://wiki.python.org/moin/BeginnersGuide/Programmers/SimpleExamples"><strong>BeginnersGuide</strong>/Programmers/SimpleExamples</a></li>
</ol>
<p>Les dejo el enlace nuevamente aquí abajo:<br />
<a title="Efectuar una búsqueda por páginas que tienen este título en contenidos" href="http://wiki.python.org/moin/BeginnersGuide?action=fullsearch&amp;context=180&amp;value=linkto%3A%22BeginnersGuide%22">BeginnersGuide</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/pythonrecursos-por-donde-empezar-con-python.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Gmail] Gmail Labs disponible en español</title>
		<link>http://www.ajaxman.net/gmail-gmail-labs-disponible-en-espanol.html</link>
		<comments>http://www.ajaxman.net/gmail-gmail-labs-disponible-en-espanol.html#comments</comments>
		<pubDate>Thu, 02 Apr 2009 18:00:37 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Gmail]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1515</guid>
		<description><![CDATA[<p>Esta si que es una buena noticia en un dia que se ve bastante complicado(chiste local), resulta que ahora si nos hicieron felices a los que siempre andamos probando nuevas cosas. Gmail Labs(el campo de pruebas de Gmail),  ahora esta disponible en varios idiomas(los mismos idiomas que dispone Gmail) incluyendo el español, lo cual como [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Esta si que es una buena noticia en un dia que se ve bastante complicado(chiste local), resulta que ahora si nos hicieron felices a los que siempre andamos probando nuevas cosas.</p>
<div id="attachment_1516" class="wp-caption aligncenter" style="width: 428px"><img class="size-full wp-image-1516" title="Gmail" src="http://www.ajaxman.net/wp-content/uploads/2009/04/4476_notas_gmail_in.jpg" alt="Gmail" width="418" height="322" /><p class="wp-caption-text">Gmail</p></div>
<p>Gmail Labs(el campo de pruebas de Gmail),  ahora esta disponible en varios idiomas(los mismos idiomas que dispone Gmail) incluyendo el español, lo cual como se los dije, es una excelente noticia, ahora si ya podremos probar lo ultimo y lo mas nuevo que hay en el laboratorio de Google.</p>
<p>Dentro de estas herramientas  podemos encontrarnos lo siguiente(copiado de Blogandweb):</p>
<ul>
<li><span class="rc">Sin conexión.</span></li>
<li><span class="rc">Tareas.</span></li>
<li><span class="rc">Vistas previas de YouTube en el correo.</span></li>
<li><span class="rc">Vistas previas de Picasa en el correo.</span></li>
<li><span class="rc">Vistas previas de Flickr en el correo.</span></li>
<li><span class="rc">Vistas previas de Yelp en el correo.</span></li>
<li><span class="rc">Enlaces rápidos.</span></li>
<li><span class="rc">Superestrella.</span></li>
<li><span class="rc">Imágenes en el chat.</span></li>
<li><span class="rc">Fuente de ancho fijo.</span></li>
<li><span class="rc">Combinaciones de teclas personalizadas.</span></li>
<li><span class="rc">Movimientos del ratón.</span></li>
<li><span class="rc">Retoques de la firma.</span></li>
<li><span class="rc">Firma aleatoria.</span></li>
<li><span class="rc">Formatos de fecha personalizados.</span></li>
<li><span class="rc">Sin mensajes de estado.</span></li>
<li><span class="rc">OldSnake.</span></li>
<li><span class="rc">Adicto al correo electrónico.</span></li>
<li><span class="rc">Chat en el lado derecho.</span></li>
<li><span class="rc">Etiquetas en el lado derecho.</span></li>
<li><span class="rc">Ocultar recuento de no leídos.</span></li>
<li><span class="rc">Controles avanzados de IMAP.</span></li>
<li><span class="rc">Respuestas prediseñadas.</span></li>
<li><span class="rc">“Responder a todos” de forma predeterminada.</span></li>
<li><span class="rc">Citar el texto seleccionado.</span></li>
<li><span class="rc">Arrastrar y colocar en la barra de navegación.</span></li>
<li><span class="rc">Test de facultades mentales intactas.</span></li>
<li><span class="rc">Detector de archivos adjuntos olvidados.</span></li>
<li><span class="rc">¡Vacaciones!.</span></li>
<li><span class="rc">Colores de etiqueta personalizados.</span></li>
<li><span class="rc">Botón “Marcar como leída”.</span></li>
<li><span class="rc">Ir a etiqueta.</span></li>
<li><span class="rc">Varios “Recibidos”.</span></li>
<li><span class="rc">Crear un documento.</span></li>
<li><span class="rc">Filtro importación/exportación.</span></li>
<li><span class="rc">Enviar y archivar.</span></li>
<li><span class="rc">Deshacer el envío.</span></li>
<li><span class="rc">Ubicación en la firma.</span></li>
<li><span class="rc">Retoques del título.</span></li>
<li><span class="rc">Gadget de Google Calendar.</span></li>
<li><span class="rc">Gadget de Google Docs.</span></li>
<li><span class="rc">Añadir cualquier gadget mediante URL</span></li>
</ul>
<p>Google cada día sigue ofreciéndonos mas opciones (aunque no uso Chrome) eso no cabe duda.</p>
<p>Via | <a title="Enlace permanente a Gmail Labs en español" href="http://blogandweb.com/productos-google/gmail-labs-en-espanol/" target="_blank">Gmail Labs en español</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/gmail-gmail-labs-disponible-en-espanol.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[LPCI] Comandos en Linux: Manipulación de archivos y directorios</title>
		<link>http://www.ajaxman.net/lpci-comandos-en-linux-manipulacion-de-archivos-y-directorios.html</link>
		<comments>http://www.ajaxman.net/lpci-comandos-en-linux-manipulacion-de-archivos-y-directorios.html#comments</comments>
		<pubDate>Thu, 19 Mar 2009 21:22:19 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Computadoras]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LPIC]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Comando Linux]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1496</guid>
		<description><![CDATA[<p>Como pudieron haber (u obviamente no haber) escuchado, este año no se realizo la expolinux en México, lo bueno es que como no estoy al cien en Linux sirve que me pongo a estudiar para el otro año y así si obtener el certificado en Linux, aunque me conformo con la carrera de Piloto Comercial [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Como pudieron haber (u obviamente no haber) escuchado, este año no se realizo la <strong>expolinux</strong> en México, lo bueno es que como no estoy al cien en Linux sirve que me pongo a estudiar para el otro año y así si obtener el certificado en Linux, aunque me conformo con la carrera de Piloto Comercial (jaja).</p>
<p>Bueno pues resulta que buscando información de este tema me tope con un buen listado de comandos muy útiles, ademas de que con estos podremos si deseamos hacer una chuleta(cheatsheet) para aprender mas sobre linux, bueno ahora si los comandos que les dije.</p>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td class="command" width="48%" height="20" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><strong>Comando</strong></td>
<td class="description" width="52%" height="20" valign="top" bgcolor="#efefef"><strong>Descripcion</strong></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cd"><span dir="ltr">cd /home</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cd" target="_blank">cambiar al directorio &#8216;/ home&#8217;</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cd"><span dir="ltr">cd ..</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cd" target="_blank">regresar un nivel</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cd"><span dir="ltr">cd ../..</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cd" target="_blank">regresar dos niveles</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cd"><span dir="ltr">cd</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cd" target="_blank">cambiar al directorio home</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cd"><span dir="ltr">cd ~user1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cd" target="_blank">cambiar al directorio home</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cd"><span dir="ltr">cd -</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cd" target="_blank">ir al directorio anterior</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cp"><span dir="ltr">cp file1 file2</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cp" target="_blank">copiar un archivo</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cp"><span dir="ltr">cp dir/* .</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cp" target="_blank">copiar todos los archivos de un directorio dentro del directorio de trabajo actual</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cp"><span dir="ltr">cp -a /tmp/dir1 .</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cp" target="_blank">copiar un directorio dentro del directorio de trabajo actual</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=cp"><span dir="ltr">cp -a dir1 dir2</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=cp" target="_blank">copiar un directorio</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=file"><span dir="ltr">cp file file1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=file" target="_blank">muestra el tipo mime del archivo como texto</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=iconv"><span dir="ltr">iconv -l</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=iconv" target="_blank">muestra los tipo de codificación conocidos</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=iconv"><span dir="ltr">iconv -f fromEncoding -t toEncoding inputFile &gt; outputFile</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=iconv" target="_blank">genera un archivo nuevo a partir del archivo proporcionado asumiendo que estan codificado en fromEncoding y convirtiendolo a toEncoding.</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=iconv"><span dir="ltr">find . -maxdepth 1 -name *.jpg -print -exec convert</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=iconv" target="_blank">redimensiona el tamaño de las imagenes en el directorio actual en modo batch batch y las manda al directorio “thums” (se requiere el programa “convert” de Imagemagick)</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=ln"><span dir="ltr">ln -s file1 lnk1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=ln" target="_blank">crear un link simbólico a un archivo o directorio</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=ln"><span dir="ltr">ln file1 lnk1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=ln" target="_blank">crear un link físico a un archivo o directorio</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=ls"><span dir="ltr">ls</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=ls" target="_blank">ver archivos del directorio</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=ls"><span dir="ltr">ls -F</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=ls" target="_blank">ver archivos del directorio</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=ls"><span dir="ltr">ls -l</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=ls" target="_blank">mostrar detalles de archivos y directorios</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=ls"><span dir="ltr">ls -a</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=ls" target="_blank">mostrar archivos ocultos</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=ls"><span dir="ltr">ls *[0-9]*</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=ls" target="_blank">mostrar archivos y directorios cuyo nombre contenga numeros </a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=lstree"><span dir="ltr">lstree</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=lstree" target="_blank">mostrar archivos y directorios en forma de arbol empezando desde root(2)</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=mkdir"><span dir="ltr">mkdir dir1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=mkdir" target="_blank">crear un directorio llamado &#8216;dir1&#8242;</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=mkdir"><span dir="ltr">mkdir dir1 dir2</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=mkdir" target="_blank">crear dos directorios simultaneamente</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=mkdir"><span dir="ltr">mkdir -p /tmp/dir1/dir2</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=mkdir" target="_blank">crear un arbol de directorios </a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=mv"><span dir="ltr">mv dir1 new_dir</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=mv" target="_blank">renombrar o mover un archivo o directorio</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=pwd"><span dir="ltr">pwd</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=pwd" target="_blank">mostrar la ruta del directorio de trabajo</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=rm"><span dir="ltr">rm -f file1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=rm" target="_blank">borrar archivo con nombre &#8216;file1&#8242;</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=rm"><span dir="ltr">rm -rf dir1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=rm" target="_blank">borrar el directorio con nombre &#8216;dir1&#8242; y todos sus contenidos recursivamente</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=rm"><span dir="ltr">rm -rf dir1 dir2</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=rm" target="_blank">borrar dos directorios y todos sus contenidos recursivamente</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=rmdir"><span dir="ltr">rmdir dir1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=rmdir" target="_blank">borrar directorio con nombre &#8216;dir1&#8242;</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=touch"><span dir="ltr">touch -t 0712250000 file1</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=touch" target="_blank">modificar el timestamp de un archivo o directorio- (AAMMDDhhmm)</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" width="99%">
<tbody>
<tr>
<td align="center" valign="top">
<table class="table_border_gray" style="height: 10px;" border="0" cellspacing="3" cellpadding="0" width="99%">
<tbody>
<tr>
<td width="48%" height="10" valign="top" bgcolor="#d6d6d6" bordercolor="#A3A3A3"><a id="selectCMD" href="http://www.linuxcmd.org/es/linux_commands_line.php?MenuShow=SimilarCmd&amp;cmd=tree"><span dir="ltr">tree</span></a></td>
<td width="52%" height="10" valign="top" bgcolor="#efefef"><span class="description"></p>
<div dir="ltr" lang="ES"><a id="selectDESC" href="http://www.linuxcmd.org/linux-manpage/en/do.php?file=tree" target="_blank">mostrar archivos y directorios en forma de arbol empezando desde root(1)</a></div>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Espero que les sea util esta lista.</p>
<p>Fuente | <a href="http://www.linuxcmd.org/linux_files_directory-c3_es.html#JUMP" target="_blank">Archivos y Directorios </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/lpci-comandos-en-linux-manipulacion-de-archivos-y-directorios.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Aplicaciones Web] AjaXplorer, el manipulador de archivos con Php</title>
		<link>http://www.ajaxman.net/aplicaciones-web-ajaxplorer-el-manipulador-de-archivos-con-php.html</link>
		<comments>http://www.ajaxman.net/aplicaciones-web-ajaxplorer-el-manipulador-de-archivos-con-php.html#comments</comments>
		<pubDate>Wed, 18 Mar 2009 21:23:50 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Descargas]]></category>
		<category><![CDATA[Librerias]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[AjaXplorer]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1493</guid>
		<description><![CDATA[<p>Pues así es resulta que en Webintenta, me encontré con  una interesante aplicación web la cual es un completo gestor de archivos Open source, escrito en PHP. Es bastante rápido, y bastante practico, a continuación listo las características platicadas en Webintenta. Podemos realizar tanto sobre carpetas como archivos las siguientes acciones: renombrar, copiar, mover, eliminar, [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Pues así es resulta que en <strong>Webintenta</strong>, me encontré con  una interesante aplicación web la cual es un completo gestor de archivos <strong>Open source</strong>, escrito en PHP.</p>
<p>Es bastante rápido, y bastante practico, a continuación listo las características platicadas en <strong>Webintenta</strong>.</p>
<ul>
<li>Podemos realizar tanto sobre carpetas como archivos las siguientes acciones: renombrar, copiar, mover, eliminar, descargar.</li>
<li>Carga de archivos múltiples con barra de progreso.</li>
<li>Posibilidad de editar archivos de texto (con resaltado de sintaxis para JS, PHP, HTML, Java, SQL y PERL).</li>
<li>Las imágenes se pueden ver de antemano y en un pase de diapositivas.</li>
<li>Los archivos MP3 se pueden escuchar sin descargarlos.</li>
<li>Los vídeos de Flash también se pueden ver sin necesidad de descargarlos.</li>
<li>Los archivos ZIP pueden ser navegados y extraídos desde el propio gestor de archivos.</li>
<li>Sistema de favoritos para llegar a los archivos que uno desea de un modo más fácil.</li>
<li>Multilenguaje, con soporte para el español.</li>
<li>Búsqueda recursiva.</li>
<li>Entorno multi-usuario. El administrador puede crear nuevos usuarios y permite asignar los directorios y derechos a los usuarios.</li>
<li>Drag&#8217;n Drop, Atajos de teclado, Capacidad para seleccionar múltiples archivos / carpetas.</li>
</ul>
<p>Lo que me gusto mucho fue sin duda el resaltado de sintaxis, el cual es rapido y bastante bueno ademas de que obviamente se puede descargar y usar libremente.</p>
<div id="attachment_1494" class="wp-caption aligncenter" style="width: 525px"><img class="size-full wp-image-1494" title="AjaXplorer Web based file browser" src="http://www.ajaxman.net/wp-content/uploads/2009/03/ajaxexplorer.jpg" alt="AjaXplorer Web based file browser" width="515" height="296" /><p class="wp-caption-text">AjaXplorer Web based file browser</p></div>
<p>Me entere via | <a title="AjaXplorer: Gestor de archivos gratuito en PHP" href="http://www.webintenta.com/AjaXplorer-gestor-de-archivos-gratuito-en-PHP.html" target="_blank">AjaXplorer: Gestor de archivos gratuito en PHP </a></p>
<p>Y la aplicación la puedne encontrar en  | <a href="http://www.ajaxplorer.info/" target="_blank">Ajaxplorer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/aplicaciones-web-ajaxplorer-el-manipulador-de-archivos-con-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Twitter] Como postear en twitter con Php sin complicaciones</title>
		<link>http://www.ajaxman.net/twitter-como-postear-en-twitter-con-php-sin-complicaciones.html</link>
		<comments>http://www.ajaxman.net/twitter-como-postear-en-twitter-con-php-sin-complicaciones.html#comments</comments>
		<pubDate>Thu, 12 Mar 2009 16:40:08 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Codigo]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1480</guid>
		<description><![CDATA[<p>Se que casi no hablo de twitter pero me parece una herramienta bastante útil, sobre todo para los blogs. Ahora propuse un proyecto en mi trabajo, en donde cada que alguien publique un anuncio clasificado, se envié dicho mensaje a Twitter, dada su potencialidad y su fama. Pensé enviar los datos mediante curl, con su [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Se que casi no hablo de <strong>twitter</strong> pero me parece una herramienta bastante útil, sobre todo para los blogs.</p>
<p>Ahora propuse un proyecto en mi trabajo, en donde cada que alguien publique un anuncio clasificado, se envié dicho mensaje a <strong>Twitter</strong>, dada su potencialidad y su fama.</p>
<p>Pensé enviar los datos mediante <strong>curl</strong>, con su <strong>api</strong>, pero me encontré con un buen código por al red, con el cual podemos postear en Twitter sin necesidad de usar CURL, que es lo mas lógico, lo mas chido de este código es que es muy fácil de implementar y muy simple.</p>
<p>A continuación les pongo el código que me encontré como verán es muy simple.</p>
<p></p><pre class="crayon-plain-tag">/*---- cr&eacute;ditos:http://www.ohmybug.com/ ----*/
$message = &amp;quot;Testeando c&oacute;mo postear en twitter sin curl&amp;quot;;
$url = &amp;quot;http://twitter.com/statuses/update.xml?&amp;quot;;
$username = 'user';//usuario
$password = 'pass';//password
$params = &amp;quot;status=&amp;quot;. rawurlencode($message);
$result = file_get_contents($url.$params , false, stream_context_create(array(
&amp;quot;http&amp;quot; =&gt; array(
&amp;quot;method&amp;quot; =&gt; &amp;quot;POST&amp;quot;,
&amp;quot;header&amp;quot; =&gt; &amp;quot;Authorization: Basic &amp;quot;. base64_encode($username. &amp;quot;:&amp;quot;. $password)
)
)));</pre><p></p>
<p>Si se dan cuenta todo esto es posible gracias al uso del parámetro <strong>stream_context_create</strong>, de la función<strong> file_get_contents</strong>, en donde enviamos un <strong>array</strong> llamado en este caso <strong>http</strong>, usando el método <strong>post</strong> y un <strong>header</strong> con los datos de acceso.</p>
<p>Cabe destacar lo probé y funciona bastante bien, solo haría falta meterlo en una función o algo así, pero eso es extra.</p>
<p>Código encontrado en | <a href="http://www.disegnocentell.com.ar/notas2.php?id=238" target="_blank">Postear en twitter usando PHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/twitter-como-postear-en-twitter-con-php-sin-complicaciones.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Php] Descarga y manual de Cake PHP 1.2</title>
		<link>http://www.ajaxman.net/php-descarga-y-manual-de-cake-php-12.html</link>
		<comments>http://www.ajaxman.net/php-descarga-y-manual-de-cake-php-12.html#comments</comments>
		<pubDate>Tue, 06 Jan 2009 15:51:56 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Librerias]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Manual]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1388</guid>
		<description><![CDATA[<p>Haber si continuamos con el blog y para empezar a romper el hielo les platico esta entrada publicada en el blog de carlos leopoldo. Se trata de el aviso que CakePHP 1.2 ha sido liberado y tal como comenta, este sistema se trata de un framework, con el cual podemos hacer maravillas sin tener que [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Haber si continuamos con el blog y para empezar a romper el hielo les platico esta entrada publicada en el blog de carlos leopoldo.</p>
<p>Se trata de el aviso que <strong>CakePHP 1.2</strong> ha sido liberado y tal como comenta, este sistema se trata de un <strong>framework</strong>, con el cual podemos hacer maravillas sin tener que rompernos la cabeza con php.</p>
<div id="attachment_1389" class="wp-caption aligncenter" style="width: 240px"><a href="http://www.cakephp.org"><img class="size-full wp-image-1389" title="CakePHP" src="http://www.ajaxman.net/wp-content/uploads/2009/01/cakephp.png" alt="CakePHP" width="230" height="225" /></a><p class="wp-caption-text">CakePHP</p></div>
<p>Esta claro que para poder usarlo es necesario tener conocimientos en <strong>Php, html, Javascript, Css entre otros,</strong> pero solo nos centraremos en usar los componentes que estáne ya programados y listos para ello, por ejemplo con este framework podemos crear todo un sistema de publicación para un blog, claro que sin la potencia de <strong>Wordpres </strong> <img src='http://www.ajaxman.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   pero es solo un ejemplo.</p>
<p>Lo interesante también es que hay un manual completamente en español, y esta muy fácil de seguir, yo personalmente no le he dado oportunidad a este <strong>framework</strong>(ni a <strong>smarty</strong>), por que siento el que código manual es mejor y muy potente, pero por si alguno de ustedes le interesa, aquí les dejo los datos de dicho framework.</p>
<p>Descarga de CakePHP 1.2 <a href="http://cakeforge.org/frs/?group_id=23&amp;release_id=433">Aqui </a><br />
Manual en español <a href="http://book.cakephp.org/es">Aqui</a>.<br />
Pagina oficial <a href="http://www.cakephp.org">CakePHP</a>.</p>
<p>Via | <a title="Permalink para Manual de CakePHP 1.2 y descarga versión final" rel="bookmark" href="http://www.carlosleopoldo.com/post/manual-descarga-cakephp-1.2/">Manual de CakePHP 1.2 y descarga versión final</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/php-descarga-y-manual-de-cake-php-12.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[GNU/Linux] Linux-Unix Cheat Sheets(Chuletas)</title>
		<link>http://www.ajaxman.net/gnulinux-linux-unix-cheat-sheetschuletas.html</link>
		<comments>http://www.ajaxman.net/gnulinux-linux-unix-cheat-sheetschuletas.html#comments</comments>
		<pubDate>Fri, 14 Nov 2008 18:16:28 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Cheat Sheet]]></category>
		<category><![CDATA[Gnu]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1306</guid>
		<description><![CDATA[<p>Leyendo ubuntulife, me encuentro con una colección de chuletas o Cheat Sheets, que vienen siendo una especie de resumen, con los elementos mas básicos, en este caso para GNU/Linux y Unix. Enlace de descarga de las Cheat Sheets/Chuletas &#124; Linux-Unix Cheat Sheets &#8211; The Ultimate Collection Vía &#124; Linux-Unix Cheat Sheets &#8211; The Ultimate Collection</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Leyendo <strong>ubuntulife</strong>, me encuentro con una colección de chuletas o Cheat Sheets, que vienen siendo una especie de resumen, con los elementos mas básicos, en este caso para GNU/Linux y Unix.</p>
<div id="attachment_1307" class="wp-caption aligncenter" style="width: 310px"><img class="size-full wp-image-1307" title="Muchas Cheat Sheet" src="http://www.ajaxman.net/wp-content/uploads/2008/11/cheat.jpg" alt="Muchas Cheat Sheet" width="300" height="247" /><p class="wp-caption-text">Muchas Cheat Sheet</p></div>
<p>Enlace de descarga de las Cheat Sheets/Chuletas | <a href="http://www.scottklarr.com/topic/115/linux-unix-cheat-sheets---the-ultimate-collection/" target="_blank">Linux-Unix Cheat Sheets &#8211; The Ultimate Collection</a></p>
<p>Vía | <a href="http://ubuntulife.wordpress.com/2008/11/12/linux-unix-cheat-sheets-the-ultimate-collection/" target="_blank">Linux-Unix Cheat Sheets &#8211; The Ultimate Collection</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/gnulinux-linux-unix-cheat-sheetschuletas.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.ajaxman.net @ 2012-05-22 18:36:31 -->
