Joaquim Venancio Posted April 19, 2022 at 02:06 PM Report Share #625797 Posted April 19, 2022 at 02:06 PM (edited) Boa tarde. Venho por este meio pedir a vossa ajuda na correção do código que posto a baixo. Esse código deveria fazer o registo de novos utilizadores, mas sempre mostra um erro. Creio que o problema esteja nos "Inputs", mas não estou a conseguir resolver. <?php require_once("bootstrap.php"); ?> <!DOCTYPE html> <html> <head> <title>Registrar PHP</title> </head> <body> <h2>Registrar</h2> <form action="" method="post"> Nome Completo <input name="nome" type="text" placeholder="Ex: André Silva" required><br> E-mail <input name="email" type="email" placeholder= "E-mail" required><br> Senha <input name="senhal" type="password" placeholder="6 ou mais digitos" autocomplete="off" required><br> Repita senha <input name="senha2" type="password" placeholder="Confirme sua senha" autocomplete="off" required><br> <input type="checkbox" required="" name="termos">Eu li e aceito os Termos de Serviço<br> <input type="submit" class="btn btn-block mt-lg btn-default"><b>Cadastrar</b></button> </form> </body> </html> <?php if($_POST){ date_default_timezone_set('Portugal'); $nome = $_POST['nome']; $nome=htmlspecialchars($nome,ENT_QUOTES); $email = $_POST['email']; $email=htmlspecialchars($email,ENT_QUOTES); $termos = $_POST['termos']; $termos=htmlspecialchars($termos,ENT_QUOTES); $senha1 = $_POST['senha1']; $senha1=htmlspecialchars($senha1,ENT_QUOTES); $senha2 = $_POST['senha2']; $senha2=htmlspecialchars($senha2,ENT_QUOTES); $senhacrip = hash('sha256', $senha2); $data = date("Y-m-d H:i:s"); $ip = $_SERVER['REMOTE_ADDR']; if(empty($email)){ echo "<script>window.alert('Digite o e-mail');</script>"; echo "<meta http-equiv='refresh' content='0;'>"; return false; } $veric = mysqli_query($conn, "SELECT * FROM users WHERE email='$email'"); $verifc = mysqli_num_rows($veric); if ($verifc == true) { echo "<script>window.alert('Você jà cadastrou!');</script>"; echo "<meta http-equiv='refresh' content='0;'>"; return false; } if (empty($termos)) { echo "<script>window.alert('Concorde com os termos!');</script>"; echo "<meta http-equiv='refresh' content='0;'>"; return false; } if (empty($senha1)) { //Verificar senha. echo "<script>window.alert('Digite uma senha!');window.history.go(-1);</script>"; return false; } if (empty($senha2)) { //Verificar confirmar senha. echo "<script>window.alert('Confirme sua senha!');window.history.go(-1);</script>"; return false; } if (strlen($senha1) < 6){ echo "<script>window.alert('Sua senha deve conter no minimo 6 digitos!');window.history.go(-1);</script>"; return false; } if ($senha1 != $senha2) { echo "<script>window.alert('Senhas Difrentes!');</script>"; echo "<meta http-equiv='refresh' content='0;'>"; return false; } echo "<meta http-equiv='refresh' content='0;registrar.php?q=true'>"; /////////////// Gravando /////////////// $sql1=mysqli_query ($conn,"INSERT INTO users (nome, email, senha, data) VALUES ('$nome', '$email', '$senhacrip', '$data')"); } ?> </body> </html> Agradeço desde já toda a ajuda que me possam dar. Edited April 19, 2022 at 03:56 PM by Joaquim Venancio Adicionar Imagem com o erro. Link to comment Share on other sites More sharing options...
tiago.f Posted April 19, 2022 at 02:09 PM Report Share #625798 Posted April 19, 2022 at 02:09 PM Olá, não vejo nenhum javascript nesse código. Sugiro: - colocares a questão no forum correcto (php) - colocares também o erro que dá Boa sorte! Link to comment Share on other sites More sharing options...
Joaquim Venancio Posted April 19, 2022 at 03:46 PM Author Report Share #625799 Posted April 19, 2022 at 03:46 PM 1 hora atrás, tiago.f disse: Olá, não vejo nenhum javascript nesse código. Sugiro: - colocares a questão no forum correcto (php) - colocares também o erro que dá Boa sorte! Tem razão, enganei-me no local onde criar o tópico. Vou esperar que o Staff do forum movam o tópico para a aba correta, para não andar a criar tópicos repetidos. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 19, 2022 at 05:57 PM Report Share #625801 Posted April 19, 2022 at 05:57 PM fica a nota também que o erro deverá estar relacionado com a falha de ligação à base de dados testa a ligação e visualiza o erro após a criação da ligação IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Ivo Vicente Posted April 19, 2022 at 10:04 PM Report Share #625804 Posted April 19, 2022 at 10:04 PM Assumindo que o include do bootstrap.php define a variável $conn para ligar à base de dados, o resultado do query é false, logo vazio. Para evitar o erro deves testar o resultado do query <?php $query = "SELECT * FROM users WHERE email='{$email}'"; // var_dump($query) $veric = mysqli_query($conn, $query); if(!$veric){ // Quando o resultado do query é false/vazio qual é a acção? return false; } // Se tiver um dataset de dados, o mysqli_num_rows vai estar disponivel $verifc = mysqli_num_rows($veric); Em todo o caso, podes sempre usar um var_dump/echo/print_r para veres se o email está correto na construção do query como deixei no exemplo em cima Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Joaquim Venancio Posted April 19, 2022 at 11:06 PM Author Report Share #625806 Posted April 19, 2022 at 11:06 PM 54 minutos atrás, Ivo Vicente disse: Assumindo que o include do bootstrap.php define a variável $conn para ligar à base de dados, o resultado do query é false, logo vazio. Para evitar o erro deves testar o resultado do query <?php $query = "SELECT * FROM users WHERE email='{$email}'"; // var_dump($query) $veric = mysqli_query($conn, $query); if(!$veric){ // Quando o resultado do query é false/vazio qual é a acção? return false; } // Se tiver um dataset de dados, o mysqli_num_rows vai estar disponivel $verifc = mysqli_num_rows($veric); Em todo o caso, podes sempre usar um var_dump/echo/print_r para veres se o email está correto na construção do query como deixei no exemplo em cima O código do "bootstrap.php" é o seguinte; <?php require_once("include/banco.php"); ?> E o código do "banco.php" é o seguinte; <?php $conn = mysqli_connect('localhost','root','', 'webnerdpt'); ?> OBS; Comecei a pouco a estudar programação em um curso na Hackersec. Link to comment Share on other sites More sharing options...
Ivo Vicente Posted April 20, 2022 at 09:46 AM Report Share #625808 Posted April 20, 2022 at 09:46 AM Ótimo, importante é começar e compreender os fundamentos. A solução de testar o resultado que sugeri funcionou? Fizeste o teste da query no SQL para ver se estava bem escrita? Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Joaquim Venancio Posted April 20, 2022 at 06:42 PM Author Report Share #625811 Posted April 20, 2022 at 06:42 PM 20 horas atrás, Ivo Vicente disse: Assumindo que o include do bootstrap.php define a variável $conn para ligar à base de dados, o resultado do query é false, logo vazio. Para evitar o erro deves testar o resultado do query <?php $query = "SELECT * FROM users WHERE email='{$email}'"; // var_dump($query) $veric = mysqli_query($conn, $query); if(!$veric){ // Quando o resultado do query é false/vazio qual é a acção? return false; } // Se tiver um dataset de dados, o mysqli_num_rows vai estar disponivel $verifc = mysqli_num_rows($veric); Em todo o caso, podes sempre usar um var_dump/echo/print_r para veres se o email está correto na construção do query como deixei no exemplo em cima Esse código devo adiciona-lo ao ficheiro "registrar.php" que me da o erro? Em qualquer zona? Link to comment Share on other sites More sharing options...
Ivo Vicente Posted April 20, 2022 at 08:37 PM Report Share #625813 Posted April 20, 2022 at 08:37 PM Sim, eu usei o teu código como base para a minha sugestão. Até tem as mesmas variáveis. Importa ver se o SQL está correto, porque só assim irá continuar o processo Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Joaquim Venancio Posted April 20, 2022 at 10:20 PM Author Report Share #625814 Posted April 20, 2022 at 10:20 PM 1 hora atrás, Ivo Vicente disse: Sim, eu usei o teu código como base para a minha sugestão. Até tem as mesmas variáveis. Importa ver se o SQL está correto, porque só assim irá continuar o processo Adicionei o seu código e criei o novo registo. Desta vez não me mostra nenhuma mensagem de erro, mas ao analisar a tabela de usuários no phpMyAdmin continuo sem o novo usuário. OBS; Estou a trabalhar com o Xamp. Link to comment Share on other sites More sharing options...
Ivo Vicente Posted April 20, 2022 at 10:53 PM Report Share #625815 Posted April 20, 2022 at 10:53 PM (edited) Já compreendi. Então tens que remover o código que adicionei porque assim está com o return a sair do processo não chega o procedimento de gravar. Basta removeres o if de validação da minha sugestão, assim como remover a linha $verifc = mysqli_num_rows($veric); Porque logo a baixo já estás a fazer a validação para emitirem a notificação. Observação, não sei onde estás a fazer formação, mas é melhor prática os errors serem gravados num array, e mostrados na página como um simples div em vez de encher o utilizador de alertas de JavaScript. Boa continuação no meio do código 😉 Edited April 20, 2022 at 10:54 PM by Ivo Vicente Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now