Foros del Web » Programando para Internet » PHP »

no subir segun que extension

Estas en el tema de no subir segun que extension en el foro de PHP en Foros del Web. Hola a todos, he colocado este codigo y me funciona bien, pero necesito que no se puedan subir segun que archivos, solo quiero que se ...
  #1 (permalink)  
Antiguo 28/07/2009, 04:13
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
no subir segun que extension

Hola a todos, he colocado este codigo y me funciona bien, pero necesito que no se puedan subir segun que archivos, solo quiero que se puedan subir JPG, BMP, y GIF
Código PHP:
srand (time());
//generamos un número aleatorio
$mismo rand(1,100000000000);
$pdfnumero rand(1,100000000000);
$mismopdf $pdfnumero '.pdf';


$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "insertar")) {
  
$insertSQL sprintf("INSERT INTO productos (nombre, categoria, descripcion,  imagen, pdf, usuario) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['Nombre'], "text"),
                       
                       
GetSQLValueString($_POST['categoria'], "text"),
                       
GetSQLValueString($_POST['descripcion'], "text"),
                       
                       
GetSQLValueString("../archivos/".$mismo.$_FILES['imagen'] ['name'], "text"),
                       
GetSQLValueString("../pdf/" $_FILES['pdf'] .$mismopdf"text"),
                       
GetSQLValueString($_POST['usuario'], "text"));
                       
$copy copy($_FILES['imagen']['tmp_name'], "../archivos/" $_FILES['imagen'] .$mismo );
$copy copy($_FILES['pdf']['tmp_name'], "pdf/" $_FILES['pdf'] .$mismopdf); 
Que tendría que añadir a este codigo para que solo se pudieran subir esos archivos?
Un saludo
  #2 (permalink)  
Antiguo 28/07/2009, 07:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: no subir segun que extension

tendria que ser un if no mas que pregunte por las extension

algo asi como

if (substr($archivos,strlen($archivo)-4,4) == ".gif" or substr($archivos,strlen($archivo)-4,4) == ".jpg")
{
// aqui Ejecutas el codigo siempre y cuando sea de las extensiones que tu kieres.
}


ajusta el If a tu codigo y dinos como te fue.

saludos.

PAtux
__________________
No estoy LOCO, solo es que tengo una Realidad Distinta al de los demas :P
  #3 (permalink)  
Antiguo 29/07/2009, 05:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: no subir segun que extension

Cita:
Iniciado por PATUX Ver Mensaje
tendria que ser un if no mas que pregunte por las extension

algo asi como

if (substr($archivos,strlen($archivo)-4,4) == ".gif" or substr($archivos,strlen($archivo)-4,4) == ".jpg")
{
// aqui Ejecutas el codigo siempre y cuando sea de las extensiones que tu kieres.
}


ajusta el If a tu codigo y dinos como te fue.

saludos.

PAtux
Pues no me funcina.
Una consulta, por que pones $archivo, y me explico un poco mas a ver si me podeis ayudar.
cuando subo el archivo genero un numero aleatorio que se le añade antes del nombre original de la imagen. Osea que si la imagen original que el usuario pone se llama "miimagen.jpg" el nombre que me inserta en la BD es 123456789miimagen.jpg
Código PHP:
GetSQLValueString("../archivos/".$mismo.$_FILES['imagen'] ['name'], "text"), 
La variable $mismo + el nombre original es lo que va a insertar en la BD.
Tambien quiero que me imprima una alerta y ya puestos que me quite los espacios en blanco.
Un saludo y gracias
  #4 (permalink)  
Antiguo 29/07/2009, 10:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no subir segun que extension

Puedes hacerlo de esta forma antes de todo el codigo
Código PHP:
Ver original
  1. if($_FILES["imagen"]["type"] != "image/pjpeg"
  2.   && $_FILES["imagen"]["type"] != "image/jpeg"
  3.   && $_FILES["imagen"]["type"] != "image/x-png"
  4.   && $_FILES["imagen"]["type"] != "image/png"
  5.   && $_FILES["imagen"]["type"] != "image/gif" ){
  6.   //aqui va el codigo sino es un jpg por ejemplo
  7.   header("Location: index.php");
  8. }
  9.  
  10. Bueno ahi esta declarado el de png pero haz prueba añadiendo en diferentes navegadores como $_FILE["imagen"]["type"] trae la informacion de un bmp
  #5 (permalink)  
Antiguo 29/07/2009, 10:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: no subir segun que extension

Cita:
Iniciado por abimaelrc Ver Mensaje
Puedes hacerlo de esta forma antes de todo el codigo
Código PHP:
Ver original
  1. if($_FILES["imagen"]["type"] != "image/pjpeg"
  2.   && $_FILES["imagen"]["type"] != "image/jpeg"
  3.   && $_FILES["imagen"]["type"] != "image/x-png"
  4.   && $_FILES["imagen"]["type"] != "image/png"
  5.   && $_FILES["imagen"]["type"] != "image/gif" ){
  6.   //aqui va el codigo sino es un jpg por ejemplo
  7.   header("Location: index.php");
  8. }
  9.  
  10. Bueno ahi esta declarado el de png pero haz prueba añadiendo en diferentes navegadores como $_FILE["imagen"]["type"] trae la informacion de un bmp
Me tira al index directamente te pego el codigo tal como lo he colocado
Código PHP:
if($_FILES["imagen"]["type"] != "image/pjpeg" 
  
&& $_FILES["imagen"]["type"] != "image/jpeg" 
  
&& $_FILES["imagen"]["type"] != "image/x-png"
  
&& $_FILES["imagen"]["type"] != "image/png" 
  
&& $_FILES["imagen"]["type"] != "image/gif" ){
  
srand (time());
//generamos un número aleatorio
$mismo rand(1,100000000000); 
$pdfnumero rand(1,100000000000);
$mismopdf $pdfnumero '.pdf';


$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}



if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "insertar")) {
  
$insertSQL sprintf("INSERT INTO productos (nombre, categoria, descripcion,  imagen, pdf, usuario, val_vendedor) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['Nombre'], "text"),
                       
                       
GetSQLValueString($_POST['categoria'], "text"),
                       
GetSQLValueString($_POST['descripcion'], "text"),
                       
                       
GetSQLValueString("../archivos/".$mismo.$_FILES['imagen'] ['name'], "text"),
                       
GetSQLValueString("../pdf/" $_FILES['pdf'] .$mismopdf"text"),
                       
GetSQLValueString($_POST['val_vendedor'], "text"),
                       
GetSQLValueString($_POST['usuario'], "text"));
                       
$copy copy($_FILES['imagen']['tmp_name'], "../archivos/" $_FILES['imagen'] .$mismo );
$copy copy($_FILES['pdf']['tmp_name'], "pdf/" $_FILES['pdf'] .$mismopdf);

  
mysql_select_db($database_compramos$compramos);
  
$Result1 mysql_query($insertSQL$compramos) or die(mysql_error());

  
$insertGoTo "usuario.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

header("Location: index.php");

  #6 (permalink)  
Antiguo 29/07/2009, 10:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no subir segun que extension

Ese if es si no es un archivo jpg, png o gif. En otras palabras arriba debes colocarlo asi
Código PHP:
Ver original
  1. if($_FILES["imagen"]["type"] != "image/pjpeg"  
  2.   && $_FILES["imagen"]["type"] != "image/jpeg"  
  3.   && $_FILES["imagen"]["type"] != "image/x-png"
  4.   && $_FILES["imagen"]["type"] != "image/png"  
  5.   && $_FILES["imagen"]["type"] != "image/gif" ){
  6.   header("Location: index.php");
  7.   die();
  8. }
Si se cumple una de los que he mencionado continua el codigo, sino te redirecciona al index.php
  #7 (permalink)  
Antiguo 29/07/2009, 10:34
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 19 años
Puntos: 0
Respuesta: no subir segun que extension

Que no en el codigo deberias usa Or y no And?
Porque solo terminaria el script si el mimetype de imagen fuera todos los tipos listados...

Editado
Hagan caso omiso a este post xD
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #8 (permalink)  
Antiguo 29/07/2009, 10:38
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 19 años
Puntos: 0
Respuesta: no subir segun que extension

Tambien podria ser

Código:
if($_FILES["imagen"]["type"] == "image/pjpeg"  

  || $_FILES["imagen"]["type"] == "image/jpeg"  

  || $_FILES["imagen"]["type"] == "image/x-png"

  || $_FILES["imagen"]["type"] == "image/png"  

  || $_FILES["imagen"]["type"] == "image/gif" ){
//subes la imagen
}else{
echo "error blablabla tipo de imagen debe ser solo blablabla"
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #9 (permalink)  
Antiguo 29/07/2009, 11:52
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: no subir segun que extension

ok ya funciona. Muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:52.