Carcleo 4 Denunciar post Postado Novembro 1, 2011 Pessoal. pode até parecer bobeira. Mas estou com duvida : Tenhoo código: <? if($_GET['acao']=="listar") { $data_emissao_ini=datasql($_POST['data_emissao_ini']); $data_emissao_final=datasql($_POST['data_emissao_final']); $data_entrada_ini=datasql($_POST['data_entrada_ini']); $data_entrada_final=datasql($_POST['data_entrada_final']); $fornecedor = $_POST['fornecedor']; $cliente = $_POST['cliente']; if(!$busca) { if(isset($data_emissao_ini)) { $busca = "WHERE notas.data_emissao between '$data_emissao_ini' and '$data_emissao_final'"; $order = "order by notas.data_emissao"; } elseif(isset($data_entrada_ini)) { $busca = "WHERE notas.data_emissao between '$data_entrada_ini' and '$data_entrada_final'"; $order = "order by notas.data_entrada"; } elseif(isset($fornecedor)) { $busca = "WHERE notas.id_fornecedor=$fornecedor"; $order = "order by notas.num_nota"; } elseif(isset($cliente)) { $busca = "WHERE notas.id_cliente=$cliente"; $order = "order by notas.num_nota"; } else { $busca = ""; $order = "order by notas.num_nota"; } } else { $busca=$_GET['busca']; } ... O formulario esta disparando os field via post <form id="pesquisas" name="pesquisas" method="post" action="?acao=listar"> Acontece, que se eu fizer: ?acao=listar&forncedor=1 via barra de endereços, mesmo o envio e recepçao estando sendo enviados e recebidos via post, enviando via barra de enderços via browser (Get) sobrepoe o post. Como corrijo isso? Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Novembro 1, 2011 acha mesmo q isso vai dar certo? primeiro ou eh get ou eh post if($_GET['acao']=="listar") { $data_emissao_ini=datasql($_POST['data_emissao_ini']); 2 tipos de requisicoes numa unica requisicao, eh ilogico... isto nunca vai dar certo... Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Novembro 1, 2011 Coloca no seu formulário um campo hidden com o nome 'ação' e o valor por padrão 'listar', <input type="hidden" name="acao" value="listar" /> troque: if($_GET['acao']=="listar") por: if($_POST['acao']=="listar") isso aqui também <form id="pesquisas" name="pesquisas" method="post" action="?acao=listar"> Deixe assim: <form id="pesquisas" name="pesquisas" method="post"> Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Novembro 1, 2011 Do jeito do Andrey Knupp funcionou. Porem, um problema ainda persiste: Quando chego nessa parte do código: ... elseif(isset($fornecedor)) { $busca = "WHERE notas.id_fornecedor=$fornecedor"; $order = "order by notas.num_nota"; } elseif(isset($cliente)) { $busca = "WHERE notas.id_cliente=$cliente"; $order = "order by notas.num_nota"; } ... Mesmo que a pesquisa tenha enviado a variavel $cliente com valor e $fornecedor vazio, o comando else if faz com que a variavel $busca seja a do elseif caso o fornecedor e não caso o cliente. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Novembro 1, 2011 use a funcao empty http://br2.php.net/manual/pt_BR/function.empty.php Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Novembro 1, 2011 Assim deu certo. Só gostaria de saber se é seguro uma vez que se eu adicionar á url o envio por get de uma variavel, o sistema passa a mnostrar a pagia vazia (sem reultados) Form <form id="pesquisas" name="pesquisas" method="POST" action=""> <input type="hidden" name="acao" value="listar" /> ... Autenticação: <? if($_REQUEST['acao']=="listar") { $data_emissao_ini=datasql($_POST['data_emissao_ini']); $data_emissao_final=datasql($_POST['data_emissao_final']); $data_entrada_ini=datasql($_POST['data_entrada_ini']); $data_entrada_final=datasql($_POST['data_entrada_final']); $fornecedor = $_POST['fornecedor']; $cliente = $_POST['cliente']; if(!$busca) { if(!empty($data_emissao_ini)) { $busca = "WHERE notas.data_emissao between '$data_emissao_ini' and '$data_emissao_final'"; $order = "order by notas.data_emissao"; } elseif(!empty($data_entrada_ini)) { $busca = "WHERE notas.data_emissao between '$data_entrada_ini' and '$data_entrada_final'"; $order = "order by notas.data_entrada"; } elseif(!empty($fornecedor)) { $busca = "WHERE notas.id_fornecedor=$fornecedor"; $order = "order by notas.num_nota"; } elseif(!empty($cliente)) { $busca = "WHERE notas.id_cliente=$cliente"; $order = "order by notas.num_nota"; } else { $busca = ""; $order = "order by notas.num_nota"; } } else { $busca=$_GET['busca']; } ... Compartilhar este post Link para o post Compartilhar em outros sites
Leonardo™ 0 Denunciar post Postado Novembro 2, 2011 Carcleo quem disse para usar $_REQUEST? Se é enviado por POST verifique por esse método. <?php // short tags não são indiciadas pois dependem da configuração do servidor if ( $_POST['acao'] == 'listar' ) { $data_emissao_ini = datasql( $_POST['data_emissao_ini'] ); $data_emissao_final = datasql( $_POST['data_emissao_final'] ); $data_entrada_ini = datasql( $_POST['data_entrada_ini'] ); $data_entrada_final = datasql( $_POST['data_entrada_final'] ); $fornecedor = $_POST['fornecedor']; // Quer segurança? Verifique as entradas de usuário. SQL INJECTION, XSS.. $cliente = $_POST['cliente']; // Quer segurança? Verifique as entradas de usuáriio. SQL INJECTION, XSS.. // register_globals esta ativo? De onde virá $busca, NULL ? if( !$busca ) { if ( !empty( $data_emissao_ini ) ) { $busca = "WHERE notas.data_emissao between '$data_emissao_ini' and '$data_emissao_final'"; $order = "order by notas.data_emissao"; } elseif( !empty( $data_entrada_ini ) ) { $busca = "WHERE notas.data_emissao between '$data_entrada_ini' and '$data_entrada_final'"; $order = "order by notas.data_entrada"; }elseif( !empty( $fornecedo ) ) { $busca = "WHERE notas.id_fornecedor = '$fornecedor'"; $order = "order by notas.num_nota"; } elseif( !empty( $cliente ) ) { $busca = "WHERE notas.id_cliente=$cliente"; $order = "order by notas.num_nota"; } else { $busca = ""; $order = "order by notas.num_nota"; } } else { // Ou é por $_GET ou por $_POST tem que decidir rsrs. $busc = $_GET['busca']; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Novembro 3, 2011 <form id="pesquisas" name="pesquisas" method="post" action="?acao=listar"> if ($_SERVER['REQUEST_METHOD']=='POST' AND $_SERVER['QUERY_STRING']=='acao=listar') { .... Compartilhar este post Link para o post Compartilhar em outros sites