1
I wanted that when the users went to register, if they informed an existing email or enrollment in the bank give a message and it was forbidden to register in the system, in the code below it continues to register the user even with the email fields and matricula already existing in the database.
<?php
include("includes/conexao.php");//conexão com o banco
if(isset($_POST["registrar"])) {
//Busca no banco a quantidade de usuarios que tenham a mesma matricula OU o mesmo email
$querySelect = "SELECT count(*) total FROM usuarios WHERE matricula = {$_POST['matricula']} or email = {$_POST['email']}";
//prepara a query
$statement = $connection->prepare($querySelect);
//executar o comando sql
$result = $statement->execute();
//juntar todos os resultados do select em um vetor de arrays
$result = $statement->fetch(PDO::FETCH_ASSOC);
//Verificase o valor retornado é 0 (Nenhum usuário igual cadastrado)
if($result['total'] == 0){
$senha = $_POST['senha'];
$confirma_senha = $_POST['confirma_senha'];
if (empty($senha)) {
$mensagem = "<span class='aviso'><b>Aviso</b>: Senha não foi alterada!</span>";
} else if ($senha == $confirma_senha) {
$query = "INSERT INTO usuario (nome, sobrenome, matricula, email, senha)
VALUES (:nome, :sobrenome, :matricula, :email, :senha)";
$statement = $connection->prepare($query);
$valores = array();
$valores[':nome'] = (isset($_POST['primeiroNome']) ? $_POST['primeiroNome'] : '');
$valores[':sobrenome'] = (isset($_POST['sobrenome']) ? $_POST['sobrenome'] : '');
$valores[':matricula'] = (isset($_POST['matricula']) ? $_POST['matricula'] : '');
$valores[':email'] = (isset($_POST['email']) ? $_POST['email'] : '');
$valores[':senha'] = (isset($_POST['senha']) ? $_POST['senha'] : '');
$result = $statement->execute($valores);
if(!empty($result)){
$mensagem = "<span class='aviso'><b>Sucesso</b>: deu certo!</span>";
}
} else {
$mensagem = "<span class='aviso'><b>Aviso</b>: Senha e repetir senha são diferentes!</span>";
}
}else{
$mensagem = "<span class='aviso'><b>Erro</b>: Email ou matricula ja cadastrado!</span>";
}
}
?>
In case you want to check my application.
<form method="POST" action="registro.php" onsubmit="return validarSenha()"name="formulario">
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<label for="primeiroNome">Primeiro nome</label>
<input type="text" class="form-control" id="primeiroNome" name="primeiroNome" placeholder="Digite seu primeiro nome" required="required">
</div>
<div class="col-md-6">
<label for="Sobrenome">Sobrenome</label>
<input type="text" class="form-control" id="Sobrenome" name="sobrenome" placeholder="Digite seu Sobrenome" required="required" autofocus="autofocus">
</div>
</div>
</div>
<div class="col-md-6" id="matricula">
<label for="primeiroNome">Matrícula</label>
<input type="text" class="form-control" name="matricula" placeholder="Digite sua matrícula" required="required" autofocus="autofocus">
</div>
<div class="form-group">
<label for="email">E-mail</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Digite seu email" required="required" autofocus="autofocus">
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<label for="senha">Senha</label>
<input type="password" class="form-control" id="senha" name="senha" placeholder="Digite sua senha" required="required" autofocus="autofocus">
</div>
<div class="col-md-6">
<label for="confirma_senha">confirmar senha</label>
<input type="password" class="form-control" id="confirmaSenha" name="confirma_senha" placeholder="Confirme sua senha" required="required" autofocus="autofocus">
</div>
</div>
</div>
<div>
<input type="submit" class="btn btn-primary btn-block" name="registrar" value="Registra-se"/>
</div>
<div class="text-center">
<a href="#" class="d-block small mt-3">Esqueceu sua senha?</a>
<a href="login.php" class="d-block small mt-3">Login?</a>
</div>
</form>
Warning: Count(): Parameter must be an array or an Object that Implements Countable in C: xampp htdocs nsi registro.php on line 20
– Paulo Victor
Then do without Count in sql and use the in a Rows like : $querySelect = "SELECT * FROM usuarios WHERE matricula = {$_POST['matricula']} or email = {$_POST['email']}"; then $result = $statement->execute(); $result = $result->fetchColumn()
– Gilmar Alonso