Blog Developando » PHP http://developando.com/blog ¿Tienes una idea? Nosotros te ayudamos Thu, 19 Jun 2014 10:05:42 +0000 es-ES hourly 1 http://wordpress.org/?v=3.8.3 CakePHP configurar fichero robots.txt http://developando.com/blog/cakephp-configurar-fichero-robots-txt http://developando.com/blog/cakephp-configurar-fichero-robots-txt#comments Wed, 07 May 2014 08:03:30 +0000 http://developando.com/blog/?p=2450 En una aplicación normal desarrollada en PHP el fichero ‘robots.txt‘ se situará en la carpeta raíz del servidor donde esté alojada la aplicación. Pero si esta aplicación se desarrolla utilizando el framework CakePHP habrá que crear dicho fichero dentro de la carpeta ‘webroot‘ de la aplicación. Detectar problema robots.txt Si se crea el fichero ‘robots.txt‘ […]

The post CakePHP configurar fichero robots.txt appeared first on Blog Developando.

]]>
En una aplicación normal desarrollada en PHP el fichero ‘robots.txt‘ se situará en la carpeta raíz del servidor donde esté alojada la aplicación. Pero si esta aplicación se desarrolla utilizando el framework CakePHP habrá que crear dicho fichero dentro de la carpeta ‘webroot‘ de la aplicación.

Detectar problema robots.txt

Si se crea el fichero ‘robots.txt‘ en la carpeta raíz del servidor, al acceder a la url “http://midominio.com/robots.txt” se obtendrá un error de este tipo:

  1. Not Found
  2. Error: The requested address '/robots.txt' was not found on this server.

Y en el ‘error.log‘ de la aplicación CakePHP podremos ver una línea de este estilo:

  1. 2014-05-06 13:47:09 Error: [MissingControllerException] Controller class Robots.txtController could not be found.

Solucionar problema robots.txt

Para solucionar este error únicamente hay que mover el fichero ‘robots.txt‘ a la carpeta ‘~/app/webroot/‘. Una vez movido el fichero, si se accede a la url anterior podremos ver el contenido completo del fichero ‘robots.txt’ que será consultado por los rastreadores de nuestro sitio.

The post CakePHP configurar fichero robots.txt appeared first on Blog Developando.

]]>
http://developando.com/blog/cakephp-configurar-fichero-robots-txt/feed 0
CakePHP, ordenar y agrupar resultados consultas base de datos http://developando.com/blog/cakephp-ordenar-agrupar-resultados-consutlas-base-datos http://developando.com/blog/cakephp-ordenar-agrupar-resultados-consutlas-base-datos#comments Thu, 26 Dec 2013 09:39:41 +0000 http://developando.com/blog/?p=1616 En este breve tutorial vamos a explicar como ordenadar y/o agrupar los resultados de una consulta a base de datos en un aplicación desarrollada con CakePHP. Para ello utilizaremos los parámetros ‘group‘ y  ‘order‘. Ordenar los resultados de la consulta Veamos un simple ejemplo de una consulta que devuelve todas las personas que están almacenadas […]

The post CakePHP, ordenar y agrupar resultados consultas base de datos appeared first on Blog Developando.

]]>
En este breve tutorial vamos a explicar como ordenadar y/o agrupar los resultados de una consulta a base de datos en un aplicación desarrollada con CakePHP. Para ello utilizaremos los parámetros ‘group‘ y  ‘order‘.

Ordenar los resultados de la consulta

Veamos un simple ejemplo de una consulta que devuelve todas las personas que están almacenadas en una tabla de la base de datos. Para obtener todas las personas de la tabla utiliaríamos la siguiente línea:

  1. $this->Personas->find("all");

Orden ascendente

Con la línea anterior obtendríamos un listado con todas las personas, pero ahora lo que queremos es que este listado esté ordenado alfabéticamente. Entonces a la consulta anterior deberemos añadirle la condición ‘order’ para indicar el orden en el que serán devueltos los registros:

  1. $this->Personas->find("all",array('order'=>'Personas.nombre'));

