restriccion de arvhivos

Iniciado por jalbtercero, 6 Marzo 2016, 17:27 PM

0 Miembros y 1 Visitante están viendo este tema.

jalbtercero

tengo este codigo en el que se supones que solo se puede subir rar zip odt y pdf. Pero siempre me da error de que el tamaño es demasiado grande o no esta permitido y solo subo un odt de 16kb

Código (php) [Seleccionar]

<?php
if(isset($_POST['boton'])) {
      if (((
$_FILES["archivo-a-subir"]["type"] == "file/odt")
      || (
$_FILES["archivo-a-subir"]["type"] == "file/pdf")
      || (
$_FILES["archivo-a-subir"]["type"] == "file/rar")
      || (
$_FILES["archivo-a-subir"]["type"] == "file/zip"))
      && (
$_FILES["archivo-a-subir"]["size"] < 250000000))
 {

$target_path "subidas/";
$target_path $target_path basename$_FILES['archivo-a-subir']['name']);
if(move_uploaded_file($_FILES['archivo-a-subir']['tmp_name'], $target_path))
{
                require(
"connect_db.php");
                
session_start();
                
$nombre=$_SESSION["usuario"];
                
$desc=$_POST['desc'];
                
$direccion='subidas/'.basename$_FILES['archivo-a-subir']['name']);
                
$pass=rand(0,1000000000);
                
mysql_query("INSERT INTO archivos VALUES('$nombre','$desc','$direccion','$pass')");
                
mysql_close($link);
echo "El archivo "basename$_FILES['archivo-a-subir']['name'])." ha sido subido exitosamente!";
}
else
{
echo "Hubo un error al subir tu archivo! Por favor intenta de nuevo.";
}





} else {
echo "El tamaño del archivo no esta permitido o el archivo esta prohibido";
}





 


}


engel lex

solo para ayudarte a esclarecer el hecho que está fallando, agrega al else

Código (php) [Seleccionar]
echo "<pre>";
var_dump($_FILES);
echo "</pre>";
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

#!drvy

Los Media Types que tienes son incorrectos.

Código (php) [Seleccionar]
<?php
if(isset($_POST['boton'])) {
      if (((
$_FILES["archivo-a-subir"]["type"] == "application/odt")
      || (
$_FILES["archivo-a-subir"]["type"] == "application/pdf")
      || (
$_FILES["archivo-a-subir"]["type"] == "application/x-rar-compressed")
      || (
$_FILES["archivo-a-subir"]["type"] == "application/zip"))
      && (
$_FILES["archivo-a-subir"]["size"] < 250000000))
 {


https://en.wikipedia.org/wiki/Media_type
http://www.freeformatter.com/mime-types-list.html

Para ver el media type de un archivo, simplemente imprimelo antes de tomar cualquier acción.

Código (php) [Seleccionar]
<?php
if(isset($_FILES['archivo-a-subir']['type'])){
    
print_r($_FILES['archivo-a-subir']['type']);
    die();
}


Saludos

jalbtercero

#3
Cita de: engel lex en  6 Marzo 2016, 17:39 PM
solo para ayudarte a esclarecer el hecho que está fallando, agrega al else

Código (php) [Seleccionar]
echo "<pre>";
var_dump($_FILES);
echo "</pre>";



Gracias me ayudo mucho

por cierto alguin subio esto a mi pagina:

Código (php) [Seleccionar]


<?php

/**
 * @file
 * Handles incoming requests to fire off regularly-scheduled tasks (cron jobs).
 */

/**
 * Root directory of Drupal installation.
 */
define('DRUPAL_ROOT'getcwd());

include_once 
DRUPAL_ROOT '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

if (!isset(
$_GET['cron_key']) || variable_get('cron_key''drupal') != $_GET['cron_key']) {
  
watchdog('cron''Cron could not run because an invalid key was used.', array(), WATCHDOG_NOTICE);
  
drupal_access_denied();
}
elseif (
variable_get('maintenance_mode'0)) {
  
watchdog('cron''Cron could not run because the site is in maintenance mode.', array(), WATCHDOG_NOTICE);
  
drupal_access_denied();
}
else {
  
drupal_cron_run();
}


no,lo entiendo del todo

MinusFour

#4
No puedes comprobar si un archivo es realmente una imagen/pdf/oct, etc en base a ese mime type, porque cualquiera puede enviar un Content-Type falso.

Citar$_FILES['userfile']['type']
The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted.