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

lunes, 13 de febrero de 2023

Redimensionar una imagen cargada en un form con PHP

 


Usa esta función:

function resize($img, $path, $width, $height)

{

    list($width_orig, $height_orig) = getimagesize($img);

    $ratio_orig = $width_orig / $height_orig;


    if ($width / $height > $ratio_orig) {

        $width = $height * $ratio_orig;

    } else {

        $height = $width / $ratio_orig;

    }


    $image_p = imagecreatetruecolor($width, $height);

    $image = imagecreatefromjpeg($img);

    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

    imagejpeg($image_p, $path, 70);

}


Ejemplo:

resize($tmp_archivo, $path, '500', '500');


Donde $tmp_archivo es el archivo que se encuentra en el servidor cargado desde el form y $path es la ruta junto con el nombre del archivo donde se desea la copia redimensionada.

Los dos últimos parámetros son literales que indican el tamaño del archivo redimensionado.

El código calcula la relación de aspecto de la imagen original y la mantiene al redimensionarla. Luego, crea una nueva imagen con las dimensiones especificadas y copia los datos de la imagen original en ella, reescalándolos al mismo tiempo.

miércoles, 8 de febrero de 2023

Ocultar enlace directo de un archivo con php

 


Puedes ocultar un enlace directo a un archivo almacenado en tu servidor de la siguiente manera:

Crea un archivo PHP con el siguiente código:


$file = 'ruta/al/archivo';


if (file_exists($file)) {

    header('Content-Description: File Transfer');

    header('Content-Type: application/octet-stream');

    header('Content-Disposition: attachment; filename="'.basename($file).'"');

    header('Expires: 0');

    header('Cache-Control: must-revalidate');

    header('Pragma: public');

    header('Content-Length: ' . filesize($file));

    readfile($file);

    exit;

}


Reemplaza la ruta 'ruta/al/archivo' por la ruta real al archivo que deseas descargar.


Guarda este archivo PHP con un nombre apropiado, por ejemplo, descarga.php.


Comparte el enlace al archivo PHP en lugar del enlace directo al archivo.


Al acceder a este archivo PHP, se descargará el archivo correspondiente sin que el usuario vea la ruta real al archivo en el servidor.


Si deseas crear un gestor de descargas puedes utilizar variables get para pasar un id o clave codificada que en el script sea interpretada como el nombre del archivo.


O simplemente pasar el nombre del archivo y dejar un path que solo tú conozcas.

lunes, 6 de febrero de 2023

Leer primera imagen de un video con php


leer primera imagen de un video con php


Puedes usar la biblioteca FFmpeg para extraer la primera imagen de un video con PHP. Aquí hay un ejemplo de código que muestra cómo hacerlo:



// Ubicación del video

$video_file = '/path/to/video.mp4';


// Nombre del archivo de imagen de salida

$image_file = '/path/to/image.jpg';


// Comando para extraer la primera imagen del video

$cmd = "ffmpeg -i $video_file -ss 00:00:01.000 -vframes 1 $image_file";


// Ejecutar el comando

exec($cmd);



Asegúrate de tener FFmpeg instalado en tu servidor y de tener permisos para ejecutar comandos en el sistema.

martes, 8 de noviembre de 2022

Conocer último elemento de un array en foreach PHP

 

Conocer último elemento de un array en foreach PHP

Para conocer el último elemento en un array utilizando un foreach la forma más optima sería:

foreach ($array as $key => $value) {
    echo $value['elemento_menu'];

    if ($key != count($array) - 1) {
        echo ' | ';
    }
}

Resultado:

Elemento1 | Elemento 2 | Elemento3

No se imprimiría para el último elemento el caracter | (pipe) al final

sábado, 9 de enero de 2021

Método simple para detectar si un dispositivo es móvil con PHP

 

Teléfono Móvil

function isMobile() {

    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", filter_input(INPUT_SERVER, 'HTTP_USER_AGENT'));

}


Modo de uso:


if (isMobile()) {

    // Mostrar o procesar para teléfonos

} else {

    // Realizar procesos para todo lo que no sea SmartPhone, por ejemplo un navegador Web

}

martes, 4 de agosto de 2020

Método para SELECT, INSERT, UPDATE, DELETE en PHP

Base de datos

La siguiente función de usuario permite realizar no solo un SELECT y regresar el array de los datos, sino que también permitirá realizar cualquier otra instrucción MySQL:

function consultar($sql)
{
    $link = new mysqli('[IP]', '[USER]', '[PASSWORD]', '[BASE DE DATOS]');

    if ($link->connect_errno) {
        die('Fallo al conectar a MySQL: ' . $link->connect_error);
    }

    $result = $link->query($sql);

    if (strstr($sql, 'SELECT') && $result->num_rows > 0) {
        $rows = [];

        while ($row = $result->fetch_assoc()) {
            $rows[] = $row;
        }

        return $rows;
    } elseif (strstr($sql, 'INSERT')) {
        return $link->insert_id;
    }

    return false;
}