Añadiendo el parámetro ‘order’ ahora los resultados serán ordenados de la ‘A’ a la ‘Z’.

Orden descendente

Para ordenarlos de forma descendente deberemos utilizar la siguiente línea, indicando ahora ‘order DESC‘:

  1. $this->Personas->find("all",array('order'=>'Personas.nombre DESC'));

Los resultados serán devueltos ahora ordenados de la ‘Z’ a la ‘A’.

Agrupar los resultados de la consulta

Si lo que se quiere es agrupar el resultado de la consulta debermos utilizar el parámetro ‘group‘:

  1. $this->Personas->find("all",array('group'=>'Personas.ciudad'));

Con estos dos parámetros ‘group‘ y ‘order‘ podrás agrupar y ordenar el resultado de todas tus consultas.

The post CakePHP, ordenar y agrupar resultados consultas base de datos appeared first on Blog Developando.

]]>
http://developando.com/blog/cakephp-ordenar-agrupar-resultados-consutlas-base-datos/feed 0
CakePHP, uso de variables globales en controladores http://developando.com/blog/cakephp-uso-de-variables-globales-en-controladores http://developando.com/blog/cakephp-uso-de-variables-globales-en-controladores#comments Sat, 30 Nov 2013 09:42:27 +0000 http://developando.com/blog/?p=1429 A menudo en un mismo controlador o en varios se debe utilizar una misma variable. Para esto declararemos una variable global, que podrá ser referenciada desde cualquier método de un controlador, o grupo de controladores en el caso de utilizar herencia. Ejemplo 1, variable global con el nombre del usuario Vamos a ver un sencillo […]

The post CakePHP, uso de variables globales en controladores appeared first on Blog Developando.

]]>
A menudo en un mismo controlador o en varios se debe utilizar una misma variable. Para esto declararemos una variable global, que podrá ser referenciada desde cualquier método de un controlador, o grupo de controladores en el caso de utilizar herencia.

Ejemplo 1, variable global con el nombre del usuario

Vamos a ver un sencillo ejemplo de variable global en un controlador de CakePHP. Vamos a crear una variable que almacene el nombre de una persona, y lo utilizaremos en dos métodos diferentes del mismo controlador:

  1. public class MyController{
  2.       var $nombreGlobal = "David";
  3.  
  4.       public function saludar(){
  5.           return "Hola ".$this->nombreGlobal; // Devolverá 'Hola David'
  6.       }
  7.  
  8.       public function despedir(){
  9.           return "Adios ".$this->nombreGlobal; // Devolverá 'Adios David'
  10.       }
  11. }

En este ejemplo vemos que se utiliza la misma variable en los dos métodos que tiene el controlador.

Ejemplo 2, variable global con un contador

  1. class MyController {
  2.  
  3.       var $contador = 0;
  4.  
  5.       public function inciar(){
  6.            while($this->contador < 10){
  7.                 $this->contador++;
  8.            }
  9.            finalizar();
  10.       }
  11.  
  12.       public function finalizar(){
  13.            return "Contador acabado en :".$this->contador; // Devolverá 'Contador acabado en : 10'
  14.       }
  15. }

En este ejemplo tenemos un variable global que será incrementada en un método hasta llegar a un límite. Cuando se alcanza el límite, se llama a otro método que mostrará el valor con el que se ha detenido.

Ejemplo 3, variables globales utilzando herencia

En el caso de querer compartir una variable entre varios controladores, lo que se debe hacer es tener un controlador ‘Padre’ del que van a heredar todos los que necesiten dicha variable.

Creamos el controlador ‘padre’ con la variable global

El controlador ‘padre’ tiene la variable que será usada por el resto de controladores que hereden de él:

  1. class AppController {
  2.       var $nombreGlobal = "Developando";
  3. }

