Foros del Web » Programando para Internet » PHP »

Saber quien subió el archivo y guardar el user en BD

Estas en el tema de Saber quien subió el archivo y guardar el user en BD en el foro de PHP en Foros del Web. hola! Ya hace tiempo (días) que estoy tratando de hacer que funcione un upload que extraiga la sesion y que la guarde en un base ...
  #1 (permalink)  
Antiguo 21/07/2009, 13:37
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Exclamación Saber quien subió el archivo y guardar el user en BD

hola!

Ya hace tiempo (días) que estoy tratando de hacer que funcione un upload que extraiga la sesion y que la guarde en un base de datos junto con los datos del archivo subido. Por el momento no me interesa fijar la extensión del archivo solo quiero pasar esta traba. ¿Cómo puedo hacer? El sistema de autentificación es sacado de una web "SimpleAuth" la última version 1.3. Para hacer referencia al usuario e imprimirlo hay que hacer esto"
Código HTML:
<? include_once("config.php");

// Check user logged in already:
checkLoggedIn("yes");
print("Welcome to the members page <b>".$_SESSION["login"]."</b><br>\n");
print("Your password is: <b>".$_SESSION["password"]."</b><br>\n");
print("<a href=\"logout.php"."\">Logout</a>"); ?> 
El config.php tiene lo siguiente
La conexión a la base de datos.
Un include_once("../functions.php") que tiene las funciones como la conexion, la intruduccion de nuevos usuarios con usuario y contraseña y chekea si esta conectado cone este código
Código HTML:
function checkLoggedIn($status){
    /*
    Function to check whether a user is logged in or not:
    This is a function that checks if a user is already logged
    in or not, depending on the value of $status which is passed
    in as an argument.

    If $status is 'yes', we check if the user is already logged in;
    If $status is 'no', we check if the user is NOT already logged in.
    */
    switch($status){
        // if yes, check user is logged in:
        // ie for actions where, yes, user must be logged in(!)
        case "yes":
            if(!isset($_SESSION["loggedIn"])){
                header("Location: ../login.php");
                exit;
            }
            break;

        // if no, check NOT logged in:
        // ie for actions where user can't already be logged in
        // (ie for joining up or logging in)
        case "no":
            /*
                The '===' operator differs slightly from the '=='
                equality operator.

                $a === $b if and only if $a is equal to $b AND
                $a is the same variable type as $b.

                for example, if:

                $a="2";    <-- $a is a string here
                $b=2;    <-- $b is an integer here

                then this test returns false:
                if($a===$b)

                whereas this test returns true:
                if($a==$b)
            */
            if(isset($_SESSION["loggedIn"]) && $_SESSION["loggedIn"] === true ){
                header("Location: ../members.php");
            }
            break;
    }
    // if got here, all ok, return true:
    return true;
} // end func checkLoggedIn($status)
Bueno, y el código para subir el archivo es el siguiente, pero no logro capturar cual es el usuario y guardarlo en la tabla imagenes junto con los otros datos ingresados.
Código HTML:
<? include_once ("config.php");
checkLoggedIn("yes"); ?>
<html>

<head>
  <title>Inet2phone v0.1 beta</title>
</head>

