elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Subida php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Subida php  (Leído 2,332 veces)
jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Subida php
« en: 16 Marzo 2016, 12:12 pm »

tengo este php para subir archivos :

Código
  1. <?php
  2. ?>
  3. <?php
  4. require("connect_db2.php");
  5. $usuario = $_SESSION["usuario"];
  6. $sql=mysqli_query($link,"SELECT * FROM login WHERE username='$usuario'");
  7. $fila=mysqli_fetch_array($sql);
  8. if($fila['baneado']=="true") {
  9.      echo '<script language="javascript">location.href="baneado.html"</script>';
  10. } else {
  11.  
  12. }
  13. mysqli_close($link);
  14. ?>
  15. <?php
  16. if (isset($_SESSION["usuario"])) {
  17.  
  18. } else {
  19. echo '<script language="javascript">location.href="log.html"</script>';
  20. }
  21. ?>
  22. <html>
  23. <head><link rel="stylesheet" type="text/css" href="style4.css"></head>
  24. <body>
  25. <center>
  26. <p>Porfavor no utilices el boton de retroceso, utiliza el boton de inicio en este formulario</p>
  27. <form class="uno" enctype="multipart/form-data" action="" method="POST">
  28. <input type="hidden" name="MAX_FILE_SIZE" value="250000000" />
  29. Elige el Archivo a Subir:
  30. <input name="archivo-a-subir" type="file" id="botones"/><br>
  31.  
  32. <input type="text" id="user" placeholder="Descripcion" name="desc" required/>
  33. <input type="submit" value="Subir Archivo"name="boton" id="botones"/>
  34. <input type="button" value="Inicio" name="nada" id="botones" onclick="location.href='inicio.html'"/>
  35. </form>
  36. </center>
  37. <center>
  38. <br>
  39. <br>
  40. <div>
  41. <?php
  42. if(isset($_POST['boton'])) {
  43.      if ((($_FILES["archivo-a-subir"]["type"] == "application/vnd.oasis.opendocument.text")
  44.      || ($_FILES["archivo-a-subir"]["type"] == "application/vnd.oasis.opendocument.spreadsheet")
  45.      || ($_FILES["archivo-a-subir"]["type"] == "application/octet-stream"))
  46.      && ($_FILES["archivo-a-subir"]["size"] < 250000000))
  47. {
  48.  
  49. $target_path = "subidas/";
  50. $target_path = $target_path . basename( $_FILES['archivo-a-subir']['name']);
  51. if(move_uploaded_file($_FILES['archivo-a-subir']['tmp_name'], $target_path))
  52. {
  53.                require("connect_db.php");
  54.                session_start();
  55.                $nombre=$_SESSION["usuario"];
  56.                $desc=$_POST['desc'];
  57.                $direccion='subidas/'.basename( $_FILES['archivo-a-subir']['name']);
  58.                $pass=rand(0,1000000000);
  59.                mysql_query("INSERT INTO archivos VALUES('','$nombre','$desc','$direccion','$pass')");
  60.                mysql_close($link);
  61. echo "El archivo ". basename( $_FILES['archivo-a-subir']['name'])." ha sido subido exitosamente!";
  62. }
  63. else
  64. {
  65. echo "Hubo un error al subir tu archivo! Por favor intenta de nuevo.";
  66. }
  67.  
  68.  
  69.  
  70.  
  71.  
  72. } else {
  73. echo "El tamaño del archivo no esta permitido o el archivo esta prohibido";
  74. }
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. }
  84.  
  85.  
  86.  
  87. ?>
  88. </div>
  89. </center>
  90. </body>
  91. </html>
  92.  
  93.  

pero en la base de datos las variables $nombre, $desc,$direccion me devuelven un 0 es decir en la base de datos estos campos son 0


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Subida php
« Respuesta #1 en: 17 Marzo 2016, 05:07 am »

Hola jalbtercero

Antes de nada, te recomiendo que envuelvas todo el contenido protegido, incluido el html, dentro del primer if, ya que javascript es un lenguaje cliente y puede ser detenido facilmente dando lugar a que se muestre el formulario sin haber iniciado sesión.

Para solucionar este tipo de problemas lo mejor es empezar haciendo un poco de debug, ya que en la mayoría de los casos nos muestra donde tenemos el problema. Lo normal es comprobar lo que imprimen las variables para ver si es lo que debería ser:

Código
  1. echo "INSERT INTO archivos VALUES('','$nombre','$desc','$direccion','$pass')";

En cuanto a la estructura de las query de MySQL es recomendable especificar el nombre de las columnas que vas a insertar (suponiendo que la columna id es auto):

Código
  1. INSERT INTO archivos (nombre, `desc`, direccion, pass) VALUES ('', '', '', '');

Si la columna se llama desc hay que escaparla ya que es una palabra reservada de mysql.

