Adsense

Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Mostrando entradas con la etiqueta php. Mostrar todas las entradas

martes, 21 de julio de 2015

Primeros pasos en microfameworks php Slim Php 3 Beta

Cuando los frameworks de PHP son mucho con demasiado, llega el momento de probar cosas más sencillas. Hoy me he decantado por Slim php, uno de los microframeworks que al juzgar, lleva buena reputación, al ser un verdadero micro framework y prestar un rendimiento verdaderamente bueno.

Luego de una existosa versión 2, está disponible Slim 3 Beta 1 para empezar a probar el mismo y ponerte las pilas con microframeworks: crea tu carpeta y comienza en composer:

composer require slim/slim:3.x-dev

Así comenzarás a trabajar con tu versión 3 beta 1 y tomarás la delantera en los microframeworks. Si crees que tu proyecto es demasiado chico para tener que utilizar un framework, puede que tengas toda la razón. Pero jamás será muy pequeño para un microframework, el cual podrá permitirte cumplir aunque sea con las medidas más básicas de seguridad en peticiones y en base de datos.

Actualización

Una forma sencilla de empezar, con cosas ya añadidas es trabajar con la app skeleton de Rob Allen. Basta con tipear

composer create-project -n -s dev akrabat/slim3-skeleton my-app

Y tendrás en tu carpeta my-app una app con estructura.

jueves, 2 de abril de 2015

[SOLUCIONADO] Error: Non-static method Illuminate\Http\Request::...should not be called statically, assuming $this from incompatible context

Si hacemos uso de una función estática de la clase Request puede que nos devuelva el error:

Error: Non-static method Illuminate\Http\Request::ajax() should not be called statically, assuming $this from incompatible context
La causa de eso es que usamos el namespace en vez de la facade.

Reemplaza esto:
use Illuminate\Http\Request;

Por
Request;

Esto solventará el inconveniente.

sábado, 26 de enero de 2013

Access Forbidden Error 403 XAMPP Windows 7

Estuve creando un directorio virtual como el del post anterior y cuando fui a correr en el explorador me salió el error 403.

Al parecer al emplear Apache 2.4 basta con colocar "Require all granted" en vez de usar:
"

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
"

(Options Indexes MultiViews permite ver la raíz de directorios)

Así tengo mi configuración y funciona:
Alias /dropbox "F:\Docs\Dropbox\web"
<Directory "F:\Docs\Dropbox\web">
Options Indexes MultiViews
Require all granted
</Directory>

miércoles, 12 de septiembre de 2012

Cifrar contraseñas en PHP 5.5 con password_hash

Las contraseñas deben almacenarse en forma cifrada unidireccionalmente para mayor seguirdad de nuestras aplicaciones en php.

Php 5.5 ha añadido nuevas funciones específicamente diseñadas para cifrar contraseñas de una forma mucho más segura que los mecanismos anteriores de MD5 o SHA1.

Así para generar la contraseña cifrada en PHP5 nos bastaría hacer

$hash = password_hash($passw, PASSWORD_BCRYPT, ['cost' => 10]);

donde:

$hash: La contraseña cifrada.
$passw: La contraseña sin cifrar.
PASSWORD_BCRYPT: El nuevo súper algoritmo de encripción y
['cost' => 10]: Es grado de complejidad del cifrado.


Más información, así como este ejemplito copiado sin permiso de autor ni nada parecido puedes apreciarlo en cristalab

miércoles, 8 de febrero de 2012

Como programar con base de datos en php

Una de las principales cosas que enseñan los libros de php es a trabajar PHP pero de una manera muy mala. Yo condeno trabajar directamente con las funciones para trabajar con una base de datos determinada.

La razón radica en que escribiremos estas mismas funciones en cada parte que manipulemos la base de datos. Esto posiblemente creará redundancia inútil, y también amarrará nuestro código a esa función determinada.

En un futuro php puede cambiar, y aquella función que empleaste anteriormente pasa a ser obsoleta. Tu sistema tendrá que pasar por un cambio en su totalidad para cambiar esta función.

Lo más aconsejable antes de trabajar directamente con mysql_query es que crees primero una clase, un web service o una abstracción a la base de datos que mantenga a tus aplicaciones completamente aparte de las funciones con las cuales se interactua con la base de datos.

Esto mantiene libre de matrimonios a conveniencia con un determinado manejador de BD, libertad de trabajar con el que tu desees, y con la librería que quieras.

Otras cosas que recomiendo:


  • Abrir y CERRAR cada conexión a la BD.


  • Manejar Excepciones a la hora de realizar cualquier operación.


  • Emplear Transacciones en todas las oportunidades que sea debido.


Tratar en lo posible de encapsular funciones para manipular la base de datos en una clase. Esto da más organización al código.

Métodos que debes programar:

En mi experiencia desarrollando aplicaciones de pequeño tamaño siempre he desarrollado tres tipos de métodos:


  • Uno que devuelva un sólo resultado (los resultados de un SUM, verificar si algo existe y devolver 0 o 1).
  • Otro que devuelva un arreglo con diversos resultados.


  • Un procedimiento que reciba por parámetro un array lleno de sentencias SQL y que procese una por una, limpiandolas de SQL injection, llevando la evaluación, manipulando excepciones, ejecutando todo el conjunto de instrucciones bajo una misma transacción.
Con estos métodos encapsulados vas a ahorrar mucho código y podrás optimizar el acceso a datos sin tener que cambiar todo el código de tu pequeña aplicación. Usar el patrón MVC También es ampliamente recomendable.

lunes, 10 de octubre de 2011

Message: Use of undefined constant OCI_COMMIT_ON_SUCCESS - assumed 'OCI_COMMIT_ON_SUCCESS'

Este mensaje de error ocurre cuando se usa el framework de php codeigniter y no se tiene activa la librería php_oci8.dll dentro del php.ini

Bastaría activarla y todo funcionaria teóricamente (y práctica también pues a mi me funcionó pero ustedes saben como es esto que a alguien le funciona y a otro no XD).

La misma gente de Oracle ha lanzado un librito gratuito sobre la implementación de aplicaciones de Oracle y Php: The Underground PHP and Oracle Manual.

http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html

sábado, 5 de junio de 2010

Como Generar y leer archivos Excel en php: phpexcel


Tremenda clase que desarrollaron esta gente... yo la usé y me gustó mucho. Sobre todo porque es una solución elegante que no usa la marginalidad de enviar tablas html y hacerlo pasar de archivo excel con un header. (Yo lo hacía y hasta lo promovía).

phpexcel te permite generar archivos excel con celdas con formato excel, permite trabajar los archivos bajo el polémico openXML, por lo que puedes genera archivos excel 2007 - 2010 y dejar descansar en paz al formato xls. Por si quieres seguir usando tanto para lectura o escritura pues también usa xls.

La cuestión está alojada en el codeplex de microsoft y este es su website:


Sencillamente ME Encanta! cuando Microsoft se muestra "Abierto" y permite que proyectos joyas como este estén disponibles al público en general las ventajas son muchas.

sábado, 24 de abril de 2010

Crear archivo .htaccess en Windows XP

estoy practicando unos ejercicios de un libro y me causó mucha gracia que la solución que ofrecieran para crear un archivo .htaccess en windows sea crear el archivo en un servidor web remoto y descargarlo.

He aquí una solución que no requiere pagar un hosting o un servidor ftp:

1 Abrir bloc de Notas o notepad++ o cualquier editor de texto.
2 Escribir las instrucciones del archivo
y 3 que es donde está el detalle: Al momento de "Guardar Como"/"Save As" se coloca el nombre ".htaccess" entre comillas.

sábado, 26 de julio de 2008

Ejemplo Query Consulta Interbase Firebird desde PHP en Windows

  $str_usr_bd="SYSDBA";
  $str_psw_bd="masterkey";
  $str_ruta='localhost:c:/ADMIN.gdb';
  //echo $str_ruta."
";
  $conex=ibase_pconnect($str_ruta, $str_usr_bd, $str_psw_bd);
  $sql="SELECT * FROM TABLA";
  $cursor = ibase_query($conex, $sql);
  print '

';
  while($fila=ibase_fetch_object($cursor)){
    print "";
    foreach($fila as $clave => $value){
      print "";
    }
    print "";  
  }
  print "
$value&nbsp
";
?>


Si tienes problemas para conectarte o consultar en firebird te recomiendo leer el manual de PHP:

http://ve.php.net/manual/es/function.ibase-connect.php
http://ve.php.net/manual/es/function.ibase-query.php
http://ve.php.net/manual/es/function.ibase-fetch-row.php

Son más completos que este ejemplito chiquitico

viernes, 11 de julio de 2008

usar Round para Redondear a dos 2 decimales en php pascal delphi

Un monje shaolin viendo mi ignorancia me reveló algo tan evidente que por mi brutalidad nunca se me ocurriría hacer ni en mil reencarnaciones:

(Lo vi en una pagina pero no recuerdo cual fue para hacer la cita textual, sorry)

round(variable*100)/100;

Y no soy solo yo: Hoy en mi oficina muchos quedaron admirados ante la operación je je je.

Ya lo he probado en pasca, delphi y php.

jueves, 3 de enero de 2008

Alojamiento gratis free hosting con PHP mysql y cgi!

Aquí