viernes, 10 de julio de 2020

Insertar Emojis en MySQL

emoji in mysql

Si queremos insertar Emojis en MySQL posiblemente nos encontremos con el siguiente error:

Error de SQL (1366): Incorrect string value: '\xF0\x9F\x8F\x81' for column 'script' at row 1uery

Para poder permitir la inserción de emojis en nuestra base de datos MySQL debemos cambiar la Colación del campo donde vamos a insertar.

Por ejemplo si el campo de nuestro interés tiene el valor utf8_general_ci en COLLATION debemos cambiarlo por utf8mb4_unicode_ci.

Esto se puede hacer mediante un gestor de MySQL o mediante la instrucción:

ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Donde VARCHAR(255) es opcional.


De esta forma si ejecutamos la instrucción;

INSERT INTO <table_name> VALUES (' 🦕 ');

No tendrá ningún problema al guardar el Emoji

miércoles, 8 de julio de 2020

Notificaciones Pushbullet usando PHP

Pushbullet

Pushbullet puede ayudar a evitar el uso de SMS y sus respectivos costos en las notificaciones.

Esto solo sirve a nivel personal, por ejemplo para no usar la función mail() y evitar que la información importante vaya a parar a la carpeta Spam.

Función:

function pushbullet($msg)
{

    $data = json_encode(array(
        'type' => 'note',
        'title' => 'Notificación de Pago Paypal', // El título a mostrar en la notificación de app Pushbullet
        'body' => $msg,
        'device_iden' => 'IDENTIFICADOR' // Se visualiza en la versión web en Devices (https://www.pushbullet.com/#devices/[IDENTIFICADOR])
    ));

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://api.pushbullet.com/v2/pushes');
    curl_setopt($curl, CURLOPT_USERPWD, 'ACCESS_TOKEN'); // Se genera en Settings -> Account -> Create Access Token
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Content-Length: ' . strlen($data)]);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_exec($curl);
    curl_close($curl);
}


Uso:
pushbullet('Usted ha recibido un nuevo pago!!!');

martes, 17 de septiembre de 2019

Crear log en archivos PHP y recuperar la información

Crear log en archivos PHP y recuperar la información

Con este método podemos gestionar de forma fácil cualquier log en archivo que deseemos almacenar:

function saveLOG($nombre, $info) {
    $file = fopen($nombre . '_' . date('Y-m-d') . '.txt', 'a');
    fwrite($file, $info . PHP_EOL);
    fclose($file);
}

$nombre es el nombre del archivo. El método le agregaría la fecha actual y le pondría la extensión txt.

$info es la información que deseamos guardar.

Ejemplo de uso:

$info = "$dato1|$dato2|$dato3|$dato4|$dato5|$dato6";
saveLOG('noti_susc.txt', $info);

Aquí hemos separado por el carácter | (pipe) los datos que se encuentras en las variables. También podemos guardar texto literal, o cualquier otro dato tipo texto.

Para leerlo simplemente usamos la función de php fopen:

$f = fopen('noti_susc.txt_2019-09-17.txt', 'r'); // Aquí colocamos el nombre del archivo en el cual guardamos el log o cualquier otro log legible.

while ($l = fgets($f)) {
    if (feof($f)) { // Truco no muy bonito pero efectivo, que al llegar al fin de archivo salga del bucle
        break;
    }

    $aux = explode('|', $l); // Guardamos los datos separados por el carácter | y los separamos
    // Uso de los datos separados
    echo $aux[0] . $aux[1] . $aux[2] . $aux[3] . $aux[4] . $aux[5] . $aux[6]; // Etc. cantidad de variables
}

lunes, 17 de junio de 2019

Parsear variables de una cadena get con PHP



Para obtener la variables de una cadena get de forma simple se usa el método parse_str() de php.

Ejemplo:

$cadena = "id=1&ver=1.0&os=ios&name=verizon";
parse_str($cadena);

Uso de variables:
$id, $ver, $os, $name

viernes, 5 de abril de 2019

Métodos sumar y restar fechas en PHP



Método para sumar días a una fecha:

function sumar_fecha($fecha, $dias) {
    $nuevafecha = strtotime("+$dias day", strtotime($fecha));
    $nuevafecha = date('Y-m-d', $nuevafecha);
    return $nuevafecha;
}

Uso:
sumar_fecha("2019-04-05", 7);

Resultado:
2019-04-12


Método para conocer cuantos días restan entre dos fechas:

function restar_fecha($start, $end) {
    $start_ts = strtotime($start);
    $end_ts = strtotime($end);
    $diff = $end_ts - $start_ts;
    return round($diff / 86400);
}

Uso:
restar_fecha("2019-04-01", "2019-04-05");

Resultado:
4

viernes, 11 de enero de 2019

