Jump to content
Madk

CRUD PHP OO com cadastro e nivel de acesso

Recommended Posts

O CODIGO ESTA NOS COMENTARIOS

Alguem poderia me ajudar, como eu posso por login na minha pagina index.php e cadastro na pagina cadastro.php, so que com um nivel de acesso, se a pessoa que logar for adm vai para a pagina indexadm.php, JA TENHO o CRUD feito e queria saber como por essa funcao de login, se puderem me ajudar agradeceria dms.

Share this post


Link to post
Share on other sites

Sobre o CRUD....

 

Sobre cadastro etc... Temos que saber o quanto você sabe sobre envio de formulários.

 

Enfim, na tabela que conterá os dados dos usuários pode-se possuir uma coluna por exemplo 'usuario_nivel' ela seria (int) e por padrão seu valor sempre será 0 "zero" ou 1. Isso depende do jeito que vai querer fazer.

 

Então no cadastro de qualquer pessoa (veja no guia que mostrei).

Você irá salvar os dados de login & senha desse usuário.

 

No login o que você faz é comparar os dados enviados do formulário "login e senha" com os dados do banco. Estando correto você cria por exemplo uma cessão "acesso" nela você armazena o valor da coluna usuario_nivel. Logo então redireciona o usuário para o index (pode ser) atualizando assim o conteúdo do website.

 

A questão sobre o nível de acesso, é restrito ao que aquele usuário logado pode ver baseado no nível da coluna que armazena seu nível. Vejamos....

 

<?php
if (isset($_SESSION['nivel'])) {
  // Quer dizer que a cessão nível existe então
  //qualquer usuário logado tem acesso a isso aqui
  //mesmo que o valor seja zero
  if ($_SESSION['nivel'] == 1) {
    // Quer dizer que se o nível for 1 o usuário tem acesso a isso.
  }
}

 

Digamos então que o nível do adm seja 3 e eu quero só mostrar algo para ele:

<?php
if (isset($_SESSION['nivel']) && $_SESSION['nivel'] == 3) {
  //.......

 

A manipulação é variada de diversas formas, depende do resultado a obter e por questões estéticas, mas a lógica é assim.

Share this post


Link to post
Share on other sites

Bom eu consegui um CRUD, e ja tenho minha index eu queria saber apenas como fazer uma funcao de login e cadastro com ele se você poder me ajudar agradeco muito mano. O usuario apos logar na index vai para uma pagina com o nome painel.php caso for adm ele vai para o indexadm.php que e aonde esta o CRUD.

Estou procurando a em muitos lugares e n consegui por o login, se você poder me ajudar.

 

Se quiser posso por o codigo do CRUD todo aqui

Classe  Usuarios.php

<?php

require_once 'Crud.php';

class Usuarios extends Crud{
	
	protected $table = 'usuarios';
	private $nome;
	private $email;
	private $senha;

	public function setNome($nome){
		$this->nome = $nome;
	}

	public function getNome(){
		return $this->nome;
	}

	public function setEmail($email){
		$this->email = $email;
	}

	public function setSenha($senha){
		$this->senha = $senha;
	}

	public function insert(){

		$sql  = "INSERT INTO $this->table (nome, email, senha) VALUES (:nome, :email, :senha)";
		$stmt = DB::prepare($sql);
		$stmt->bindParam(':nome', $this->nome);
		$stmt->bindParam(':email', $this->email);
		$stmt->bindParam(':senha', $this->senha);
		return $stmt->execute(); 

	}

	public function update($id){

		$sql  = "UPDATE $this->table SET nome = :nome, email = :email WHERE id = :id";
		$stmt = DB::prepare($sql);
		$stmt->bindParam(':nome', $this->nome);
		$stmt->bindParam(':email', $this->email);
		$stmt->bindParam(':id', $id);
		return $stmt->execute();

	}

}

 

Classe Crud.php

<?php

require_once 'DB.php';

abstract class Crud extends DB{

	protected $table;

	abstract public function insert();
	abstract public function update($id);

	public function find($id){
		$sql  = "SELECT * FROM $this->table WHERE id = :id";
		$stmt = DB::prepare($sql);
		$stmt->bindParam(':id', $id, PDO::PARAM_INT);
		$stmt->execute();
		return $stmt->fetch();
	}

	public function findAll(){
		$sql  = "SELECT * FROM $this->table";
		$stmt = DB::prepare($sql);
		$stmt->execute();
		return $stmt->fetchAll();
	}

	public function delete($id){
		$sql  = "DELETE FROM $this->table WHERE id = :id";
		$stmt = DB::prepare($sql);
		$stmt->bindParam(':id', $id, PDO::PARAM_INT);
		return $stmt->execute(); 
	}

}

Classe indexadm.php

<?php
	function __autoload($class_name){
		require_once 'classes/' . $class_name . '.php';
	}
?>

<!DOCTYPE HTML>
<html land="pt-BR">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1" />
   <title>Painel ADMIN</title>
  <meta name="description" content="PAINEL ADMIN" />
  <meta name="robots" content="indexadm, follow" />
   <link rel="stylesheet" href="css/bootstrap.css" />
  <link rel="stylesheet" />
  <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
   <![endif]-->
</head>
<body>

	<div class="container">

		<?php
	
		$usuario = new Usuarios();

		if(isset($_POST['cadastrar'])):

			$nome  = $_POST['nome'];
			$email = $_POST['email'];
			$senha = $_POST['senha'];

			$usuario->setNome($nome);
			$usuario->setEmail($email);
            $usuario->setSenha($senha);
			# Insert
			if($usuario->insert()){
				echo "Inserido com sucesso!";
			}

		endif;

		?>
		<header class="masthead">
			<nav class="navbar">
				<div class="navbar-inner">
			<h1 class="muted">Painel ADMIN</h1>
					<div class="container">
						<ul class="nav">
							<li class="active"><a href="indexadm.php">Página inicial</a></li>
						</ul>
					</div>
				</div>
			</nav>
		</header>

		<?php 
		if(isset($_POST['atualizar'])):

			$id = $_POST['id'];
			$nome = $_POST['nome'];
			$email = $_POST['email'];
			$senha = $_POST['senha'];

			$usuario->setNome($nome);
			$usuario->setEmail($email);
			$usuario->setSenha($senha);


			if($usuario->update($id)){
				echo "Atualizado com sucesso!";
			}

		endif;
		?>

		<?php
		if(isset($_GET['acao']) && $_GET['acao'] == 'deletar'):

			$id = (int)$_GET['id'];
			if($usuario->delete($id)){
				echo "Deletado com sucesso!";
			}

		endif;
		?>

		<?php
		if(isset($_GET['acao']) && $_GET['acao'] == 'editar'){

			$id = (int)$_GET['id'];
			$resultado = $usuario->find($id);
		?>

		<form method="post" action="">
			<div class="input-prepend">
				<span class="add-on"><i class="icon-user"></i></span>
				<input type="text" name="nome" value="<?php echo $resultado->nome; ?>" placeholder="Nome:" />
			</div>
			<div class="input-prepend">
				<span class="add-on"><i class="icon-envelope"></i></span>
				<input type="text" name="email" value="<?php echo $resultado->email; ?>" placeholder="E-mail:" />
			</div>
			<div class="input-prepend">
				<span class="add-on"><i class="icon-password"></i></span>
				<input type="password" name="senha" value="<?php echo $resultado->senha; ?>" placeholder="Senha:" />
			</div>
			<input type="hidden" name="id" value="<?php echo $resultado->id; ?>">
			<br />
			<input type="submit" name="atualizar" class="btn btn-primary" value="Atualizar dados">					
		</form>

		<?php }else{ ?>


		<form method="post" action="">
			<div class="input-prepend">
				<span class="add-on"><i class="icon-user"></i></span>
				<input type="text" name="nome" placeholder="Nome:" />
			</div>
			<div class="input-prepend">
				<span class="add-on"><i class="icon-envelope"></i></span>
				<input type="text" name="email" placeholder="E-mail:" />
			</div>
			<div class="input-prepend">
				<span class="add-on"><i class="icon-password"></i></span>
				<input type="password" name="senha" placeholder="Senha:" />
			</div>
			<br />
			<input type="submit" name="cadastrar" class="btn btn-primary" value="Cadastrar dados">					
		</form>

		<?php } ?>

		<table class="table table-hover">
			
			<thead>
				<tr>
					<th>#</th>
					<th>Nome:</th>
					<th>E-mail:</th>
					<th>Senha:</th>
					<th>Ações:</th>
				</tr>
			</thead>
			
			<?php foreach($usuario->findAll() as $key => $value): ?>

			<tbody>
				<tr>
					<td><?php echo $value->id; ?></td>
					<td><?php echo $value->nome; ?></td>
					<td><?php echo $value->email; ?></td>
					<td><?php echo $value->senha; ?></td>
					<td>
						<?php echo "<a href='indexadm.php?acao=editar&id=" . $value->id . "'>Editar</a>"; ?>
						<?php echo "<a href='indexadm.php?acao=deletar&id=" . $value->id . "' onclick='return confirm(\"Deseja realmente deletar?\")'>Deletar</a>"; ?>
					</td>
				</tr>
			</tbody>

			<?php endforeach; ?>

		</table>

	</div>

<script src="js/jQuery.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>

Classe de conexao.

 

config.php

<?php

define('DB_HOST', 'localhost');
define('DB_NAME', 'company');
define('DB_USER', 'root');
define('DB_PASS', '');

DB.php

<?php

require_once 'config.php';

class DB{

	private static $instance;

	public static function getInstance(){

		if(!isset(self::$instance)){

			try {
				self::$instance = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS);
				self::$instance->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
				self::$instance->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
			} catch (PDOException $e) {
				echo $e->getMessage();
			}

		}

		return self::$instance;
	}
 	
	public static function prepare($sql){
		return self::getInstance()->prepare($sql);
	}

}

