INSERT PHP - Versão de Impressão +- Forum Pplware (http://forum.pplware.com) +-- Fórum: Mais Tech (/forumdisplay.php?fid=11) +--- Fórum: Programação e Web (/forumdisplay.php?fid=16) +--- Tópico: INSERT PHP (/showthread.php?tid=21682) |
INSERT PHP - joaonunofz - 18-10-2015 16:11 Boa tarde,criei um forum que mostra todos os posts do utilizador com sessao iniciada. cada post tem um "editar" correspondente ao id da publicação o qual posso editar esse mesmo post num form fazendo um update (em que se vier um id pelo url, mostra o botao "editar")... . Caso eu queira inserir um novo post, basta clicar num botao para criar um novo post, o qual me mela para o mesmo form,onde verifico se nao vier nu«enhum id pela url, os campos desse form ficam vazios, a espera de serem preenchidos para eu fazer um insert......porem QUANDO TENTO FAZER O INSERT, NENHUM NOVO POST É INSERIDO.....SOMENTE O UPDATE FUNCIONA......ALGUEM PODE VER SE O MEU SCRIPT DE INSERT TEM ALGUMA FALHA POR FAVOR? <?php include 'base_dados/ligacao_bd.php'; session_start(); //se nao houver nenhuma sessão... if(!isset($_SESSION['nome_utilizador'])) { include 'cabecalho.php'; echo '<div class="erro"> nao tem autorização para ver esta pagina. <br> <br> <a href="index.php">retroceder</a> </div>'; include 'rodape.php'; exit;//muito importante este EXIT; pois ja nao deixa executar nada mais abaixo } //----------------------------------------------------------------------- include 'cabecalho.php'; //apresentar o utilizador logado $mostrar_utilizador = $ligacao->query("SELECT * FROM utilizadores WHERE nome_utilizador = '".$_SESSION['nome_utilizador']."' "); $mostrar = mysqli_fetch_array($mostrar_utilizador); echo '<div class="dados_utilizador"> <img src="imagens/avatares/'.$mostrar['avatar'].'" title="foto de perfil de '.$_SESSION['nome_utilizador'].'" ><span>'.$_SESSION['nome_utilizador'].'</span> | <a href="logout.php">sair</a> </div> <hr>'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Editor publicação</title> </head> <body> <?php $id_publicacao = @$_GET['id_publicacao']; $titulo = ""; $mensagem = ""; if(isset($_GET['id_publicacao']))//se vier um id pela url... { //vai buscar os dados da publicação á base dados correspondente a esse id_publicacao e mostra-os! $buscar_dados = $ligacao->query("SELECT * FROM publicacoes WHERE id_publicacao = ".$id_publicacao." "); $mostrar = mysqli_fetch_array($buscar_dados); $titulo = $mostrar['titulo']; $mensagem = $mostrar['mensagem']; } elseif (isset($_POST['botao_editar'])) { $alterar = $ligacao->query("UPDATE publicacoes SET titulo = '".$_REQUEST['text_titulo']."' , mensagem = '".$_REQUEST['text_mensagem']."' WHERE id_publicacao = '".$id_publicacao."' ")or die(mysql_error()); } elseif (isset($_POST['botao_gravar'])) { $titulo = $_POST['text_titulo']; $mensagem = $_POST['text_mensagem']; $inserir = $ligacao->query("INSERT INTO publicacoes(id_utilizador,titulo,mensagem,data) VALUES('".$_SESSION['id_utilizador']."','$titulo','$mensagem','NOW()' ) WHERE id_utilizador = '".$_SESSION['id_utilizador']."' ")or die(mysql_error()); } ?> <!--formulario para criar/editar publicação--> <form class="form_publicacao" method="post" action="?"> <h3>publicação</h3> <hr /> <br /> <label for="title">Titulo</label> <br /> <input type="text" id="title" name="text_titulo" size="50" value="<?php echo $titulo ?>" /> <br /> <br /> <label for="msg">Mensagem</label> <br /> <textarea id="msg" name="text_mensagem" rows="10" cols="97"><?php echo $mensagem ?></textarea> <br /> <br /> <input type="hidden" name="id_utilizador" value="<?php echo $_SESSION['id_utilizador'] ?>" /> <input type="hidden" name="id_publicacao" value="<?php echo $id_publicacao ?>" /> <?php if(isset($_GET['id_publicacao'])) { ?> <input type="submit" name="botao_editar" value="editar" /> <?php } else { ?> <input type="submit" name="botao_gravar" value="gravar" /> <?php } ?> </form> </body> </html> BASE DADOS (PUBLICACOES): ID_PUBLICACAO ID_UTILIZADOR TITULO MENSAGEM DATA RE: INSERT PHP - eSkiSo - 19-10-2015 18:49 O teu problema parece estar no facto de no query de insert teres Código: WHERE id_utilizador = '".$_SESSION['id_utilizador']." Retira isso e já deve dar. RE: INSERT PHP - treliator - 24-10-2015 22:53 Concordo. Sem dúvida que passar por parametro o utilizador verdadeiro é sempre uma falha grave de segurança. Nesse caso facilmente de descobre, vendo o código fonte HTML, que colocando o parametro id_utilizador é passado e facilmente podem tentar colocar por tentativas diferentes [font=Verdana, Arial, sans-serif]id_utilizador no endereço para descobrir acertar num e entar.[/font] RE: INSERT PHP - Dokinhas - 10-11-2015 11:00 O que influencia o mau funcionamento, ou o NÃo funcionamento da query, não é o facto de estares a passar o parametro dentro da query(apesar de ser fortemente desaconselhado) não iria prejudicar a query, o que não funciona é teres a clausula WHERE num INSERT. Iria funcionar se estivesses a fazer um UPDATE, mas como não é o caso, basta retirares essa última parte da Query. |