Ir para conteúdo

POWERED BY:

Arquivado

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

Biel.

link restrito somente a uma 1 pessoa.

Recommended Posts

Bom dia a todos. Pessoal gostaria que mim auxiliasse na seguinte questão. É o seguinte:


Enviei um link para joao vizualizar meu projeto. Faz de conta que este é o link www.meusite.meusite.com.br

Como saber se joão enviou ou não meu link para uma ou mais pessoas também ter acesso ao meu projeto?

Se joão enviou meu link, então terei que bloquear o mesmo. A ideia é fazer com que meu projeto fique restrito

somente a pessoa interessadas e não aquelas que querem copiar seu trabalho. Obrigado!


Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Me baseando na sua idéia, resolvi fazer um login no estilo que você falou, está bem simples, não permitindo a utilzação por mais de um usuário ao mesmo tempo (uso simultâneo), veja como ficou - http://angelorubin.besaba.com/Imasters/Php/Impedir AcessoSimultaneo/index.php

 

nome: teste

senha: teste

 

Amanhã posto ele aqui completo a quem tenha interesse em ajudar a melhora-lo ou utilizá-lo mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensando aqui já encontrei um problema no login, se o usuário fechar o navegador, o campo status fica true no banco porque o logout é que faz a função de mudar.

Alguém sugere algo?

Segue o código para melhor entendimento:

 

index .php

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>PHP - Impedir Acesso Simultâneo</title>
</head>

<body>
<form action="verifica.php" method="post">
	<label>Usuário</label>
	<input type="text" name="usuario" placeholder="digite seu nome"/>
	<label>Senha</label>
	<input type="password" name="senha" placeholder="digite sua senha"/>
	<input type="submit" value="Entrar"/>
</form>
</body>
</html

verifica.php

<?php
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$instancia = new PDO("mysql:localhost;dbname=dbname", "user", "pass");
$instancia->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$prepara = $instancia->prepare("SELECT id, usuario, senha, status FROM login WHERE usuario = ? && senha = ?");
$prepara->bindParam(1, $usuario);
$prepara->bindParam(2, $senha);
$prepara->execute();
$dados = $prepara->fetch(PDO::FETCH_ASSOC);
$contador = count($dados);
if(!$dados['status']){
	if($contador == 4) {
		session_start();
		$_SESSION['usuario'] = $dados['usuario'];
		$_SESSION['senha'] = $dados['senha'];
		$_SESSION['id'] = $dados['id'];
		$id = $dados['id'];
		$instancia->query("UPDATE login SET status = true WHERE id = $id");
		header("Location: restrito.php");
	}
	else {
		echo 'Nome/senha incorreto(s), tente novamente.<br/>';
		echo '<a href="index.php">voltar</a>';
	}
}
else {
	echo 'O acesso já está sendo utilizado !<br/>';
	echo '<a href="index.php">voltar</a>';
}
?>

logout.php

<?php
    session_start();
    $id = $_SESSION['id'];
    $instancia = new PDO("mysql:host=localhost;dbname=dbname", "user", "pass");
    $instancia->query("UPDATE login SET status = false WHERE id = $id");
    session_destroy();
    header("refresh: 2; url = index.php");
    exit('Até Breve!');
?>

restrito.php

<?php
session_start();
if($_SESSION['usuario'] == ""){
	header("location:index.php");
	exit();
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>PHP - Impedir Acesso Simultâneo - Restrito</title>
</head>

<body>
	<h1>Olá, <?php echo $_SESSION['usuario']; ?>, seja bem-vindo!</h1>
	<a href="logout.php">Sair</a>
</body>
</html>

SQL

-- phpMyAdmin SQL Dump
-- version 3.4.9
-- http://www.phpmyadmin.net
--
-- Servidor: 127.0.0.1
-- Tempo de Geração: 04/10/2013 às 15h00min
-- Versão do Servidor: 5.5.20
-- Versão do PHP: 5.3.9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Banco de Dados: `imasters`
--

-- --------------------------------------------------------

--
-- Estrutura da tabela `login`
--

CREATE TABLE IF NOT EXISTS `login` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usuario` varchar(50) NOT NULL,
  `senha` varchar(32) NOT NULL,
  `status` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- Extraindo dados da tabela `login`
--

INSERT INTO `login` (`id`, `usuario`, `senha`, `status`) VALUES
(1, 'teste', 'teste', 0);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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