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 ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

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