1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP - código upload - Notice: Undefined index:

Discussão em 'Web Development' iniciada por The Dealer, 28 de Fevereiro de 2009. (Respostas: 8; Visualizações: 3723)

  1. The Dealer

    The Dealer Power Member

    Estou a criar um sistema de upload de ficheiros .txt usando o seguinte código:

    Código:
    <?php
    include("Connections\connectDB.php");
    
    $target = "D:\Projecto\PHP files\uploads";
    $target = $target . basename( $_FILES['uploaded']['name']) ;
    $ok=1;
    
    //This is our size condition
    if ($uploaded_size > 350000)
    {
    echo "Your file is too large.<br>";
    $ok=0;
    }
    
    //This is our limit file type condition
    if ($uploaded_type =="text/txt")
    {
    echo "No txt files<br>";
    $ok=0;
    }
    
    //Here we check that $ok was not set to 0 by an error
    if ($ok==0)
    {
    Echo "Sorry your file was not uploaded";
    }
    
    //If everything is ok we try to upload it
    else
    {
    if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
    {
    echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
    }
    else
    {
    echo "Sorry, there was a problem uploading your file.";
    }
    }
    ?> 
    Mas dá-me o seguinte erro, quando no form faço submit:

    Qual será o problema...?
     
    Última edição: 28 de Fevereiro de 2009
  2. K0mA

    K0mA Power Member

    Usas a variável $uploaded_type e $uploaded_size mas não as defines, tens de as definir.
     
  3. O primeiro e o quarto erro deve-se a que usas o Array Associativo $_FILES['uploaded'], que parece não existir. Os outros dois erros pela razão mencionada acima por K0mA.
    Na parte do HTML certificate que dentro do teu <input type="file" /> tens o atributo name="uploaded". Pois o nome do array associativo pertencente à ele será igual ao valor que pões em name=""
    De resto muda só o $uploaded_size e $uploaded_type para $_FILES['uploaded']['size'] e $_FILES['uploaded']['type'].
     
  4. The Dealer

    The Dealer Power Member

    Já corrigi os ultimos 3 erros, mas apesar de ter o form aparentemente correcto:
    Código:
    <form enctype="multipart/form-data" action="upload.php" method="POST">
        Escolha um ficheiro:<input name="uploaded" type="file" /><br />
        <input type="submit" value="Upload" />
        </form>
    Continuo a ter erro no uploaded de Undefined Index... No entanto o que é estranho, é que apesar de me anunciar esse erro, já consigo efectuar o upload...
     
    Última edição: 28 de Fevereiro de 2009
  5. vejo que num echo teu tens $_FILES['uploadedfile']['name'], não deveria ser só 'uploaded'?
    faz bom uso da informação da linha onde te deu o erro, o php faz isso muito bem na minha opinião (entre outros). Mas de vez em quando há sempre uns erros que se passa por cima enão se nota. =)
     
  6. The Dealer

    The Dealer Power Member

    De facto :)

    Corrigi esse erro, e entretanto já tinha optado por colocar integrar o upload.php no SO.php (o form e código php estão portanto "no mesmo sitio". De qualquer das formas deixou de "dar erro" apenas quando faço o upload (depois de carregar no botão). Quando inicio a pagina continua a apresentar-me o seguinte:

    EDIT: Com esta minha afirmação acabei de descobrir que se voltar ao sistema de usar o ficheiro upload.php, resolve-me todos os meus problemas, mas de qualquer forma agora depois de fazer submit (ao upload) vou para a pagina upload.php.

    Como atribuir a uma imagem um simples back, mas sem ser para uma página especifica? Pode ser em HTML.
     
    Última edição: 28 de Fevereiro de 2009
  7. Na tua situação de juntares ambos os ficheiros o erro acontece porque ele está a parte do upload sempre que carregas a página. Tu podes juntar os dois ficheiros e metes todo aquele código de fazer upload dentro de um if (isset($_SESSION['uploaded'])) { }. O que o isset( ) faz é ver se essa variável existe, retornando true se existir, e consquentemente false caso não exista.
    Dessa maneira ao carregares a página e não tiveres a fazer nenhum upload o código nem o tenta fazer.

    Em relação ao back da imagem (suponho que seja o background). Se quiseres atribuir certas características de design por todas as imagens no teu site, independentemente da pagina em que estão, terás que usar CSS (Cascade StyleSheet).
    Tens a opção de usar um ficheiro externo, ou seja, um ficheiro onde defines os teus estilos todos e depois a página vai invoca-la (quase como se fizesses include() ); ou então metes em cada tag <img /> o atributo style="background-color: #rrbbgg;".

    Depois confirma-me se é mesmo isto que pretendes nas imagens.
     
  8. The Dealer

    The Dealer Power Member

    Não... o que pretendo é que quando carregar numa imagem (ou numa palavra, uma coisa qualquer, mas de preferencia numa imagem), ele faça um Go Back (retroceder) no browser. Mas isto sem usar um link definido para uma página especificamente...
     
  9. Ah ok,
    para isso metes na tag da imagem o atributo onclick="window.history.back();" da maneira que a tua tag fica do género:
    <img src="caminho.png" onclick="window.history.back();" />
    é JavaScript e faz com que o teu browser carrega a última página que carregou antes desta, que é exactamente o que o 'Retroceder' faz.
     

Partilhar esta Página