Jump to content
Gabriel Queiroz Schicora

Problema com Enctype no formulário

Recommended Posts

Olá,

Tenho um projeto sendo desenvolvido em php, estava tudo feito então hospedei o site, quando ele estava hospedado me deparei com um erro que não acontecia localmente.

Tenho um arquivo de formulários, essa pagina recebe um parâmetro via GET especificando o tipo de formulário e conforme o valor desse parâmetro eu mostro os campos necessários, ate ai tudo bem, mas quando eu preencho tudo e envio ele simplesmente não envia as variáveis, se eu mudar para GET o formulário funciona perfeitamente, mas isso não é possível no projeto, e o POST não esta funcionando hospedado, mas localmente tudo esta OK.

Descobri que retirando o enctype ele funciona corretamente, mas eu necessito do enctype pois vou enviar imagens.

Poderiam me ajudar?

Segue abaixo código do formulário, o código esta resumido, no total tenho 12 possibilidades para a variável tipo, aqui esta apenas com 3:

<!--Inclusão do CSS-->
<link rel="stylesheet" type="text/css" href="pages/css/forms.css">

<script src="//cdn.ckeditor.com/4.5.10/standard/ckeditor.js"></script>


<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" />
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"></script>

<script type="text/javascript" src="pages/js/forms.js"></script>

<form id="formInsere" method='POST' enctype="multipart/form-data" action="<?php echo (isset($_GET['id'])) ? 'php/atualizar_banco' : 'php/inserir_banco' ; ?>">

<table>

<?php

//-----------------------------------------------------------------------------------------------
if($_GET['tipo'] == "admin"){

if(isset($_GET['id'])){

//Query de seleção
$query_select = "SELECT * FROM administradores WHERE id=".$_GET['id'];
$result_select = mysql_query($query_select);

$coluna_select = mysql_fetch_assoc($result_select);

}

?>

<tr>
<td>Username:</td>
<td class="campo"><input type="text" class="texto" name="username" <?php echo (isset($_GET['id']))? "value='".$coluna_select['username']."'" : "" ?> autofocus></td>
</tr>

<tr>
<td><?php echo (isset($_GET['id']))? "Nova senha:" : "Senha:" ; ?></td>
<td class="campo"><input type="password" class="texto" name="senha" <?php echo (isset($_GET['id']))? "" : "required" ?>></td>
</tr>

<tr>
<td><?php echo (isset($_GET['id']))? "Confirmar nova senha:" : "Confirmar senha:" ; ?></td>
<td class="campo"><input type="password" class="texto" name="confsenha" <?php echo (isset($_GET['id']))? "" : "required" ?>></td>
</tr>

<?php 
//-----------------------------------------------------------------------------------------------
}else if($_GET['tipo'] == "home"){

if(isset($_GET['id'])){

//Query de seleção
$query_select = "SELECT * FROM vocesabia WHERE id=".$_GET['id'];
$result_select = mysql_query($query_select);

$coluna_select = mysql_fetch_assoc($result_select);

}

?>

<tr>
<td>Voce sabia que...</td>
<td class="campo"><textarea name="informacao">
<?php echo (isset($_GET['id']))? $coluna_select['informacao'] : "" ?>
</textarea></td>
</tr>

<?php 
//-----------------------------------------------------------------------------------------------
}else if($_GET['tipo'] == "banner"){

if(isset($_GET['id'])){

//Query de seleção
$query_select = "SELECT * FROM banner WHERE id=".$_GET['id'];
$result_select = mysql_query($query_select);

$coluna_select = mysql_fetch_assoc($result_select);

}

?>

<tr>
<td>Titulo:</td>
<td class="campo"><input type="text" class="texto letras" name="titulo" <?php echo (isset($_GET['id']))? "value='".$coluna_select['titulo']."'" : "" ?> autofocus></td>
</tr>

<tr>
<td>Imagem<?php echo (isset($_GET['id']))? " atual" : "" ; ?>:</td>
<td class="campo">

<?php

if(isset($_GET['id'])){
echo ($coluna_select['imagem'] != "")? 
"<img src='../pages/src/banner/".$coluna_select['imagem']."'><br>" :
"<img src='../pages/src/setores/logoPadrao.png'>";
}

?>

<input type="text" class="texto" id='foto' name="foto_mostrar" placeholder="Foto" title="Foto" readonly/>
<input hidden type="file" class="texto" id="foto_carregada" name="foto">
</td>
</tr>

<?php 
}//Fim if de tipo
?>