Código
  1. echo "INSERT INTO archivos (nombre, `desc`, direccion, pass) VALUES('$nombre','$desc','$direccion','$pass')";

Si alguna de esas variables esta vacía y la columna es NOT NULL no se insertará nada (te lo digo por experiencia própia).


En línea

jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Subida php
« Respuesta #2 en: 17 Marzo 2016, 10:05 am »

Hola jalbtercero

Antes de nada, te recomiendo que envuelvas todo el contenido protegido, incluido el html, dentro del primer if, ya que javascript es un lenguaje cliente y puede ser detenido facilmente dando lugar a que se muestre el formulario sin haber iniciado sesión.

Para solucionar este tipo de problemas lo mejor es empezar haciendo un poco de debug, ya que en la mayoría de los casos nos muestra donde tenemos el problema. Lo normal es comprobar lo que imprimen las variables para ver si es lo que debería ser:

Código
  1. echo "INSERT INTO archivos VALUES('','$nombre','$desc','$direccion','$pass')";

En cuanto a la estructura de las query de MySQL es recomendable especificar el nombre de las columnas que vas a insertar (suponiendo que la columna id es auto):

Código
  1. INSERT INTO archivos (nombre, `desc`, direccion, pass) VALUES ('', '', '', '');

Si la columna se llama desc hay que escaparla ya que es una palabra reservada de mysql.

Código
  1. echo "INSERT INTO archivos (nombre, `desc`, direccion, pass) VALUES('$nombre','$desc','$direccion','$pass')";

Si alguna de esas variables esta vacía y la columna es NOT NULL no se insertará nada (te lo digo por experiencia própia).

Aprecion las ayudas y corregire algunas cosas, gracisas, pero lo que no entiendo es que en mi anterior pagina funcionaba perfectamente sin problemas, pero me he comprado un nuevo dominio y he pedido que me lo trasladen y asi lo hicieron, sin cambios ni nada, no he tocado la sintxis de este php, pero no funciona, no hace falta decir que he cambiado los datos de conexion a mi base de datos. Si me pudieras aclarar esto, Gracias


EDITO: He modificado el codigo incluyendo las columnas donde se tiene que meter la informacion incluyendo la culamna id dejandola vacias ('') ya que es autoincrementable, y no funciona. Y la columna no se llama "desc" es "descripcion".

EDITO2: Bueno de echo ahora con esta midificacion, ni si quiera se registra informacion, es decir antes al menos habiean 0 pero ahora nada de nada:

La parte donde meto los valores:

Código
  1. mysql_query("INSERT INTO archivos ('id','nombre','descripcion','archivo','pass') VALUES('','$nombre','$desc','$direccion','$pass')");
  2.  


He probado de todo y no funciona.... no se que hacer....
« Última modificación: 17 Marzo 2016, 19:17 pm por jalbtercero » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Subida php
« Respuesta #3 en: 25 Marzo 2016, 17:25 pm »

¿Hiciste el "echo" que te dije? ¿Se imprime la query y funciona si la usas directamente en tu base de datos?

Como ya te dije, no es necesario que incluyas la columna id, ya que es automatica, puedes quitarla de la query. Los nombres de las columnas no necesitan estar entre comillas, en cuanto a los valores si son enteros (int) no debes ponerlos entre comillas, como el id estas poniendo el valor entre comillas. Debería ser de la siguiente manera:

Código
  1. mysql_query("INSERT INTO archivos (nombre, descripcion, archivo, pass) VALUES('$nombre', '$desc', '$direccion', '$pass')");

Comprueba si funciona de esta manera.

Si ese no es el problema, entonces debe estar en la estructura de la tabla, comprueba que este todo bien, el tipo de contenido (int, char, varchar...) y el tamaño maximo.

Hay que comprobarlo todo ya que casi siempre son errores muy simples que pasan desapercibidos.

Y como cuestión de seguridad, te recomiendo que empieces a usar mysqli en lugar de mysql. Con mysqli tendrás la posibilidad de usar prepared statements para tener una seguridad decente cuando trabajas con user input. Si no necesitas usar user input no hay problema en usar query() pero con mysqli.

Más que nada porque, no solo se dejo de dar soporte, si no porque desde php 5.5 ya no existe la función mysql(). Y es importante no usar versiones tan antiguas de php.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ISP. Descarga y subida
Redes
celtac 8 5,077 Último mensaje 20 Junio 2010, 14:09 pm
por skapunky
Subida - BitTorrent
Redes
Topol-M 1 1,410 Último mensaje 14 Septiembre 2014, 00:10 am
por engel lex
[Resuelto] Subida Php
PHP
jalbtercero 2 1,781 Último mensaje 3 Marzo 2016, 23:37 pm
por jalbtercero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines