Autor Tema: Codigo que no funciona...  (Leído 2419 veces)

Desconectado mOrK

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 1.503
  • Karma: 43
  • :)
    • Ver Perfil
    • Sígueme en Twitter!
Codigo que no funciona...
« en: 30 de Julio de 2007, 14:25:33 pm »
Hola que tal;

Ayer me bajé un simple codigo de un uploader que he modificado a mi gusto y necesidad. Lo estuve testeando en localhost y funcionó a la perfección pero el problema llego en mi servidor... No sé porqué, me dice que el format del archivo no es correcto cuando en teoria se puede subir ... :S

up.html
Código: [Seleccionar]
<center>
  <form action="?sec=subir" method="post" name="miformu" enctype="multipart/form-data">
    <table width="1%" border="0">
      <tr>
        <td width="24%"><input name="archivo" type="file" class="input"/></td>
      </tr>
      <tr>
        <td><center>
          <input name="submit" type="submit" value="Subir archivo ahora!" width="100%" class="input"/>
        </center></td>
      </tr>
      <tr>
        <td><label> <span class="Estilo1">
          <input  class="input" type="checkbox" name="normas" value="checkbox"/>
          Acepto las <a href="?sec=faq">Condiciones de Uso </a></span></label></td>
      </tr>
    </table>
  </form>
*Si el archivo pesa mucho, tardar&aacute; en subirse. Por favor, ten paciencia !
</center>

subir.php

<?
	