Controladores heredados

Controladores que van a acceder a la variable global definida.

3.1 – Primer controlador

  1. class SaludarController extends AppController {
  2.       public function saludar(){
  3.           return "Hola ".$this->nombreGlobal; // Devolverá 'Hola Developando'
  4.       }
  5. }

3.2 – Segundo controlador

  1. class SaludarController extends AppController {
  2.       public function despedir(){
  3.           return "Adios ".$this->nombreGlobal; // Devolverá 'Adios Developando'
  4.       }
  5. }

En este ejemplo vemos que en un controlador se ha definido una variable global llamada ‘nombreGlobal‘ que es utilizada por dos controladores. Para conseguir esto únicamente hemos tenido que añadir ‘extends AppController‘ en los controladores hijos y así emplear la herencia de CakePHP, y por tanto, poder acceder a dicha variable.

Estos serían un ejemplos sencillos para ver el uso de una variable global dentro de un controlador en CakePHP.

The post CakePHP, uso de variables globales en controladores appeared first on Blog Developando.

]]>
http://developando.com/blog/cakephp-uso-de-variables-globales-en-controladores/feed 0
CakePHP, ejecutar acción de controladores sin renderizar la vista http://developando.com/blog/cakephp-accion-controlador-sin-renderizar-vista-plantilla http://developando.com/blog/cakephp-accion-controlador-sin-renderizar-vista-plantilla#comments Mon, 28 Oct 2013 19:43:02 +0000 http://developando.com/blog/?p=1258 En este breve tutorial vamos a explicar como crear una acción de un controlador en CakePHP y que no se renderice ninguna vista. Es decir, no necesitamos mostrar datos por pantalla, y por tanto, no es necesario crear ninguna plantilla para la vista de la acción ejecuta. Si no sigues estos pasos, cuando ejecutes la […]

The post CakePHP, ejecutar acción de controladores sin renderizar la vista appeared first on Blog Developando.

]]>
En este breve tutorial vamos a explicar como crear una acción de un controlador en CakePHP y que no se renderice ninguna vista. Es decir, no necesitamos mostrar datos por pantalla, y por tanto, no es necesario crear ninguna plantilla para la vista de la acción ejecuta.

Si no sigues estos pasos, cuando ejecutes la acción del controlador de CakePHP, se lanzará una excepción de este tipo, en el que se indica que no exite un fichero con la plantilla de la página a renderizar:

  1. Error: The view for MiFuncionController::miFuncion() was not found.
  2.  
  3. Error: Confirm you have created the file: c:\MiApp\app\View\MIFuncion\mi_funcion.ctp

Para evitar que salte esta excepción únicamente hay que añadir la siguiente línea al final del método que ejecuta la acción del controlador de CakePHP:

  1. $this->autoRender = false;

A continuación mostramos un método que devolverá un mensaje pero que no cargará ninguna vista:

  1. public function accionSinVista(){
  2.  
  3.         $this->set('result', "Resultado de la operación.");
  4.  
  5.         // No se va a mostrar nada por pantalla, no renderizar vista
  6.         $this->autoRender = false;
  7.  
  8. }

Esto puede ser útil para obtener valores a través de peticiones ajax desde el navegador. Queremos que se ejecute una lógica en el servidor, pero no es necesario que se muestre una página. También podría ser útil cuando se realiza la lógica necesario y se redirecciona a otra vista.

The post CakePHP, ejecutar acción de controladores sin renderizar la vista appeared first on Blog Developando.

]]>
http://developando.com/blog/cakephp-accion-controlador-sin-renderizar-vista-plantilla/feed 0
Configuración de PHPMailer para envío de correos SMTP http://developando.com/blog/php-configuracion-phpmailer-para-envio-de-correos-smtp http://developando.com/blog/php-configuracion-phpmailer-para-envio-de-correos-smtp#comments Fri, 26 Apr 2013 09:12:14 +0000 http://developando.com/blog/?p=533 La clase PHPMailer se emplea para el envío de correos en aplicaciones web desarrolladas en PHP. Permite utilizando configurar en pocas líneas tanto el servidor de correos como las cabeceras y el cuerpo de los correos. En este tutorial vamos a explicar como enviar correos en PHP mediante un servidor SMTP. Para comenzar a utilizar […]