<!--Botões e campos hidden-->
<tr>
<td colspan="2"><input type="submit" <?php echo (isset($_GET['id'])) ? 'name="atualizar" value="Atualizar"' : 'name="salvar" value="Salvar"' ; ?> id="btnLogin"></td>
</tr>
<tr>
<td colspan="2"><input type="hidden" name="tipo" value="<?php echo $_GET['tipo'] ?>"></td>
</tr>
<?php
if(isset($_GET['id'])){
?>
<tr>
<td colspan="2"><input type="hidden" name="id" value="<?php echo $_GET['id'] ?>"></td>
</tr>
<?php } ?>

</table>
</form>

<!--Chamadas do editor-->
<script>
CKEDITOR.replace( 'informacao' );
</script>

Share this post


Link to post
Share on other sites
Está aparecendo alguma mensagem de erro ou aviso agora?
Qual era a mensagem que aparecia quando você subiu os arquivos para o servidor?
Qual o tamanho do arquivo que você está selecionando para enviar no formulário?

Então cara, não esta aparecendo nenhum erro nem warning, nada, ele simplesmente não envia para a outra pagina, sem exibir erros.

Não estou enviando arquivo, estou enviando apenas a palavra "Teste", tentei enviar arquivo também mas não envia nada.

Share this post


Link to post
Share on other sites
Sem mensagens de erro fica complicado ajudar, porque aí só testando mesmo...


Qual era o erro que aparecia quando você hospedou o site? Esse que você citou:


...estava tudo feito então hospedei o site, quando ele estava hospedado me deparei com um erro que não acontecia localmente...


E outra coisa... habilita as mensagens de erro/aviso do PHP adicionando estas duas linhas bem no início do seu arquivo, testa, tenta resolver as mensagens de erro/aviso que aparecer e se tiver dificuldade posta aqui:



<?php
ini_set("display_errors", 1);
error_reporting(E_ALL|E_STRICT);

Share this post


Link to post
Share on other sites
Sem mensagens de erro fica complicado ajudar, porque aí só testando mesmo...
Qual era o erro que aparecia quando você hospedou o site? Esse que você citou:
...estava tudo feito então hospedei o site, quando ele estava hospedado me deparei com um erro que não acontecia localmente...
E outra coisa... habilita as mensagens de erro/aviso do PHP adicionando estas duas linhas bem no início do seu arquivo, testa, tenta resolver as mensagens de erro/aviso que aparecer e se tiver dificuldade posta aqui:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL|E_STRICT);

Coloquei essas linhas mas nada, o único erro que mostra é que ele não encontrou a variavel $_POST['tipo'], mas isso é porque o formulário não esta enviando os dados para a outra pagina.

Muito estranho não aparecer erros, ele simplesmente não funciona sem nem exibir algum erro.

Share this post


Link to post
Share on other sites
Bom, sem poder testar o formulário não tenho muito o que fazer.


Qual a versão do PHP desse servidor?


O que sugiro, é que você valide o HTML da página. Acesse a página que tem o formulário no navegador, abra o código fonte (CTRL+U), copie TODO o HTML, cole no validador de HTML e corrija todos os erros que for encontrado.

Share this post


Link to post
Share on other sites

Ah... se puder mostrar o código PHP da página que recebe os dados do formulário, talvez ajude...

Então, esse é o codigo da pagina que recebe as coisas, nas primeiras linhas tenho algumas coisas que usei só para testar o erro:

<?php

//Apenas para teste do erro
echo "Versão do PHP: ".phpversion();
echo "<br><br>";
echo "POSTS: <br>";
echo "<pre>".var_dump($_POST)."</pre>";
echo "<br><br>";
echo "REQUEST: <br>";
echo "<pre>".var_dump($_REQUEST)."</pre>";
echo "<br><br>";

if($_POST['tipo'] == "neurologia"){
    
    //Variaveis
    $nome = $_POST['nomeExame'];
    $descricao = $_POST['descricao'];
    $link = $_POST['link'];

    //Query de inserção
    $query = "INSERT INTO neurologia (nome, descricaoInformacoes, link) VALUES ('$nome', '$descricao', '$link')";
    $result = mysql_query($query);

    if($result){

        //Guarda mensagem numa sessão
        $_SESSION['msg'] = "Exame inserido com sucesso!!!";
        //Retorna a pagina anterior
        echo "<script>history.go(-2)</script>";

    }else{
        echo mysql_error();
    }
//-----------------------------------------------------------------------------------------------
}else if($_POST['tipo'] == "examescomplementares"){

    //Variaveis
    $nomeExame = $_POST['nomeExame'];
    $rua = $_POST['rua'];
    $bairro = $_POST['bairro'];
    $cidade = $_POST['cidade'];
    $servicos = $_POST['servicos'];
    $agendamento = $_POST['agendamento'];
    $convenios = $_POST['convenios'];
    $guias = $_POST['guias'];

    //Query de inserção
    $query = "INSERT INTO examescomplementares (nome, rua, bairro, cidade, servicos, agendamento, convenios, guiasECuidados) VALUES ('$nomeExame', '$rua', '$bairro', $cidade, '$servicos', '$agendamento', '$convenios', '$guias')";
    $result = mysql_query($query);

    if($result){

        //Guarda mensagem numa sessão
        $_SESSION['msg'] = "Exame inserido com sucesso!!!";
        //Retorna a pagina anterior
        echo "<script>history.go(-2)</script>";

    }else{
        echo mysql_error();
    }
//-----------------------------------------------------------------------------------------------
}else if($_POST['tipo'] == "home"){

    //Variaveis
    $informacao = $_POST['informacao'];

    //Query de inserção
    $query = "INSERT INTO vocesabia (informacao) VALUES ('$informacao')";
    $result = mysql_query($query);

    if($result){

        //Guarda mensagem numa sessão
        $_SESSION['msg'] = "Informação inserida com sucesso!!!";
        //Retorna a pagina anterior
        echo "<script>history.go(-2)</script>";

    }else{
        echo mysql_error();
    }
//-----------------------------------------------------------------------------------------------
}

O retorno que tenho na pagina daquelas linhas de teste é este:

Versão do PHP: 5.3.28

POSTS:
array(0) { }

REQUEST:
array(3) { ["page"]=> string(17) "php/inserir_banco" ["_ga"]=> string(26) "GA1.3.538636824.1478538168" ["PHPSESSID"]=> string(32) "841d0d053918187cdab2d0b610ff689b" }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Dallas20
      Então pessoal,  estou fazendo um pequeno projeto para me aperfeiçoar em javascript e acabei me deparando com o seguinte problema. Eu queria pegar o valor de um input quando o usuário desse um click em um botão e isso foi simples de fazer, porém ao utilizar conceitos de POO e aplicando classes no javascript não consigo fazer essa ação. Gostaria de saber se isso é possível? E como fazer?
       
      Segue o code HTML:
      <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <meta name="author" content="Dallas"> <meta http-equiv="refresh" content="1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="../CSS/withdrawal.css" rel="stylesheet"> <script src="../javascript/withdrawal.js"></script> <title>Banco do Brasil</title> </head> <body> <h1>Quanto deseja sacar ?</h1> <input type="number" id="cashInReal"> <button type="button" onclick="alter()"> AQUI</button> </body> </html> code javascript:
      class withdrawal { alter() { alert(document.getElementById('cashInReal').value); } } Desde já muito obrigado.
       
      Att. Dallas
    • By ViniciusRamoa
      Oi! Quando eu comecei a estudar php e logica de programação, é que uma das primeiras coisas que precisamos ter é uma noção exata do que queremos fazer, entao, o que eu estou querendo fazer, eu diria que é bem ousado para um iniciante, mas eu estou estudando e meu único foco é criar um de conteudos simples para meu site, será apenas para uso pessoal, nal tenho interesse em vender, mas iria disponibilizar para download , caso alguém queira, ele irá apenas postar conteúdos, apagar, editar e somente isso, não editará banner, ou layout ou qualquer outra coisa. Quero criar um sistema de loguin e dar permissão para apenas quem tiver o "rank 2" será considerado um adm e poderá postar.
      Nesse campo de postagem, terá apenas os campos de:
      Titulo
      Imagem (thumbnail)
      Link da página  (pois será um post clicavel, como um cardbox que ira redirecionar o visitante para a página destinada apenas àquele  conteudo) 
      Descrição 
      Apenas  isso
      Então, eu estou estudando PHP, no início ainda, mas é possivel eu criar tal ferramente em quanto tempo em média com a experiência que vocês ja possuem? 
      E outra, qual caminho devo seguir? Quero apenas criar o gerenciador de conteudo e sistema de loguin, tem algum "caminho" que eu deva seguir? Tenho que focar mais em x area para atingir o que eu quero e nao focar em y area, pois será perda de tempo? Como eu disse, quero apenas criar isso, e futuramente me aprofundar mais
      Então, possui alguma dica, orientação, link ou qualquer coisa que possa me ajudar a pelo menos ver qual caminho seguir, levando em conta que estou estudando por conta propria e nao tenho quem me orientar? Obrigado 
    • By vinihhylian0103
      Olá, Boa Noite.
      Estou usando o Iframe pra exibir meu form de login na minha página central, porém, quando eu clico no botão login, o profile parece somente no iframe, teria como eu fazer o profile ser redirecionado  na página principal.
       
      Segue o código:
        <div class="modal fade" id="modalLRFormDemo2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">     <div class="modal-dialog cascading-modal" role="document">       <!--Content-->       <div class="modal-content">                            <iframe marginwidth="50" height="500px" width="500px" src="CADASTROS_LOGINS\LOGIN\index.html"> Seu navegador não suporta frames )= </iframe>                 <center><button type="button" class="btn btn-outline-info waves-effect ml-auto" data-dismiss="modal">Fechar</button></center>                 <br>               </div>             </div>             <!--/.Panel 8-->           </div>         </div>       </div>  
    • By Anderson Maciel
      Boa tarde pessoal,

      Estou quebrando a cabeça para resolver um problema, tenho uma div dinâmica que carrega uma <table> em uma das colunas deveria apresentar o componente Switchery, esta <table> é montada a partir de uma função PHP que faz o select em uma tabela do banco de dados conforme abaixo:
       
      echo '<table class="table table-hover"> <thead> <tr> <th>Nome</th> <th>Agrupamento</th> <th>Ativo</th> </tr> </thead> <tbody>'; foreach($data as $row) { If ($row['ativo'] == 1) { $vativochk = "checked"; } else { $vativochk = ""; } echo '<tr> <td>'.$row['nome'].'</td> <td>'.$row['agrupamento'].'</td> <td><input type="checkbox" name="ativo_grid" class="js-switch" '.$vativochk.' disabled="disabled"></td> </tr>'; } echo '</tbody> </table>'; Aqui está o Ajax que chama e retorna atualizando a DIV:
       
      function atualiza_grid_graficos() { $.ajax({ type: "POST", url: "hubfuncind.php", data: { id_tabindicadores_paineis: $('#id_tabindicadores_paineis').val(), acao: "gridgraficos" }, success: function(data) { $('#conteudo').html(data); } }); } O retorno vem certinho, mas apenas o componente Switchery está vindo desconfigurado, ou seja vem um checkbox normal (html).

      O que é mais incrível é que neste mesmo formulário mais acima tenho este mesmo componente funcionando normalmente, somente dentro da DIV dinâmica é que fica desconfigurado conforme imagem anexa.

      Será que alguém já passou por isso?

    • By egalauber
      Preciso descobrir qual é o nome do arquivo com a extensão.
      Só sei o início do nome:
       
      pasta "anexos".
      nome_do_arquivo_DAQUI_PRA_FRENTE_NAO_SEI_O_RESTO_DO_NOME_NEM_A_EXTENSAO
       
      Com a função glob eu consigo achar o arquivo, mas o nome completo ainda não.
       
       
      $verifica = glob("anexos/nome_do_arquivo_*");
      if($verifica == true){
         // achei o arquivo e agora preciso pegar o nome completo e a extensão
      } else {
            echo "Arquivo não encontrado";
         }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.