$extension explode(".",$HTTP_POST_FILES[&#39;archivo&#39;][&#39;name&#39;]);
	
$num count($extension)-1;

	
if(
$extension[$num] == "jpg" OR $extension[$num] == "rar" OR $extension[$num] == "JPG" OR $extension[$num] == "JPEG" OR $extension[$num] == "png" OR $extension[$num] == "PNG" OR $extension[$num] == "gif" OR $extension[$num] == "mp3" OR $extension[$num] == "avi" OR $extension[$num] == "mpg" OR $extension[$num] == "wmv" OR $extension[$num] == "mov" OR $extension[$num] == "wav" OR $extension[$num] == "pdf")
	
{
	
	
	
if(
$archivo_size 1000000)
	
	
	
{
	
	
	
	
if(!
copy($archivo"archivos/".$HTTP_POST_FILES[&#39;archivo&#39;][&#39;name&#39;]))
	
	
	
	
{
	
	
	
	
	
echo 
"<img src=\"img/mal.png\"/><br>Error externo. No se ha podido copiar el archivo.";
	
	
	
	
}
	
	
	
	
else
	
	
	
	
{
	
	
	
	
	
echo 
"<img src=\"img/bien.png\"/><br>Archivo subido con exito<br>
	
	
	
	
	
URL: <a href=\"http://www.heavyland.net/subir_archivos/archivos/"
.$archivo_name."\" target=\"blank\">http://www.heavyland.net/subir_archivos/archivos/".$archivo_name."</a><p><a href=\"http://localhost/subir_archivos/index.php\">Volver atras.</a>";
	
	
	
	
}
	
	
	
}
	
	
	
else
	
	
	
{
	
	
	
	
echo 
"<img src=\"img/mal.png\"/><br>El archivo supera los <b>300MB</b>!";
	
	
	
}
	
}
	
else
	
{
	
	
echo 
"<img src=\"img/mal.png\"/><br>El formato de archivo no es válido, léete los <a href=\"?sec=faq\">terminos y demás</a>.";
	
}

?>


Ya me estuvo ayudando Naveda, pero no se pudo hacer nada :S

Saludos y gracias de antemano!
« Última modificación: 30 de Julio de 2007, 14:29:42 pm por mOrK »

Comunidad PHPeros

Codigo que no funciona...
« en: 30 de Julio de 2007, 14:25:33 pm »

Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: Codigo que no funciona...
« Respuesta #1 en: 30 de Julio de 2007, 15:09:01 pm »
mmm diste los permisos 777 a la carpeta?
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Desconectado mOrK

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 1.503
  • Karma: 43
  • :)
    • Ver Perfil
    • Sígueme en Twitter!
Re: Codigo que no funciona...
« Respuesta #2 en: 30 de Julio de 2007, 15:52:25 pm »
Claro, sino daria un error diciendo eso mismo ...

Desconectado Txapu

  • PHPerit@
  • *
  • Mensajes: 27
  • Karma: 6
  • Sexo: Masculino
    • Ver Perfil
Re: Codigo que no funciona...
« Respuesta #3 en: 31 de Julio de 2007, 01:26:52 am »
A mi me funciona, lo que he tenido que añadir una linea que no esta en el codigo que has publicado (seguramente se te habrá escapado :P)

Código: [Seleccionar]
$archivo = $HTTP_POST_FILES['archivo']['tmp_name'];
Mi php esta montado sobre un linux. Si usas win, al igual debes cambiar la barra "/" por una contrabarra "\" (ahora no se me ocurre nada mas...)

Desconectado mOrK

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 1.503
  • Karma: 43
  • :)
    • Ver Perfil
    • Sígueme en Twitter!
Re: Codigo que no funciona...
« Respuesta #4 en: 31 de Julio de 2007, 02:41:36 am »
Una pregunta, lo has probado en localhost o lo has subido a algun ftp? Porque sigue sin irme :S

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Codigo que no funciona...
« Respuesta #5 en: 31 de Julio de 2007, 13:24:41 pm »
Es lo de menos, el te ha dicho que usa linux, con eso ya lo dice todo ejeje.
m0rk creo que el problema sigue siendo el que te decia yo ayer y te dice ahora txapu, el nombre del archivo...

Prueba a poner lo de Txapu :P y ya nos dirás



He visto esto:

if(!copy($archivo,
Tambien debes sustituirlo, por $HTTP_POST_FILES['archivo'] simplemente.

$archivo_name
Tambien los debes sustituirlo por $HTTP_POST_FILES['archivo']['tmp_name']

$archivo_size
Lo debes cambiar por $HTTP_POST_FILES['archivo']['size']
« Última modificación: 31 de Julio de 2007, 13:30:07 pm por naveda »
Por favor, leete las Normas


Desconectado mOrK

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 1.503
  • Karma: 43
  • :)
    • Ver Perfil
    • Sígueme en Twitter!
Re: Codigo que no funciona...
« Respuesta #6 en: 31 de Julio de 2007, 13:47:36 pm »
Pero si cambio las barras por contrabarras no las confunidira o algo? Porque ya uso barras y contrabarras... :S

Desconectado Txapu

  • PHPerit@
  • *
  • Mensajes: 27
  • Karma: 6
  • Sexo: Masculino
    • Ver Perfil
Re: Codigo que no funciona...
« Respuesta #7 en: 02 de Agosto de 2007, 21:07:25 pm »
Perdon por no contestar antes, tengo mi pc fastidiado (estoy escribiendo desde el curro :P)

Pero si cambio las barras por contrabarras no las confunidira o algo? Porque ya uso barras y contrabarras... :S

Usas barras y/o contrabarras para el nombre archivo??

Seguramente ya lo habras hecho, pero por si las moscas te paso otra posible solucion:
Si donde lo estas subiendo es un linux, asegurate que el directorio donde se copia el archivo existe y tiene permisos de lectura, escritura y ejecucion para todos (por si las moscas, luego si quieres vas quitandole permisos...): "777"

Si usas un hosting, al igual tienen capada esa funcion, o no se ha especificado un directorio temporal valido en su php.ini (creo que era algo como "upload_tmp_dir = [algo]")

Saludos,
M

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re: Codigo que no funciona...
« Respuesta #8 en: 02 de Agosto de 2007, 23:17:26 pm »
Buenas,

Creo que así tendría que funcionarte...

<?php

$extension 
explode(".",$HTTP_POST_FILES[&#39;archivo&#39;][&#39;name&#39;]);
$num count($extension)-1;
if(
$extension[$num] == "jpg" ||$extension[$num] == "rar" || $extension[$num] == "JPG" || $extension[$num] == "JPEG" || $extension[$num] == "png" || $extension[$num] == "PNG" OR $extension[$num] == "gif" ||$extension[$num] == "mp3" || $extension[$num] == "avi" OR $extension[$num] == "mpg" || $extension[$num] == "wmv" || $extension[$num] == "mov" || $extension[$num] == "wav" || $extension[$num] == "pdf")
	
{
if(
$HTTP_POST_FILES[&#39;archivo&#39;][&#39;size&#39;] < 1000000){
if(!copy($HTTP_POST_FILES[&#39;archivo&#39;], "archivos/".$HTTP_POST_FILES[&#39;archivo&#39;][&#39;name&#39;])){
echo "<img src=\"img/mal.png\"/><br>Error externo. No se ha podido copiar el archivo.";
}else{
echo 
"<img src=\"img/bien.png\"/><br>Archivo subido con exito<br>
URL: <a href=\"http://www.heavyland.net/subir_archivos/archivos/"
.$HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;]."\" target=\"blank\">http://www.heavyland.net/subir_archivos/archivos/".$HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;]."</a><p><a href=\"http://localhost/subir_archivos/index.php\">Volver atras.</a>";
}
}else{
echo 
"<img src=\"img/mal.png\"/><br>El archivo supera los <b>300MB</b>!";
}
}else{
echo 
"<img src=\"img/mal.png\"/><br>El formato de archivo no es válido, léete los <a href=\"?sec=faq\">terminos y demás</a>.";
}

?>


Espero que te vaya.

pD: Procura no poner OR en los if ya que son comandos de SQL, y en algunos servidores Apache no funciona bien y genera error te aconsejo que siempre pongas || .

Saludos! :)
« Última modificación: 02 de Agosto de 2007, 23:29:07 pm por FeDe »
Sin Firma me haces una? :P

Desconectado mOrK

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 1.503
  • Karma: 43
  • :)
    • Ver Perfil
    • Sígueme en Twitter!
Re: Codigo que no funciona...
« Respuesta #9 en: 03 de Agosto de 2007, 00:36:22 am »
Perdon por no contestar antes, tengo mi pc fastidiado (estoy escribiendo desde el curro :P)

Pero si cambio las barras por contrabarras no las confunidira o algo? Porque ya uso barras y contrabarras... :S

Usas barras y/o contrabarras para el nombre archivo??

Seguramente ya lo habras hecho, pero por si las moscas te paso otra posible solucion:
Si donde lo estas subiendo es un linux, asegurate que el directorio donde se copia el archivo existe y tiene permisos de lectura, escritura y ejecucion para todos (por si las moscas, luego si quieres vas quitandole permisos...): "777"

Si usas un hosting, al igual tienen capada esa funcion, o no se ha especificado un directorio temporal valido en su php.ini (creo que era algo como "upload_tmp_dir = [algo]")

Saludos,
M
Hola Txapu... los permisos los tiene todos y el hosting no tiene la funcion desavilitada, ya que otro usuario del host tiene un uploader aunque solo de imagenes...

Gracias FeDe, pero nada... me dice que la extensions no es buena :S Lo mejor de todo es que funciona, por lo menos en localhost...:S:S

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re: Codigo que no funciona...
« Respuesta #10 en: 03 de Agosto de 2007, 01:35:27 am »
Buenas,

Recuerda que las extensiones tienes que ver si son JPEG, en mayusculas o en minusculas y cosas así porque puede fallar por eso... Pero ahora revisaré el código y te diré.

Saludos :P
Sin Firma me haces una? :P

Desconectado mOrK

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 1.503
  • Karma: 43
  • :)
    • Ver Perfil
    • Sígueme en Twitter!
Re: Codigo que no funciona...
« Respuesta #11 en: 03 de Agosto de 2007, 02:05:11 am »
He subido una .jpg.. :S y nada :S

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re: Codigo que no funciona...
« Respuesta #12 en: 03 de Agosto de 2007, 02:28:19 am »
Buenas,

Perdón por el doble-post pero, aquí te dejo el Código 100% creado por mí (excepto el formulario que es el tuyo modificado); Este código debería funcionarte.

<?php

if(isSet($_POST["upload"])) {
$mb 300// Mb maximo por archivo
$div explode(".",$HTTP_POST_FILES[&#39;archivo&#39;][&#39;name&#39;]);
$count count($div)-1;
$extension ucfirst($div[$count]);
$ext = array("bmp","gif","png","jpg","jpeg","mp3");
$mbmax $mb*1024;
if(
$HTTP_POST_FILES[&#39;archivo&#39;][&#39;size&#39;] > $mbmax) {
foreach($ext as $extar) {
if(
$extension == ucfirst($extar)){

if (
is_uploaded_file($HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;])) {
$nombre $HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;]."-".date("hisdmY")."-".$_SERVER["REMOTE_ADDR"];
$nombre md5($nombre).".".$extar;
      
copy($HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;], "archivos/{$nombre}");
print "Archivo subido correctamente en enlace para verlo es <a href=\"http://www.heavyland.net/subir_archivos/archivos/{$nombre}\">http://www.heavyland.net/subir_archivos/archivos/{$nombre}</a>.";

} else {
print 
"No se ha podido subir correctamente.";
}
}
}
} else {
print 
"El archivo supera los <b>{$mb}</b> MegaBytes, por lo tanto no se puede subir dicho archivo.";
}
} else {
?>

<center>
  <form action="<?=$_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
    <table width="1%" border="0">
      <tr>
        <td width="24%"><input name="archivo" type="file" class="input"/></td>
      </tr>
      <tr>
        <td><center>
          <input name="upload" type="submit" value="Subir archivo ahora!" width="100%" class="input"/>
        </center></td>
      </tr>
    </table>
  </form>
*Si el archivo pesa mucho, tardar&aacute; en subirse. Por favor, ten paciencia !
</center>
<?php
}
?>


Espero que te funcione & te sirva.

EDITADO II Código 1oo% arreglado, recordar que hay que darle permisos CHMOD 777 :P.

Saludos :P
« Última modificación: 03 de Agosto de 2007, 17:59:48 pm por FeDe »
Sin Firma me haces una? :P

Desconectado mOrK

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 1.503
  • Karma: 43
  • :)
    • Ver Perfil
    • Sígueme en Twitter!
Re: Codigo que no funciona...
« Respuesta #13 en: 03 de Agosto de 2007, 14:29:43 pm »
Gracias por el codigo, lo estoy probando pero me da error  en un '{' :S

Es cosa mia o hay un if que tiene dos elses? creo que si eh..

EDITO:

if($extension == ucfirst($extar))
	
	
	
	
	
{
	
	
	
	
	
	
if (
is_uploaded_file($HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;])) 
	
	
	
	
	
	
{
	
	
	
	
	
	
	
$nombre $HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;]."-".date("hisdmY")."-".$_SERVER["REMOTE_ADDR"];
	
	
	
	
	
	
	
$nombre md5($nombre).".".$extar;
	
	
	
	
	
	
	
copy($HTTP_POST_FILES[&#39;archivo&#39;][&#39;tmp_name&#39;], "archivos/{$nombre}");
	
	
	
	
	
	
	
print 
"Archivo subido correctamente en enlace para verlo es <a href=\"http://www.heavyland.net/subir_archivos/archivos/{$nombre}\">http://www.heavyland.net/subir_archivos/archivos/{$nombre}</a>.";

	
	
	
	
	
	
}
	
	
	
	
	
	
else
	
	
	
	
	
	
{
	
	
	
	
	
	
	
print 
"No se ha podido subir correctamente.";
	
	
	
	
	
	
}
	
	
	
	
	
}
	
	
	
	
	
else
	
	
	
	
	
{
	
	
	
	
	
	
print 
"Extension no valida<br>";
	
	
	
	
	
}
	
	
	
	
	
else
	
	
	
	
	
{
	
	
	
	
	
	
print 
"El archivo no es un formato de imagen valido.";
	
	
	
	
	
}

Ahi es donde creo que hay dos else's de un if, el de la extension.

Voy a ver si arreglo el erro :)

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re: Codigo que no funciona...
« Respuesta #14 en: 03 de Agosto de 2007, 15:48:29 pm »
Buenas,

Ya está arreglado el código, faltaba un } lo siento, es que me fallaba el PHPDesigner anoche, entonces no lo pude estructurar bien...

Ya creo que debe de funcionar.

Saludos :P
« Última modificación: 03 de Agosto de 2007, 15:58:10 pm por FeDe »
Sin Firma me haces una? :P