Solicitar senha ou captcha para excluir um registro
03/05/2016
0
Se alguém tiver uma alternativa que fosse mais segura. Seria melhor que antes ele solicitasse a senha do usuário para confirmar a exclusão, um CAPTCHA também poderia ser.
No momento ele tem um js assim.
<script language="JavaScript">
function pergunta()
{
if (confirm('Você tem certeza que deseja realmente excluir este cliente do sistema?')) { return true }
else { return false }
}
</script>
E no input assim:
<td width="5%" align="center"><a href="?Excluir=ok&id=<?=$coluna[id_cliente]?>" onClick="return pergunta();"><img src="imagens/deletar.png" alt="Excluir" border="0"></a></td>
Está bem simples e funciona, porém com pouca segurança para um descuido.
Livia Sampaio
Posts
03/05/2016
William
Usuário reclama de tudo, até da mensagem de confirmação, eles falam que demora muito quando precisam excluir vários registros rs
03/05/2016
Livia Sampaio
03/05/2016
Marlon Gera
Grato.
03/05/2016
William
A partir disso sempre que for solicitada uma exclusão seria verificado essa session, caso vazia solicita a senha novamente senão excluí direto.
Mas como falei isso pode ser feito de diversas formas.
03/05/2016
Marcio Araujo
É bem assim mesmo William, Livia, eu usaria o captcha.
03/05/2016
Livia Sampaio
03/05/2016
William
A partir disso sempre que for solicitada uma exclusão seria verificado essa session, caso vazia solicita a senha novamente senão excluí direto.
Mas como falei isso pode ser feito de diversas formas.
03/05/2016
Marlon Gera
<?php if(isset($_POST['submit'])){ echo "<div style='width: 400px; height: 400px; z-index: 9999;'>"; echo "<form method='post'>"; echo "<input type='text' name='confirmasenha'>"; echo "<input type='submit' name='submitconfirm' value='Excluir'>"; echo "</form>"; echo "</div>"; } if(isset($_POST['submitconfirm'])){ $sql_compara_senha = $query_compara_senha = $PDO->prepare($sql_compara_senha); $query_compara_senha->execute(); if($sql_compara_senha === $_POST['confirmasenha'){ $sql_delete = $query = $PDO->prepare($sql_delete); $query->execute(); } } ?> <form method="post"> <input type="text" name="dadodb" disabled value="dados"> <input type="submit" name="submit" value="deletar"> </form>
03/05/2016
Marlon Gera
A partir disso sempre que for solicitada uma exclusão seria verificado essa session, caso vazia solicita a senha novamente senão excluí direto.
Mas como falei isso pode ser feito de diversas formas.
Wiliam desculpa postar aqui mais teria como você me dar uma ajuda nesto topico?
https://www.devmedia.com.br/forum/form-dentro-de-uma-pagina-com-requisicao-load/553014
03/05/2016
Jothaz
É bem assim mesmo William, Livia, eu usaria o captcha.
Acho que vocês estão viajando, captcha não é para esta finalidade. Deve ser utilizada para garantir que quem esta enviando a solicitação é um humano e não uma máquina. Assim quando você vai fazer um inscrição no site, enviar um proposta ou qualquer solicitação ao digitar um captcha você garante que é um pessoa que faz a solicitação e não uma máquina. É usada principalmente para evitar ataques de negação de serviço.
Qualquer sistema seja complexo ou simples é feito para facilitar a vida do usuário e prover produtividade ao processo. Exigir captcha para excluir um registro não é prático e certamente o usuário irá reclamar. E se o usuário não usar o sistema a merda esta feita, não tem como obrigá-lo. Por incrível que pareça isto acontece muito. O analista sem o menor conhecimento criam um sistema com péssima usabilidade e simplesmente os usuários não usam. O segredo é justamente conquistar os usuários.
Não é possível criar sistema que fique de baba do usuário, se o usuário excluir um registro indevidamente ele que assuma a responsabilidade. Nenhum sistema do mundo é a prova de idiotices.
Claro que sempre é bom ficar atento as deleções em cacatas, pois ai sim pode-se fazer um grande merda na base, fora isto o processo deve ser simples.
Eu particularmente não uso exclusão física de registros, prefiro o conceito de exclusão lógica. Que seria criar um campo Ativo na tabela e marcá-lo como True ou False (quando excluir), criando o conceito de ativo e inativo. Assim você garante o histórico, pois um cliente pode já ter feito compras ou outras operações e garante a coesão da base, pois evita que se possa matar registros com intuito de burlar o sistema.
Não acho que um sistema que permita excluir um cliente seja seguro, se foi cadastrado algum dado errado é só alterar e se o cliente não vá ser usado é melhor inativá-lo.
Agora se quer mesmo permitir exclusão a dica é colocar uma mensagem clara "Quer mesmo excluir definitivamente este registro. Esta operação não poderá ser revertida e blablablabla". Nunca coloque o Ok como default e se possível abra um modal.
Só ressalto que a considerações acima são para que pretende se profissionalizar, criar aplicações robusta e para empresas de médio e grande porte. Se for somente hobby e criar aplicações amadoras, para micro empresas (apesar de conhecer micro empresas que prezam pela qualidade) podem desconsiderá-las.
03/05/2016
William
03/05/2016
Jothaz
William (Devwilliam) você é um dos participantes do fórum que mais admiro pela experiência e conhecimento, basta ver seu blog, nem sou fã de PHP, mas sempre dou uma passada por lá para ficar atualizado.
Sua resposta foi assertiva, como sempre e minhas considerações tiveram como intuito completar o que foi exposto.
Concordo que requisito são "vivos", mutáveis e podem contemplar uma gama de situações. Mas ai justamente cabe a quem vai projetar/desenvolver refiná-los.
Na minha humilde opinião, mais que codificar precisamos mostrar para os iniciantes como pensar, se portar diante do cliente, acima de tudo desenvolver um senso crítico e utilizar boa práticas.
Trabalhei em centenas de projetos dos mais variados possíveis e já tive que refazer muitos projetos simplesmente por motivos como você citou: demora, burocracia ou simplesmente que implementa não teve conhecimento ou procurou entender o processo.
Só para ilustrar já algum tempo tempo evitado retornar um número demasiado de mensagens se necessidade, principalmente mensagens de sucesso. Só exibo se for necessário. Incluiu um registro e deu tudo certo, não acho que é necessário exibir uma mensagem avisando que foi incluído, só atrasa. Agora se der erro ai sim a mensagem faz sentido. E decidi isto após várias reclamações de usuários que no dia a dia e na correria não tem muito tempo.
Mas quero ressaltar que o não tenho a pretensão de é cagar regras, pois cabe ao dono do projeto decidir o que usar.
Clique aqui para fazer login e interagir na Comunidade :)