API para obtener sistema operativo, navegador y versión del usuario en PHP


Request:
https://uploadbeta.com/api/parse-user-agent/?s=nUser-Agent:[USER AGENT]

Response:
{"platform":"Windows","browser":"Chrome","version":"71.0.3578.98"}



Método para retornar valores en array:

function infoUA($ua) {
    $url = 'https://uploadbeta.com/api/parse-user-agent/?s=nUser-Agent:' . urlencode($ua);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    $array = json_decode($response, 1);
    return array($array['platform'], $array['browser'], $array['version']);
}

API para obtener datos sobre el país según la IP en PHP


Request para recibir response en JSON:
http://api.ipaddress.com/iptocountry?format=json

Response:
{"ipaddress":"100.110.160.99","continent_code":"SA","continent_name":"South America","country_code":"AR","country_name":"Argentina"}


Request para recibir response en XML:
http://api.ipaddress.com/iptocountry?format=xml

Response
<?xml version="1.0"?><location><ipaddress>100.110.160.99</ipaddress><continent_code>SA</continent_code><continent_name>South America</continent_name><country_code>AR</country_code><country_name>Argentina</country_name></location>



Método PHP para obtener código del país y nombre del país:

function infoIP($ip) {
    $url = 'http://api.ipaddress.com/iptocountry?format=json&ip=' . $ip;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    $array = json_decode($response, 1);
    return array(strtolower($array['country_code']), $array['country_name']);
}

Método para retornar resultados en array MySQL en PHP


function consultar($sql) {
    $link = new mysqli('[IP]', '[USER]', '[PASSWORD]', '[BASE DE DATOS]');

    if ($link->connect_errno) {
        die('Fallo al conectar a MySQL: ' . $link->connect_error);
    }

    $result = $link->query($sql);

    if ($result->num_rows > 0) {
        $rows = array();

        while ($row = $result->fetch_assoc()) {
            $rows[] = $row;
        }

        return $rows;
    } else {
        return FALSE;
    }
}


USO:

$sql = "SELECT id FROM tabla";
$array = consultar($sql);

foreach ($array as $key => $value) {
    echo $value['id'];
}

Comprimir código HTML con PHP


Para comprimir se coloca el siguiente código PHP al inicio del documento:

ob_start('ob_gzhandler');
ob_gzhandler(ob_start('compress_page'), 5);

function compress_page($buffer) {
    $search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s');
    $replace = array('>', '<', '\\1');
    return preg_replace($search, $replace, $buffer);
}

Método para crear urls amigables en PHP


function urls_amigables($url)
{
    // Tranformamos todo a minúsculas
    $url = strtolower($url);

    // Reemplazamos caracteres especiales latinos
    $find = array('á', 'é', 'í', 'ó', 'ú', 'ñ', 'á', 'é', 'í', 'ó', 'ú');
    $repl = array('a', 'e', 'i', 'o', 'u', 'n', 'a', 'e', 'i', 'o', 'u');
    $url = str_replace($find, $repl, $url);

    // Añadimos los guiones
    $find = array(' ', '&', '\r\n', '\n', '+');
    $url = str_replace($find, '-', $url);

    // Eliminamos y reemplazamos los demás caracteres especiales
    $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
    $repl = array('', '-', '');

    return preg_replace($find, $repl, $url);
}

Método para ofuscar texto en PHP


function obfuscate($text) {
    $length = strlen($text);
    $scrambled = '';

    for ($i = 0; $i < $length; ++$i) {
        $scrambled .= '&#' . ord(substr($text, $i, 1)) . ';';
    }

    return $scrambled;
}

Obtener IP real de un usuario aunque este en un Proxy con PHP


Para obtener la IP real se utiliza:

$ip = filter_input(INPUT_SERVER, 'HTTP_X_FORWARDED_FOR') ?? filter_input(INPUT_SERVER, 'REMOTE_ADDR');

Guardar archivo y mini preview de una imagen en PHP


1. Leer variables del formulario:
$vars = get_defined_vars();

2. Obtener todos los campos FILE:
extract($vars['_FILES']);

3. Definir variables con el input a trabajar:
$file_name = $PREVIEW['name'];
$file_tmp_name = $PREVIEW['tmp_name'];
$file_error = $PREVIEW['error'];

4. Cargar archivo al servidor:
$path = '../game/image/' . $ID . 'b.jpg';
move_uploaded_file($file_tmp_name, $path);

5. Guardar mini preview:
list($width, $height) = getimagesize($path);
$new_width = 233;
$new_height = 146;
$prev = imagecreatetruecolor($new_width, $new_height);
$origen = imagecreatefromjpeg($path);
imagecopyresampled($prev, $origen, 0, 0, 0, 0, $new_width, $new_height, $new_width, $new_height);
imagejpeg($prev, '../game/thumbnail/' . $ID . 'm.jpg', 70);