Olá, sou novo no fórum e não consegui encontrar resposta para minha dúvida.
Estou aprendendo PHP OO e minha dúvida é a seguinte.
Tenho a seguinte classe (a função principal aqui é a de "adicionar" e a de "existeEmail":
<?php
include_once '../conection/config.php';
class Usuarios{
private $pdo;
private $id;
private $permissoes;
public function __construct($pdo){
$this->pdo = $pdo;
}
public function fazerlogin($email, $senha){
$sql = "SELECT * FROM usuarios WHERE email = :email AND senha = :senha";
$sql = $this->pdo->prepare($sql);
$sql->bindValue(":email",$email);
$sql->bindValue(":senha",$senha);
$sql->execute();
if($sql->rowCount() > 0){
$sql = $sql->fetch();
$_SESSION['logado'] = $sql['id'];
return true;
}
else {
return false;
}
}
public function adicionar($email, $senha = ''){
//verificar se o e-mail já está cadastrado
if ($this->existeEmail($email)==false) {
$sql = "INSERT INTO usuarios (email, senha) VALUES (:email, :senha)";
$sql = $this->pdo->prepare($sql);
$sql->bindValue(':email', $email);
$sql->bindValue(':senha', $senha);
$sql->execute();
return true;
} else {
return false;
$msg = 'Email já cadastrado';
}
}
public function setUsuario($id){
$this->id = $id;
$sql = "SELECT * FROM usuarios WHERE id = :id";
$sql = $this->pdo->prepare($sql);
$sql->bindValue(":id",$id);
$sql->execute();
if($sql->rowCount() > 0){
$sql = $sql->fetch();
$this->permissoes = explode(',', $sql['permissoes']);
}
}
public function getPermissoes(){
return $this->permissoes;
}
public function temPermissao($p){
if (in_array($p, $this->permissoes)) {
return true;
} else {
return false;
}
}
//função auxiliar criada para verificar se existe o email cadastrdo
private function existeEmail($email){
$sql = "SELECT * FROM usuarios WHERE email = :email";
$sql = $this->pdo->prepare($sql);
$sql->bindValue(':email', $email);
$sql->execute();
if ($sql->rowCount() > 0) {
return true;
} else {
return false;
}
}
}
?>
Tenho o arquivo "insertUser.php" que de acordo com a classe Usuarios faz a inserção dos dados e em seguida retornar para a página de cadastro de usuários
<?php
session_start();
require '../conection/config.php';
require '../classes/usuarios.class.php';
if(!isset($_SESSION['logado'])){
header("Location:pages/login.php");
exit;
}
$usuarios = new Usuarios($pdo);
$usuarios->setUsuario($_SESSION['logado']);
//verifica se houve o recebimento dos dados
if (!empty($_POST['email'])) {
//se houve o recebimento dos dados adiciona em variáveis
$email = $_POST['email'];
$senha = $_POST['senha'];
//utiliza a classe criada para adicionar
$usuarios->adicionar($email, $senha);
header("Location: cadUsuarios.php");
}
E a página de cadastro de usuários:
<?php
session_start();
require '../conection/config.php';
require '../classes/usuarios.class.php';
if(!isset($_SESSION['logado'])){
header("Location:pages/login.php");
exit;
}
$usuarios = new Usuarios($pdo);
$usuarios->setUsuario($_SESSION['logado']);
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
</head>
<body>
<h1 class="page-header">Cadastrar Usuário</h1>
<form method="POST" action="insertUser.php" role="form">
<div class="form-group">
<label>Email do usuário</label>
<input type="email" name="email" class="form-control">
</div>
<div class="form-group">
<label>Senha</label>
<input type="password" name="senha" class="form-control">
</div>
<input type="submit" value="Cadastrar" class="btn btn-primary" style="margin-bottom: 20px">
</form>
</body>
</html>
Como faço pra inserir mensagem de alerta informando quando o usuário foi cadastrado ou quando o usuário já existe, no caso a validação é pelo e-mail.
Como a validação é feita pela função que verifica se o e-mail já está cadastrado, não estou conseguindo inserir a mensagem de alerta, creio que seja no arquivo de insertUser, mas não estou conseguindo fazer.
Alguém pode me ajudar?