Eu queria so por o login aqui na index.php

	   
<?php
session_start();
function __autoload($class_name){
		require_once 'classes/' . $class_name . '.php';
	}

$usuario = new Usuarios();
//SEM LOGIN.


?>

<!doctype html>
<html lang="pt-br">
    <!-- FORMULARIO DE LOGIN -->
<form  method="post" name="frmLogin">
 <div class="form-group">
  <label for="exampleInputEmail1">Email</label>
	<input type="email" name="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="@email.com" autocomplete="off">
	</div>
	<div class="form-group">
	<label for="exampleInputPassword1">Senha</label>
		<input type="password" name="senha" class="form-control" id="exampleInputPassword1" placeholder="********" autocomplete="off">
		  </div>
		  <div class="form-group form-check">
			<input type="checkbox" class="form-check-input" id="exampleCheck1">
			<label class="form-check-label" for="exampleCheck1">Check me out</label>
		  </div>
		  <button type="submit" name="btnSubmit"  class="btn btn-primary">Enviar</button>
		  <a href="cadastro.php">Cadastrar-se</a> |  <a href="recuperarSenha.php">Recuperar Senha</a>
		</form>

AI AQUI vai o cadastro.php


<?php
session_start();
function __autoload($class_name){
		require_once 'classes/' . $class_name . '.php';
	}

$usuario = new Usuarios();
//SEM CADASTRO

//SEM LOGIN.

?> 
<div id=formcad>
<form method="post" name="frmCadastro ">
	<div class="form-group">
	  <label for="exampleInputName1">Nome</label>
	  <input type="name" name="nome" class="form-control col-md-8" id="exampleInputName1" aria-describedby="NameHelp" placeholder="Nome" autocomplete="off">
	  </div>
      <div class="form-group">
	   <label for="exampleInputEmail1">Email</label>
	   <input type="email" name="email" class="form-control col-md-8" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="exemplo@email.com" autocomplete="off">
	 </div>
	  <div class="form-group">
	   <label for="exampleInputPassword1">Senha</label>
	   <input type="password" name="senha" id="txtPass" class="form-control col-md-5"  placeholder="********" autocomplete="off">
	  </div>	  
	 <button type="submit" name="btnSubmit" value="Cadastrar" class="btn btn-primary">Enviar</button><a href="index.php">Voltar</a>
    </form>
   </div>

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Felipe Haberl
      Prezados, bom dia!
       
      Sou iniciante em desenvolvimento utilizando o PHP e estou precisando da ajuda de vocês para criar um gerador de senhas, vou deixar abaixo os critérios de funcionamento:
       
      Palavra:       senhadodia
      Sequencia: 0123456789
      Data do dia: 26012022
       
      A senha seria: NOSENSNN
       
      Desde já agradeço a atenção de todos (a).
    • By arthursanno
      Usando PHP e MySQL, estou tentando elaborar um código de inserção Multi Nível Binário (máximo 2 filhos pra cada pai). A inserção é sem escolher o pai de forma manual. O código tem que localizar o primeiro registro que não possui 2 filhos e inserir o novo registro ali. O desenho final, será uma pirâmide multi nível de 2 em 2.
      Sou iniciante em PHP/MySQL e isso é parte de um estudo (curso), então necessito de apoio para:
      Saber por onde começar a montar essa lógica; Um exemplo de SQL para buscar e inserir nesse formato que descrevi. Obrigado.
    • By Caio Vargas
      Fala pessoal como estOu criando um ecommerce estou com uma dúvida de como criar um filtro de produtos igual a desse site aqui 
      https://www.charmefitness.com.br/produtos/moda-fitness ele já vem marcado a categoria que está e já pega todos os itens daquela categoria alguém tem algo assim ou já fez 
       
       
    • By mateus.andriollo
      Tenhos duas tabelas Cab e Itm, gostaria de listar s sequencia de cab e inserir em um array os itens pertencentes a elas, compo incomum idcab.
       
      Não consigo fazer, o array será para json
    • By AdrianoAP
      Pessoal estou tendo este erro quando eu fui passa a minha aplicação do mysql para o mysqli vejam o código -->>
       
      <?php
        $emitente = $mysqli->query("SELECT nome FROM emitente ORDER BY id ASC LIMIT 1");
        while($ln = $emitente->fetch_array()){
        echo $ln['nome'];
      }?>
       
       
      Devido á isso meu sistema não consegue fazer o login, se alguém puder me dar alguma dica eu agradeço.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.