<body>
    <?php

  if ($_FILES['userfile']['name'] == '') {

print "<form action=\"guardar.php\" method=\"POST\" enctype=\"multipart/form-data\">
    <b>Nombre:

    <input type=\"text\" name=\"nombre\" size=\"20\" maxlenght=\"100\"><br>

    <b>Descripción:
    <br>
    <input type=\"text\" name=\"cadenatexto\" size=\"20\" maxlength=\"100\"><br>
    <BR>

    <B>Tipo de Archivo:

       <SELECT NAME=\"archivo_tipo\">
            <OPTION VALUE='juego'>Juego
            <OPTION VALUE='ringtone'>Ringtone
            <OPTION VALUE='aplicacion'>Aplicacion
            <OPTION VALUE='imagen'>Imagen
       </SELECT><br>
    <input type='hidden' name='MAX_FILE_SIZE' value='100000'>
    <br>
    <br>
    <b>Enviar un nuevo archivo: 
    <br>
    <input name='userfile' type='file'><br>
    <br>

    <input type='submit' value='Enviar'><br>

    </form>\n";

    } else {


/*conexion*/
                     //tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = mysql_real_escape_string($_POST['cadenatexto']);
$directorio = "imagenes/"; //directorio donde se guardan los archivos


$archivo_tipo = mysql_real_escape_string($_POST['archivo_tipo']);
$nombre = mysql_real_escape_string($_POST['nombre']);
$nombre_archivo = $_FILES['userfile']['name'];
$tipo_archivo = $_FILES['userfile']['type'];
$tamano_archivo = $_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
$nombre_archivo = ereg_replace(" ", "", $nombre_archivo); //borra espacios libres en nombre de archivo


if (!empty($_FILES['userfile']['tmp_name'])){
    if (move_uploaded_file($_FILES['userfile']['tmp_name'],$directorio . $nombre_archivo)){
       echo "<big>El archivo ha sido cargado correctamente.";

$ssql_=mysql_query("SELECT * FROM contenidos WHERE login='".$_SESSION[login]."'")or die(mysql_error()); 

        $query = "INSERT INTO imagenes (id,nombre,tipo,tamano,descripcion,nombrearchivo,login)
        VALUES ('$id','$nombre','$archivo_tipo','$tamano_archivo','$cadenatexto','$nombre_archivo','$login')";
         $result = mysql_query($query)
         or die ("<BR>No pudo agregar las cosas a la base de datos"); //agrego los datos obtenidos

     echo "<br>
";
echo "<TABLE>Nombre".$nombre."";
echo "<TR>Tipo de archivo".$tipo_archivo."";
echo "<TR>Tamaño de archivo".$tamano_archivo."";
echo "<TR>Nombre de archivo".$nombre_archivo."";
echo "<tr>Nombre de Usuario".$currentuser."";

    } else {
       echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; // me da este error
    }
}


}
 ?>
<br>
</body>

</html> 
El error que me despliega es el siguiente y no se cual es mi error
Ocurrió algún error al subir el fichero. No pudo guardarse.
Prové miles de formas, investigué millones de sitios, leí la página oficial de php pero no logré nada, es más la página se me volvia blanca :S

AYUDA!
  #2 (permalink)  
Antiguo 21/07/2009, 13:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Saber quien subió el archivo y guardar el user en BD

Bueno para empezar a investigar. Primero haz esto, lo vas a colocar al principio de la pagina

Código PHP:
echo $_FILES['userfile']['error']; 
die(); 
y verifica el numero que te salga en este lugar http://www.php.net/manual/en/feature...oad.errors.php

Nos dejas saber
  #3 (permalink)  
Antiguo 21/07/2009, 13:47
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Saber quien subió el archivo y guardar el user en BD

seguramente el directorio imagenes/ no tenga los permisos requeridos, ponlos a 777 y cuéntanos :D

puedes mirar con este código si es escribible:

<?php if(!is_writeable('imagenes/')) die('no es escribible'); else die('es escribible'); ?>
  #4 (permalink)  
Antiguo 22/07/2009, 05:27
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Saber quien subió el archivo y guardar el user en BD

Estube optando por pegarme un tiro o no JAJAJAJAJA!
Habían 2 problemas:
  1. Que no EXISTIA LA CARPETA
  2. Que al no existir nunca le había dado permisos! (Ya se los agregue y me agregó la img correctamente)

Ahora, ¿Cómo hago para guardar el usuario?
abimaelrc, probé en poner el código que me dijiste pero no aprarece nada, es más me "borra" lo que viene después del cógido. ¿Qué estoy haciendo mal?
Te dejo el cógido:

Código PHP:
<? include_once ("config.php");
checkLoggedIn("yes"); ?>
<html>

<head>
  <title>Inet2phone v0.1 beta</title>
</head>

