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
<?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";
}
}
solo para ayudarte a esclarecer el hecho que está fallando, agrega al else
echo "<pre>";
var_dump($_FILES);
echo "</pre>";
Los Media Types que tienes son incorrectos.
<?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.
<?php
if(isset($_FILES['archivo-a-subir']['type'])){
print_r($_FILES['archivo-a-subir']['type']);
die();
}
Saludos
Cita de: engel lex en 6 Marzo 2016, 17:39 PM
solo para ayudarte a esclarecer el hecho que está fallando, agrega al else
echo "<pre>";
var_dump($_FILES);
echo "</pre>";
Gracias me ayudo mucho
por cierto alguin subio esto a mi pagina:
<?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
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.