The post Configuración de PHPMailer para envío de correos SMTP appeared first on Blog Developando.

]]>
La clase PHPMailer se emplea para el envío de correos en aplicaciones web desarrolladas en PHP. Permite utilizando configurar en pocas líneas tanto el servidor de correos como las cabeceras y el cuerpo de los correos. En este tutorial vamos a explicar como enviar correos en PHP mediante un servidor SMTP.

Para comenzar a utilizar PHPMailer descargar la última versión disponible aquí. Antes de comenzar vamos a diferenciar dos partes principales que se deben configurar:

  1. ¿Cóimo se va a enviar el correo, a través de que servidores y protocolos?
  2. ¿Qué se va a enviar y a quién?

1.- Configurar el servidor smtp de envío de correos

Para poder enviar un correo es necesario configurar previamente un servidor SMTP. PHPMailer nos permite configurar los parámetros de este servidor en pocas líneas. Estos son algunos de los parámetros de configuración que se pueden utiilzar:

  • Habilitar la autenticación en el servidor
  • Puerto de escucha del servidor
  • Dirección del servidor
  • Usuario y contraseña para autenticarse contra el SMTP

Esto traducido a líneas de código sería lo siguiente:

  1. <?php
  2.  
  3. require '../class.phpmailer.php';
  4. try {
  5.  
  6. // Crear una nueva  instancia de PHPMailer habilitando el tratamiento de excepciones
  7. $mail = new PHPMailer(true);
  8.  
  9. // Configuramos el protocolo SMTP con autenticación
  10. $mail->IsSMTP();
  11. $mail->SMTPAuth = true;
  12.  
  13. // Puerto de escucha del servidor
  14. $mail->Port = 25
  15.  
  16. // Dirección del servidor SMTP
  17. $mail->Host = 'miservidor.smpt.com';
  18.  
  19. // Usuario y contraseña para autenticación en el servidor
  20. $mail->Username   = "[email protected]"
  21. $mail->Password = "XXXXXXX"
  22.  
  23. ?>

Una vez configurado el servidor SMTP se podría empezar a enviar correos. Recordad incluir la clase al principio del fichero antes de configurar nada.

2. – Configuración de las cabeceras y el cuerpo del correo

 Tras configurar el servidor SMTP, el siguiente paso es crear el correo que se quiere enviar. PHPMailer nos permite crear estos correos indicando lo sigiuente:

  • Remitente del mensaje de correo, nombre y dirección de correo.
  • Destinatarios del correo, añadir una o varias direcciones.
  • Destinatarios de correo en copia y copia oculta.
  • Asunto del mensaje
  • Contenido del correo
  • Ficheros adjuntos

Empecemos por configurar los datos del remitente del correo. Pare ello hay que utilizar dos líneas:

  1. // Dirección de correo del remitente
  2. $mail->From = "[email protected]";
  3.  
  4. // Nombre del remitente
  5. $mail->FromName = "Mi nombre y apellidos";

El siguiente paso es indicar el o los destinatarios:

  • Para añadir nuevos destinatarios indicar la dirección de correo y el nombre (opcional) de cada uno:
    1. $mail->AddAddress("[email protected]","Nombre 1");
    2. $mail->AddAddress("[email protected]","Nombre 2");
    3. ...
    4. $mail->AddAddress("[email protected]","Nombre n");
  • Añadir direcciones en copia:
    1. $mail->AddCC("[email protected]","Nombre copia 1");
  • Añadir direcciones en copia oculta, igual que la anterior solo que al resto de destinatarios no se les mostrará la dirección de esta persona:
    1. $mail->AddBCC("[email protected]","Nombre copia 1");

Configurar el asunto del mensaje:

  1. $mail->Subject = "Asunto del correo";

Una vez hemos configurado las cabeceras del correo, hay que rellenarlo con el contenido que se quiere enviar. Para añdir el cuerpo del mensaje:

  1. // Creamos en una variable el cuerpo, contenido HMTL, del correo
  2. $body  = "Proebando los correos con un tutorial<br>";
  3. $body .= "hecho por <strong>Developando</strong>.<br>";
  4. $body .= "<font color='red'>Visitanos pronto</font>";
  5.  
  6. // Añadimos el contenido al mail creado
  7. $mail->Body = $body;
  8.  

Si necesitases enviar algún fichero adjunto al mensaje se debe utilizar el siguiente método que recibe dos parámetros que son la ruta del fichero a enviar, y el nombre que se mostrará en el correo:

  1. $mail->AddAttachment("misImagenes/foto1.jpg", "developandoFoto.jpg");
  2. $mail->AddAttachment("files/proyecto.zip", "demo-proyecto.zip");

En este punto del tutorial ya tendríamos tanto las cabeceras como el cuerpo del mensaje configuradas. Ahora habría que hacer una llamada a la función ‘send()‘ para su envío:

  1. $mail->Send();

Código completo

Aquí os dejamos el contenido completo del código utilizado en este tutorial:

  1. <?php
  2.  
  3. require '../class.phpmailer.php';
  4. try {
  5.  
  6. // Crear una nueva  instancia de PHPMailer habilitando el tratamiento de excepciones
  7. $mail = new PHPMailer(true);
  8.  
  9. // Configuramos el protocolo SMTP con autenticación
  10. $mail->IsSMTP();
  11. $mail->SMTPAuth = true;
  12.  
  13. // Configuración del servidor SMTP
  14. $mail->Port = 25
  15. $mail->Host = 'miservidor.smpt.com';
  16. $mail->Username   = "[email protected]"
  17. $mail->Password = "XXXXXXX"
  18.  
  19. // Configuración cabeceras del mensaje
  20. $mail->From = "[email protected]";
  21. $mail->FromName = "Mi nombre y apellidos";
  22.  
  23. $mail->AddAddress("[email protected]","Nombre 1");
  24. $mail->AddAddress("[email protected]","Nombre 2");
  25.  
  26. $mail->AddCC("[email protected]","Nombre copia 1");
  27.  
  28. $mail->AddBCC(“copia1@correo.com”,”Nombre copia 1);
  29.  
  30. $mail->Subject = "Asunto del correo";
  31.  
  32. // Creamos en una variable el cuerpo, contenido HMTL, del correo
  33. $body  = "Proebando los correos con un tutorial<br>";
  34. $body .= "hecho por <strong>Developando</strong>.<br>";
  35. $body .= "<font color='red'>Visitanos pronto</font>";
  36.  
  37. $mail->Body = $body;
  38.  
  39. // Ficheros adjuntos
  40. $mail->AddAttachment("misImagenes/foto1.jpg", "developandoFoto.jpg");
  41. $mail->AddAttachment("files/proyecto.zip", "demo-proyecto.zip");
  42.  
  43. // Enviar el correo
  44. $mail->Send();
  45.  
  46. ?>

Siguiendo este tutorial ya deberías ser capáz de configurar los parámetros del servidor de correo SMTP y de crear y enviar un correo en PHP.

Agradecemos que nos dejéis vuestros comentarios con dudas,  críticas o sugerencias para mejorar el contenido.

The post Configuración de PHPMailer para envío de correos SMTP appeared first on Blog Developando.

]]>
http://developando.com/blog/php-configuracion-phpmailer-para-envio-de-correos-smtp/feed 6

Last updated by at .