Foros del Web » Programando para Internet » PHP »

Error en el mismo formulario

Estas en el tema de Error en el mismo formulario en el foro de PHP en Foros del Web. Tengo dos formularios de subida exactamente iguales, solo cambia el nombre del name del archivo ._. y no logro hacer que funcione el segundo. El ...
  #1 (permalink)  
Antiguo 19/01/2010, 14:47
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 15 años, 5 meses
Puntos: 0
Error en el mismo formulario

Tengo dos formularios de subida exactamente iguales, solo cambia el nombre del name del archivo ._. y no logro hacer que funcione el segundo.

El que funciona:
Código PHP:
                    case 'avatar'//Falta comprobar tamaños de avatar
                        
$e_id $_POST['edit_uid'];
                        
secure_vars_spec($e_id);
                        
$ed_id mysql_real_escape_string($e_id);

                        if(
$_POST){
                            
$str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
                            
$cad "";
                            for(
$i=0;$i<12;$i++) {
                                
$cad .= substr($str,rand(0,62),1);
                            }
                            
$tamano $_FILES 'ava_user_edit' ][ 'size' ]; // Leemos el tamaño del fichero
                            
$tamano_max="30000"// Tamaño máximo permitido
                            
if( $tamano $tamano_max){ // Comprobamos el tamaño 
                                
$destino 'images/avatars/upload' // Carpeta donde se guardará
                                
$sep=explode('image/',$_FILES["ava_user_edit"]["type"]); // Separamos image/
                                
$tipo=$sep[1]; // Obtenemos el tipo de imagen que es
                                
if($tipo == "gif" or $tipo == "jpeg" or $tipo == "png"){
                                    
move_uploaded_file $_FILES 'ava_user_edit' ][ 'tmp_name' ], $destino '/' .$cad.'.'.$tipo);
                                    
$avatar_root $destino '/' $cad '.' $tipo;
                                    
mysql_query("UPDATE users SET user_avatar='$avatar_root' WHERE user_id='$ed_id'");
                                    
Header("Location: users?mode=edit&tab=avatar&updated=true");
                                }else{ 
                                    
Header("Location: users?mode=edit&tab=avatar&updated=no_perm_ava_type");
                                }
                            }else{
                                
Header("Location: users?mode=edit&tab=avatar&updated=max_size_ava");
                            }
                        }else{
                            
Header("Location: users?mode=edit&tab=avatar&updated=no_file_ava");
                        }
                    break;

                    default:
                        
Header("Location: users?mode=edit&tab=main");
                }
            }
        }else{
            
Header("Location: users?mode=login");
        }
    break; 
El que no funciona:
Código PHP:
    case 'added':
        
$a_title $_POST['anime_title'];
        
$a_story $_POST['anime_story'];
        
$a_capis $_POST['capis_anime'];
        
$a_genre $_POST['anime_genre'];
        
$a_img $_FILES['img_anime'];
        
$a_uid $_POST['uid'];

        if (!empty(
$a_title) or !empty($a_story) or !empty($a_capis) or !empty($a_genre) or !empty($a_img) or !empty($a_uid)){
            
secure_vars_spec($a_title);
            
secure_vars_spec($a_story);
            
secure_vars_spec($a_capis);
            
secure_vars_spec($a_genre);
            
secure_vars_spec($a_uid);
            
$a_title mysql_real_escape_string($a_title);
            
$a_story mysql_real_escape_string($a_story);
            
$a_capis mysql_real_escape_string($a_capis);
            
$a_genre mysql_real_escape_string($a_genre);
            
$a_uid mysql_real_escape_string($a_uid);

            
$a_title_url ereg_replace("[^A-Za-z0-9]""-"$a_title);
            
# La función ereg_replace reemplaza todos lo que no sea números o letras
            
$a_title_url strtolower($a_title_url);
            
# strtolower transforma todo en minúsculas

            
$search_anime mysql_query("SELECT title FROM anime_series WHERE title='$a_title'");
            if (
$search_ok mysql_fetch_array($search_anime)){
                
Header("Location: anime?mode=add&error=double");
            }else{
                
$tamano $_FILES 'img_anime' ][ 'size' ]; // Leemos el tamaño del fichero
                
$tamano_max="100000"// Tamaño máximo permitido (100KiB)
                
if( $tamano $tamano_max){ // Comprobamos el tamaño 
                    
$destino 'images/anime/upload' // Carpeta donde se guardará
                    
$sep=explode('image/',$_FILES['img_anime']['type']); // Separamos image/
                    
$tipo=$sep[1]; // Obtenemos el tipo de imagen que es
                    
if($tipo == "gif" or $tipo == "jpeg" or $tipo == "png"){
                        
move_uploaded_file $_FILES 'img_anime' ][ 'tmp_name' ], $destino '/' .$a_title_url.'.'.$tipo);
                        
$a_img_root $destino '/' $name '.' $tipo;
                        
mysql_query("INSERT INTO anime_series (user_id,title,url_title,story,genero,img_anime,rating,chapters,approved) values ('$a_uid','$a_title','$a_title_url','$a_story','$a_genre','$a_img_root','0','$a_capis','0')") or die(mysql_error());
                        
Header("Location: anime?mode=add&error=true");
                    }else{ 
                        
Header("Location: anime?mode=add&error=no_perm_img_type");
                    }
                }else{
                    
Header("Location: anime?mode=add&error=max_size_img");
                }
            }
        }else{
            
Header("Location: anime?mode=add&error=empty");
        }
    break; 
Y me salta aquí: Header("Location: anime?mode=add&error=no_perm_img_type"); a que el tipo no está permitido, como podréis ver el formulario no cambia nada significativo, pero el primero sube imágen y el segundo no. Tienen los permisos CHMOD bien puestos las carpetas.

Última edición por TheRD; 21/01/2010 a las 14:55 Razón: SOLUCIONADO
  #2 (permalink)  
Antiguo 19/01/2010, 16:48
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 11 meses
Puntos: 16
Respuesta: Error en el mismo formulario

Haz un printr($tipo); antes del if donde compruebas si el tipo es correcto para ver que valor contiene, ya que debe fallar aquí.

En caso que te dé error postea tambien el código del formulario para poder comprobar que no esté allí el error.
  #3 (permalink)  
Antiguo 20/01/2010, 07:44
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Error en el mismo formulario

Notice: Undefined offset: 1 in /opt/lampp/htdocs/random/anime.php on line 85

Ahora posteo el código del formulario:
Código PHP:
<form action="anime?mode=added" method="POST">
            Título del Anime:<input type="text" name="anime_title" /><br />
            Sinópsis:<textarea name="anime_story"></textarea><br />
            Número de capítulos:<input type="text" name="capis_anime" /><br />
            Imágen del anime:<input type="file" name="img_anime"/><br />
            Género:<select name="anime_genre">
                <option>Drama</option>
                <option>Comedia</option>
                <option>Aventuras</option>
                <option>Amor</option>
                <option>Escolar</option>
                <option>Seinen</option>
                <option>Deportes</option>
                <option>Acción</option>
                <option>Fantasía</option>
                <option>Hentai</option>
                <option>Yaoi</option>
                <option>Yuri</option>
                <option>Ecchi</option>
                <option>Magia</option>
                <option>Mecha</option>
                <option>Super poderes</option>
                <option>Infantil</option>
                <option>Deformed</option>
                <option>Otro</option>
                </select><br />
                <input type="hidden" name="uid" value="<?php echo $uid_ani;?>" />
                <input type="submit" value="Añadir Anime" />
            </form>

Etiquetas: formulario
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




La zona horaria es GMT -6. Ahora son las 21:39.