<body>
    <?php
echo $_FILES['userfile']['error']; 
die();  
  if (
$_FILES['userfile']['name'] == '') {

print 
"<form action=\"guardar.php\" method=\"POST\" enctype=\"multipart/form-data\">
    <b>Nombre:

    <input type=\"text\" name=\"nombre\" size=\"20\" maxlenght=\"100\"><br>

    <b>Descripción:
    <br>
    <input type=\"text\" name=\"cadenatexto\" size=\"20\" maxlength=\"100\"><br>
    <BR>

    <B>Tipo de Archivo:

       <SELECT NAME=\"archivo_tipo\">
            <OPTION VALUE='juego'>Juego
            <OPTION VALUE='ringtone'>Ringtone
            <OPTION VALUE='aplicacion'>Aplicacion
            <OPTION VALUE='imagen'>Imagen
       </SELECT><br>
    <input type='hidden' name='MAX_FILE_SIZE' value='100000'>
    <br>
    <br>
    <b>Enviar un nuevo archivo: 
    <br>
    <input name='userfile' type='file'><br>
    <br>

    <input type='submit' value='Enviar'><br>

    </form>\n"
;
 echo 
$_FILES['userfile']['error']; 
die();  

    } else {


/*conexion*/
                     //tomo el valor de un elemento de tipo texto del formulario
$cadenatexto mysql_real_escape_string($_POST['cadenatexto']);
$directorio "imagenes/"//directorio donde se guardan los archivos


$archivo_tipo mysql_real_escape_string($_POST['archivo_tipo']);
$nombre mysql_real_escape_string($_POST['nombre']);
$nombre_archivo $_FILES['userfile']['name'];
$tipo_archivo $_FILES['userfile']['type'];
$tamano_archivo $_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
$nombre_archivo ereg_replace(" """$nombre_archivo); //borra espacios libres en nombre de archivo


if (!empty($_FILES['userfile']['tmp_name'])){
    if (
move_uploaded_file($_FILES['userfile']['tmp_name'],$directorio $nombre_archivo)){
       echo 
"<big>El archivo ha sido cargado correctamente.";

$ssql_=mysql_query("SELECT * FROM contenidos WHERE login='".$_SESSION[login]."'")or die(mysql_error()); 

        
$query "INSERT INTO imagenes (id,nombre,tipo,tamano,descripcion,nombrearchivo,login)
        VALUES ('$id','$nombre','$archivo_tipo','$tamano_archivo','$cadenatexto','$nombre_archivo','$login')"
;
         
$result mysql_query($query)
         or die (
"<BR>No pudo agregar las cosas a la base de datos"); //agrego los datos obtenidos

     
echo "<br>
"
;
echo 
"<TABLE>Nombre".$nombre."";
echo 
"<TR>Tipo de archivo".$tipo_archivo."";
echo 
"<TR>Tamaño de archivo".$tamano_archivo."";
echo 
"<TR>Nombre de archivo".$nombre_archivo."";
echo 
"<tr>Nombre de Usuario".$currentuser."";

    } else {
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."// me da este error
    
}
}


}
?>
<br>
</body>

</html>
  #5 (permalink)  
Antiguo 22/07/2009, 07:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Saber quien subió el archivo y guardar el user en BD

No es que borra el codigo, es que se detiene en esa parte. No te aparece algún numero aunque sea 0? Pero ya dijiste que te funciona. Lo que pasa es que con eso vas a saber que error tenia y luego visitas el link que te indique para que veas el error que quiere decir. Pero ya te funciona no necesitas saber el error porque te va a salir 0
  #6 (permalink)  
Antiguo 22/07/2009, 10:06
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Saber quien subió el archivo y guardar el user en BD

MUCHAS GRACIAS POR RESPONDER!! =D
No, no me muestra nada :S. Pero sigo teniendo la misma pregunta ¿como se puede obtener el $_SESSION["login"] actual, y guardarlo en la misma bd que el del upload?
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

SíEste tema le ha gustado a 1 personas




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