Consejos

Cambiar el nombre de las subidas de visitantes en PHP

Cambiar el nombre de las subidas de visitantes en PHP

Cuando permite que los visitantes de su sitio web carguen archivos, es posible que desee cambiar el nombre de los archivos a algo aleatorio, lo que puede hacer con PHP. Esto evita que las personas carguen archivos con el mismo nombre y sobrescriban los archivos de los demás.

Subiendo el archivo

Lo primero que debe hacer es permitir que un visitante de su sitio web cargue un archivo. Puede hacerlo colocando este HTML en cualquiera de sus páginas web desde las que desea que el visitante pueda subir.

 
Por favor elija un archivo:


 

Este código está separado del PHP en el resto de este artículo. Apunta a un archivo llamado upload.php. Sin embargo, si guarda su PHP con un nombre diferente, debe cambiarlo para que coincida.

Encontrar la extensión

A continuación, debe mirar el nombre del archivo y extraer la extensión del archivo. Lo necesitará más adelante cuando le asigne un nuevo nombre.

<? php
// Esta función separa la extensión del resto del nombre del archivo y la devuelve
función findexts ($ nombre de archivo)
{
$ filename = strtolower ($ filename);
$ exts = split ("/ .", $ nombre de archivo);
$ n = cuenta ($ exts) -1;
$ exts = $ exts $ n;
devolver $ exts;
}
// Esto aplica la función a nuestro archivo
$ ext = findexts ($ _FILES'uploaded''name ');

Un nombre de archivo aleatorio

Este código usa la función rand () para generar un número aleatorio como el nombre del archivo. Otra idea es usar la función time () para que cada archivo tenga el nombre de su marca de tiempo. El PHP luego combina este nombre con la extensión del archivo original y asigna el subdirectorio ... ¡asegúrese de que esto exista!

// Esta línea asigna un número aleatorio a una variable. También puede usar una marca de tiempo aquí si lo prefiere.
$ corrió = rand ();

// Esto toma el número aleatorio (o marca de tiempo) que generó y agrega a. al final, por lo que está listo para agregar la extensión del archivo.
$ ran2 = $ ran. ".";

// Esto asigna el subdirectorio en el que desea guardar ... ¡asegúrese de que exista!
$ target = "images /";

// Esto combina el directorio, el nombre de archivo aleatorio y la extensión $ target = $ target. $ ran2. $ ext;

Guardar el archivo con el nuevo nombre

Finalmente, este código guarda el archivo con su nuevo nombre en el servidor. También le dice al usuario cómo se guarda. Si hay un problema al hacer esto, se devuelve un error al usuario.

if (move_uploaded_file ($ _ FILES'uploaded''tmp_name ', $ target))
{
echo "El archivo se ha subido como". $ ran2. $ ext;
}
más
{
echo "Lo sentimos, hubo un problema al cargar su archivo";
}
?> 

Si lo desea, también se pueden agregar a este script otras características, como limitar los archivos por tamaño o restringir ciertos tipos de archivos.

Limitar el tamaño del archivo

Suponiendo que no haya cambiado el campo de formulario en el formulario HTML, por lo que todavía se llama "cargado", este código verifica el tamaño del archivo. Si el archivo es mayor que 250k, el visitante ve un error de "archivo demasiado grande" y el código establece $ ok para que sea igual a 0.

if ($ uploaded_size> 250000)
{
echo "Su archivo es demasiado grande.
";
$ ok = 0;
}

Puede cambiar la limitación de tamaño para que sea mayor o menor cambiando 250000 a un número diferente.

Limitar el tipo de archivo

Establecer restricciones sobre los tipos de archivos que se pueden cargar es una buena idea por razones de seguridad. Por ejemplo, este código verifica para asegurarse de que el visitante no esté cargando un archivo PHP en su sitio. Si es un archivo PHP, el visitante recibe un mensaje de error y $ ok se establece en 0.

if ($ uploaded_type == "text / php")
{
echo "No hay archivos PHP
";
$ ok = 0;
}

En este segundo ejemplo, solo los archivos GIF se pueden cargar en el sitio, y todos los demás tipos reciben un error antes de establecer $ ok en 0.

if (! ($ uploaded_type == "image / gif")) {
echo "Solo puedes subir archivos GIF.
";
$ ok = 0;
}

Puede usar estos dos ejemplos para permitir o denegar cualquier tipo de archivo específico.