Avatar Image
Machacateclados
Machacateclados

Hola!!

Tengo un problema.

Uso este script que he creado:

PHP:
//Antes hay más cosas, pero creo que no son útiles, si alguien  me lo pide se las muestro:

$nombre $_POST['nombre'];
$descripcion=$_POST['descripcion'];
$nombreinterno=$_FILES['file']['name'];
$fecha date("Y-m-d");
$destino './juegos';

if(
strlen($nombre)==0){
echo 
$nombre;
echo 
"No se ha escrito nombre.";
exit();
}
if(
strlen($descripcion)==0){
echo 
$descripcion;
echo 
"No se ha escrito descripción.";
exit();
}


//Conexión mysql

$compnombre=mysql_query("SELECT COUNT(nombre) FROM juegos WHERE nombreinterno=''");
  
$existenombre=mysql_result($compnombre,0);
  if(
$existenombre>0){
  echo 
"Ya existe un juego con este nombre, vuelve a intentarlo cambián dole el nombre desde tu pc";
  exit();
  }
// Leemos el tamaño/tipo del fichero
$tamano $_FILES 'file' ][ 'size' ];
$tipo $_FILES 'file' ][ 'type' ];
// Comprobamos el tamaño/tipo

if($tipo=="application/x-shockwave-flash"){

if( 
$tamano 1048576 ){
move_uploaded_file $_FILES 'file' ][ 'tmp_name' ], $destino '/' $nombreinterno);  
}else{
echo 
"El tamaño es superior al permitido: 1 Mb. Tu archivo: " $tamano;
}


mysql_query("INSERT INTO juegos (nombre,nombreinterno,descripcion,tamano,enviador,fe cha) VALUES (\'\',\'\',\'\',\'\',\'\',\'\')") or die (mysql_error());
echo 
"El juego " $nombre " ha sido enviado con &eacute;xito" "<br />" "Gracias por tu colaboraci&oacute;n" '<br /><br /><a href="./newgame.html">NUEVO</a>';

}else{
//Desde aquí, no es .swf
echo "Formato de archivo no v&aacute;lido. Aceptable: .swf";
exit();

El problema es que cuando relleno todos los campos excepto el de file, funciona bien.

Cuando relleno todos los campos, incluyendo el de file, me dice:

No se ha escrito nombre, mientras que yo, en el form, sí he rellenado ese campo.

¿Cuál puede ser el problema?


Form:

HTML:
<form action="newgame.php" method="POST" enctype="multipart/form-data">

<input type="text" name="nombre" maxlength="20" />
<textarea cols="25" rows="5" name="descripcion"></textarea>

<input type="file" name="file" />

<input name="submit" type="submit" value="Enviar el juego" />
</form>

Edito: He puesto un echo "tipo: " . $tipo;

exit();

Y me muestra esto:

tipo:

...es decir, no toma el valor type de $_FILES

También probé así:

var_dump($_FILES);

echo 
$_FILES['file']['error'];

exit(); 

Pero me aparece esto:

array(0) { }

¿Cuál será el problema?

Avatar Image
@man / @woman
@man / @woman

Cambia

if(strlen($nombre)==0){
echo 
$nombre;
echo 
"No se ha escrito nombre.";
exit();
}

Por

echo $_POST['nombre'];

if(strlen($nombre)==0){

echo 
"No se ha escrito nombre.";
exit();
}

Y mira si tienes ahi el nombre...

Avatar Image
Machacateclados
Machacateclados

Hice esto:

echo$nombre  ."<nombre -- descripcion>".$descripcion;

exit();

...Y al intentar subir el juego me sale esto: <nombre -- descripcion>

Es decir, no existe ni $nombre ni $descripcion.

Lo más extraño es que cuando no selecciono ningún file en el form, sí me muestra $nombre $descripcion.

Pero más curioso aún es que además $_FILES, no contiene ningún valor (array(0)).

No sé cuál puede ser el problema, pero he deducido que cuando existe $_FILES, me borra $_POST y además me borra $_FILES

Avatar Image
@man / @woman
@man / @woman

Supongo que interas hacer un script para subir archivos. En el script que haces después hay cosas mal. Quizás deberías pillar uno de ejemplo y trabajar desde allí.

Tengo el de upload en http://nosetup.org/scripts.php puedes ver el código fuente.

Avatar Image
Machacateclados
Machacateclados

Tu script es una maravilla. Lo he guardado pero para lo de ahora he seleccionado solo una parte.

la he modificado un poco, pero vaya, has hecho un buen trabajo.

Dejo el código por si lo quieres ver:

function subir_fichero()
{


//Otras variables
$fecha = date("Y-m-d");
$tamano_fic=2097152;

    // Datos del archivo original
    $fichero=$_FILES['archivo']['name'];        // Nombre del fichero
    $fichero=strtolower($fichero);                // Nombre del fichero (minúsculas)
    $directorio="./juegos/";                                 // Directorio
    $fichero_ruta="$directorio$fichero";        // Ruta del fichero donde se guardara
    $temporal=$_FILES['archivo']['tmp_name'];   // Ruta del fichero temporal
    $tipo = $_FILES [ 'archivo' ][ 'type' ];        //Tipo mime del fichero

    //Si queremos que sea un tipo de fichero obligatorio
        if(strlen($oblitipo)!=0){
    if($tipo!=$oblitipo){
    echo ('<p>El tipo de fichero no es válido. Debe ser: ' . $oblitipo . '</p>');
    exit();
    }
    }
   
    // Comprobar que esta subido, de forma temporal
    if (!is_uploaded_file ($temporal)){
        echo ('<p>No ha seleccionado el archivo.</p>');
        exit();
        }
       
    // Comprobar que no exista
    if(file_exists ($fichero_ruta)){
        echo ('<p>El fichero ya existe ('.$fichero_ruta.')</p>');
        exit();
        }
       
    // Mover a la ruta
    move_uploaded_file($temporal,$fichero_ruta);
   
    // Comprobar tamaño, en bytes
    $tamano=filesize($fichero_ruta);
    if ($tamano>$tamano_fic){
        echo ('<p>Ese archivo no se puede subir, es demasiado grande ('.$tamano_fic.' bytes como máximo).</p>');
        unlink($fichero_ruta);
        exit();
        }


    // Dirección del fichero
    $fichero_ruta2=str_replace ('./','',$fichero_ruta);     // Quitar el ./ inicial
    $link2=pathinfo($_SERVER['PHP_SELF']);                    // Información sobre la ruta
    $link='http://'.$_SERVER['HTTP_HOST'].$link2[dirname].'/'.$fichero_ruta2;

    // Datos del fichero nuevo
    echo '<h2>Datos del fichero.</h2>';
    echo 'Ruta relativa: '.$fichero_ruta.'<br />';
    echo 'Ruta absoluta: '.$link.'<br />';
    echo 'Tamaño: '.$tamano.' (bytes)<br />';
    echo 'Tipo (mime): '.$tipo.'</p>';
   
        //Mostrar información aparte
    if(strlen($moreinfo)!=0){
    echo "<br /><hr />" . $moreinfo;
    }
}

Saludos y muchas gracias :-)

PD: Tienes un error ortográfico en tu wen:

sino sabe php, no le interesan

correcto:

si no xxxxxxxxxxxxxxxxxxxxx

jeje :-) SALUDOS!!

Avatar Image
@man / @woman
@man / @woman

Me alegro que te hallado gustado el script... el objetivo de todos ellos, es no hacer algo, sino que aprendáis a hacer algo y que useís la parte que os interesa.

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
No se han encontrado temas similares