Archivo de la etiqueta: PHP

Gestión de Mensajes en PHP

Es frecuente al programar en PHP que necesitemos personalizar los mensajes que se muestran en tiempo de ejecución. Para ello se utiliza la función error_reporting(). Otro tema distinto es si los queremos establecer de forma permanente con lo cual deberíamos hacerlo en el fichero php.ini.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

Trabajando con Shortcode en plugins de WordPress

Cuando estemos realizando un plugin de WordPress va a ser frecuente que necesitemos indicar un valor especial e en nuestra entrada o página para que sea sustituido por el lo que nosotros programemos en el Plugin. Es lo que se conoce como shortcode.

Nuestro plugin deberá incorporar la instrucción:

add_shortcode('MyShortCode', 'ab_category_posts_show');

Esto lo que hace es que cuando WordPress encuentre en una entrada el siguiente valor [MyShortCode] ejecute la función ab_category_posts_show().

Esta función puede tener la siguiente estructura:

[php]
function ab_category_posts_show($atts, $content=null){
$title = $atts[‘title’];
$cats_selected = array();
$cats_selected = explode(“,”, $atts[‘cat’]);
foreach ( $cats_selected as $catid ) {
$content .= ‘…’;
}
….
return $content;
}
[/php]

Este ejemplo también sirve para comentar como pasar parámetros a la función que vamos a utilizar mediante el valor $atts. Es un array con todos los parámetros que se han especificado dentro del Shortcode. Un parámetro dentro de array a su vez puede ser un único valor (title) o contener una lista de valores que necesitamos pasar a un array de parámetros (cat). En este último caso utilizaremos la función explode() para poner en un array por el que podamos iterar la lista de parámetros.

Ejemplos de llamadas:

  • [MyShortCode title=”My title”]
  • [MyShortCode title=”My title” cat=5]
  • [MyShortCode title=”My title” cat=5,235,4]
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

Obtener el tamaño de una imagen

Es conocida la función PHP para obtener las dimensiones de una imagen:

[PHP]
$image = getimagesize($img_url);
[/PHP]

Sin embargo en algunos servidores se produce el siguiente error al utilizar esta función: URL file-access is disabled. Error que también suele darse en la función file_get_content().

Esto es debido a que las aplicaciones como WordPres, Joomla, etc, No utilizan las directivas allow_url_fopen y allow_url_include por motivos de seguridad. Una opción es activar estas directivas desde el fichero PHP.ini con las siguientes instrucciones:

[PHP]
allow_url_fopen = On
allow_url_include = On

Y también existe una alternativa para obtener el tamaño de la imagen con estas directivas desactivadas y es utilizar la librería CURL de PHP. Veamos un ejemplo:

[PHP]
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $first_img);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
$new_image = ImageCreateFromString($contents);
$imgtmp = WP_CONTENT_DIR . “/uploads/temp.jpg”;
imagejpeg($new_image, $imgtmp,100);
$size = getimagesize($imgtmp);
[/PHP]

Para consultar más ejemplos de utilización de CURL visitar este interesante artículo.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

PHP: Operaciones con ficheros

Operaciones habituales con ficheros (archivos) y directorios (carpetas) en PHP:

Ficheros
[php]
// Copiar un fichero
copy ($file_input , $file_output); // nombres $file_* puede ser path relativo si está en la misma carpeta
// Borrar un fichero
unlink ($nombrearchivo) // $nombre archivo puede ser path relativo si está en la misma carpeta
// Renombrar (cambiar el nombre) un fichero
rename($file_input , $file_output);
[/php]

Directorios

[php]
// Crear un directorio o carpeta (con validación de error)
if(!mkdir($newdir, 0, true)){
die(‘Fallo al crear carpeta…’);
}
// Borrar un directorio o carpeta
rmdir($dirname); // $dirname es el nombre relativo si está en la misma carpeta
[/php]

Nota:

En vez de las variables $file*, $dirname se pueden utilizar lo valores de los archivos entre comillas.

Escribir un archivo borrando primero si existe

[php]
$crlf=”\r\n”;
$file = fopen($filepath, “a”);
for($i=1; $i>5;$i++){
if ($_POST[“pp_clicks_click_url_$i”] <> “”){
$reg = $_POST[“pp_clicks_click_txt_$i”].”;”.$_POST[“pp_clicks_click_url_$i”];
fwrite ($file, $reg.$crlf);
}
}
fclose($file);
[/php]

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

PHP: Como saber la URL y Carpeta donde estamos

Para saber la URL y la carpeta de la Web donde estamos con nuestro fichero PHP tenemos estas posibilidades:

Por ejemplo tenemos los siguientes datos:

Dominio: http://www.midominio.com
Fichero Script: http://www.midominio.com/test/index.php

[php]
echo $_SERVER[“SERVER_NAME”]; // Devuelve: http://www.midominio.com
echo $_SERVER[“REQUEST_URI”]; // Devuelve: /test/index.php

echo basename(__FILE__); // Devuelve: index.php
echo dirname(__FILE__); // Devuelve: /htdocs/midominio/test (esta ruta varía según proveedor)
[/php]

Para saber también el idioma del navegador (Browser language) podemos usar la siguiente función basada en la instrucción $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]

[php]
function get_client_language(){
$default=”en”;
if (isset ($_SERVER[‘HTTP_ACCEPT_LANGUAGE’])) {
$langs=explode (‘,’,$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]);
//start going through each one
foreach ($langs as $value){
$default=substr ($value,0,2);
}
}
return $default;
}
[/php]

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

Formatear un número con PHP

Para hacer un format (formato) de un número con PHP se utiliza la función number_format(), veamos algunos ejemplos:

Por ejemplo, así haríamos para formatear los números en español:

  • Separar los decimales con coma
  • Separar las unidades de millar con un punto.
  • Ajustar a 2 decimales

[php]
$numero = 2347980.475;
echo number_format($numero, 2, “,”, “.”);
// la función devuelve el valor: 2.347.980,48
[/php]

Esta función la podemos utilizar para devolver un importe en Euros (€). En la base de datos MySQL podemos definir un campo para almacenar importe en euros con el formato DECIMAL (19,4) y para devolver un importe en Euros desde un objeto que procese esa tabla pondríamos:

[php]
/**
* Return price
* @param int $p_format (0 = Decimal Vale, 1= Format with €)
* @return decimal(19,4)
*/
function get_price($p_format = 0){
    if ($p_format == 0){
    return $this->price;
    }elseif ($p_format == 1){
        return number_format($this->price, 2, “,”, “.”).” €”; // € = €
    }
}
[/php]

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

PHP: Listar el contenido de una carpeta

Lista el contenido de un carpeta o directorio con función de recursividad.

[php]
/**
* @desc Añadir un nuevo Usuario
* la nomenclatura ed funciones es para simular un poco la POO
* ya que en PHP4 no se puede utilizar
*/
function listDirectory( $path = ‘.’, $level = 0 ){
// Directories to ignore when listing output.
$ignore = array( ‘.’, ‘..’ );
// Open the directory to the handle $dh
$dh = @opendir( $path );
// Loop through the directory
while( false !== ( $file = readdir( $dh ) ) ){
// Check that this file is not to be ignored
if( !in_array( $file, $ignore ) ){
// Indent spacing for better view
$spaces = str_repeat( ‘ ‘, ( $level * 5 ) );
// Show directories only
if(is_dir( “$path/$file” ) ){
// Re-call this same function but on a new directory.
// this is what makes function recursive.
echo “$spaces$file
“;
listDirectory( “$path/$file”, ($level+1) );
}
}
}
// Close the directory handle
closedir( $dh );
}
[/php]

Folder,Directory,Carpeta,Archivos,Listar

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

Generar un string aleatorio en PHP

[php]
echo “Code:”.getUniqueCode();
function getUniqueCode($length = “12”){
$code = md5(uniqid(rand(), true));
if ($length != “”) return substr($code, 0, $length);
else return $code;
}
[/php]

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

Obtener el tamaño de una imagen en PHP

Es conocida la función PHP para obtener las dimensiones de una imagen:

[PHP]
$image = getimagesize($img_url);
[/PHP]

Sin embargo en algunos servidores se produce el siguiente error al utilizar esta función: URL file-access is disabled. Error que también suele darse en la función file_get_content().

Esto es debido a que las aplicaciones como WordPres, Joomla, etc, No utilizan las directivas allow_url_fopen y allow_url_include por motivos de seguridad. Una opción es activar estas directivas desde el fichero PHP.ini con las siguientes instrucciones:

[PHP]
allow_url_fopen = On
allow_url_include = On
[/PHP]

Y también existe una alternativa para obtener el tamaño de la imagen con estas directivas desactivadas y es utilizar la librería CURL de PHP. Veamos un ejemplo:

[PHP]
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $first_img);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
$new_image = ImageCreateFromString($contents);
$imgtmp = WP_CONTENT_DIR . “/uploads/temp.jpg”;
imagejpeg($new_image, $imgtmp,100);
$size = getimagesize($imgtmp);
[/PHP]

Para consultar más ejemplos de utilización de CURL visitar este interesante artículo.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…

Inserta un ejemplo de código PHP en MediaWiki

Se utilizan estos tags:

< source lang=”php” >
< /source >

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Cargando…