Para la fecha ofrecen:
300Mb de espacio en disco.
10 GB de Transferencia
7 Bases de Datos
Instalador Automatico
Aloja hasta 5 Dominios
5 Subdominios
VistaPanel
Soporte PHP/MySQL/CGI.

martes, 1 de enero de 2008

Lista de Variables de Entorno en PHP

// AQUÍ VEO LA LISTA QUE ME PIDE EL EJEMPLO

$envs = array( "HTTP_REFERER", "HTTP_USER_AGENT", "REMOTE_ADDR","REMOTE_HOST", "QUERY_STRING", "PATH_INFO" );


foreach ($envs as $env){

if (isset($GLOBALS["HTTP_SERVER_VARS"][$env])){

print "<b>$env:</b>".$GLOBALS["HTTP_SERVER_VARS"][$env]."<br />";

}

}


print ("<br /> AQUI VEO TODA LA LISTA DE VARIABLES DE ENTORNO QUE ESTÁN ACTIVAS... ESTO LO HICE YO <br /><br />");


foreach($GLOBALS["HTTP_SERVER_VARS"] as $key=>$value){

print ("<b>$key:</b> $value <br />");

}

Enviar mail con PHP

$nombre = "xxx";//&$GLOBALS["_POST"]["nombre"];

$telefono = "5454";//&$GLOBALS["_POST"]["telefono"];

$email ="prueba <email@dominio.com>";// &$GLOBALS["_POST"]["email"];

$comentario = "prueba" ;//&$GLOBALS["_POST"]["comentario"];

if ( isset( $nombre ) && isset( $telefono )&& isset( $email ) && isset( $comentario )){

$headers = "mime-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: ".$email."\r\n";

$headers .= "Reply-To: $email\r\n";


$asunto = "Mensaje enviado";

$mensaje = "<b>Enviado por:</b> $nombre </br><b>Teléfono:</b> $telefono</br> <b>E-mail:</b> <a href=\"mailto:$email\"> $email </a> </br> <b> Mensaje: </b> </br> $comentario";

mail("xxxx@gmail.com", $asunto, $mensaje, $headers);

echo "<script language=\"javascript\">";

echo "alert(\"La informacion se ha enviado con exito\");";

echo "</script>";

}

Redimensionar Resize Ancho imagen PHP


$ancho_deseado=125;

$origen_imagen="subero.jpg";

$imagen_original= imagecreatefromjpeg($origen_imagen);

if ($imagen_original){

$dimensiones_imagen_original = getimagesize($origen_imagen);

if ($dimensiones_imagen_original){

$ancho_imagen_original=$dimensiones_imagen_original[0];

if ($ancho_imagen_original>$ancho_deseado){

$alto_imagen_original=$dimensiones_imagen_original[1];

$relacion_tamano=$ancho_imagen_original/$ancho_deseado;

$nueva_altura_deseada=ceil($alto_imagen_original / $relacion_tamano);

$nueva_imagen=imagecreate($ancho_deseado, $nueva_altura_deseada);

imagecopyresized($nueva_imagen, $imagen_original, 0, 0, 0, 0, $ancho_deseado, $nueva_altura_deseada, $ancho_imagen_original, $alto_imagen_original);

}

header("Content-Type: image/jpeg");

echo imagejpeg($nueva_imagen);

}


}

Guardar imagen en Base datos mysql en PHP

// Acá hago mi conexión

include ("../conexiones/conex.php");

//Crear una nueva imagen a partir de un archivo o URL.

$imagen = imagecreatefromjpeg("D:\\Mis Documentos\\Mis imágenes\\tempo.jpg");

//Inicia el almacenamiento en el búfer de salida.

ob_start();

//Producir la salida de una imagen al navegador o a un archivo.

imagejpeg($imagen);

//Devolver el contenido del búfer de salida.

$jpg = ob_get_contents();

//Limpia el búfer de salida y termina el almacenamiento en el búfer de salida.

ob_clean();

//libera de código malicioso

$jpg = str_replace('##','\#\#',mysql_escape_string($jpg));


$sql = "INSERT INTO prueba_foto (foto) VALUES ('$jpg')";

$result = mysql_query($sql,$conex) or die(mysql_error());

caracteres deltante en php

<?php

function caracter_alante($cadena, $num_lugares, $caracter){

settype($cadena, "string");

while (strlen($cadena)<$num_lugares){

$cadena = $caracter.$cadena;

}

return $cadena;

}


@$numero=$_POST['numero'];

print '<h1>'.caracter_alante($numero, 3, '0').'</h1>';

?>

Generar Archivo Excel usando PHP


header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=reporteremesa.xls");
Echo "<Table>";
Echo "<Tr>";
Echo "<Td>";
Echo "Capullito";
Echo "</Td>";
Echo "<Tr>";
Echo "</Table>";