Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer ao auxílio dos amigos, mas preciso entender e resolver um problema.
       
      Tenho uma Rotina que o usuário seleciona os produtos que deseja para requerer ao setor responsável.
       
      O usuário escolhe um produto qualquer e Clicla em um button para incluir a lista.

      O problema que estou enfrentando é que após escolher o produto e teclar ENTER o Sistema já salva no BD.
       
      Gostaria de criar uma Tecla de Atalho, para quando incluir/escolher o produto na lista, o usuário tecla como exemplo:
      ALT+A  para agregar a lista
      ALT+S para salvar a lista de itens desejados.

      Assim, quando teclar enter, o sistema não dispara o GRAVAR na Base de Dados.

      Grato,

      Cesar
       
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.