Projeto Integrador - 2010.1 - Equipe Coffee Break

De MediaWiki do Campus São José
Revisão de 22h31min de 3 de julho de 2010 por Mario (discussão | contribs)
Ir para navegação Ir para pesquisar

Diario do Projeto

Projeto 2010.1

Equipe CoffeBreak

Subdominio coffeebreak.sj.ifsc.edu.br

IP Válido 200.135.37.103

Alunos: Caroline, Jesse, Mario Andre, Rodolfo


8/6/10 - Terça-feira

Física

  • Separado os Rak's por equipe
  • Colocado dois Path Panel e um organizador no armario da equipe
  • Não tinhamos cabo grande o suficiente para alcançar o nosso RAK

Enlace

  • Não foi feito nada nesse dia

Rede

  • Escolhido nosso servidor

Img10.jpg

  • Instalado o Ubuntu Server 10.04 LTS
  • Instalado os aplicativos
    • SSH ( com o sistema operacional )
    • apache2
      • bind9
      • dhcp3-server

Aplicação

  • Não foi feito nada nesse dia

9/6/10 - Quarta-feira

Física

  • Passamos 3 Cabos do RACK principal até o RACK da nossa equipe

Img20.jpg Img21.jpg Img19.jpg

  • Os cabos foram crimpados no Path Panel do RACK da equipe

Img16.jpg

  • Instalado 3 áreas de trabalho (na parede)

Img14.jpg Img15.jpg

Enlace

  • Não foi feito nada nesse dia

Rede

  • Configurado DHCP
  • Configurado NTP
  • Testado NTP OK

Aplicação

  • Não foi feito nada nesse dia

10/6/10 - Quinta-feira

Física

  • Crimpado os cabos no Path Panel do armario principal

Img22.jpg

  • Testado todos os cabos, conexão com Path Panel e Área de trabalho

Enlace

  • Não foi feito nada nesse dia

Rede

  • Testado DHCP
  • Configurado NAT e Roteamento

Aplicação

  • Foi iniciado o processo de criação
  • A estrutura do bando de dados MySQL foi projetada e implantada

Segue a estrutara do banco de dados:

--
-- Banco de Dados: `coffeebreak`
--

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

--
-- Estrutura da tabela `anuncio`
--

CREATE TABLE IF NOT EXISTS `anuncio` (
  `aid` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `titulo` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `texto` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `link` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `visualizacoes` int(11) NOT NULL,
  `visitas` int(11) NOT NULL,
  `expira_em` datetime NOT NULL,
  `expirado` char(1) NOT NULL,
  PRIMARY KEY (`aid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=49 ;

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

--
-- Estrutura da tabela `banner`
--

CREATE TABLE IF NOT EXISTS `banner` (
  `bid` int(11) unsigned zerofill NOT NULL,
  PRIMARY KEY (`bid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

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

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

CREATE TABLE IF NOT EXISTS `login` (
  `id` int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `usuario` varchar(100) NOT NULL,
  `senha` varchar(255) NOT NULL,
  `ultimo_ip` varchar(100) NOT NULL,
  `ultima_data` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

11/6/10 - Sexta-feira

Física

  • Não foi feito nada nesse dia

Enlace

  • Manobrado os cabos do servidor direito até o switch do RAK Central para conexão com a COINF

Rede

  • Configurado o Ip Válido
  • Testado o DNS
  • Colocado o servidor no armario da direita no laboratorio Redes 1

Aplicação

  • Foi feito a conexão ao banco de dados orientado a objetos.

Segue o código (mysql.php):

<?
class conMysql {

 var $servidor = "localhost";
 var $usuario = "root";
 var $senha = "4coffee4";
 var $database = "coffeebreak";
 var $validacao = "TGHDFEU1H5N5cUo2fHfUeHe1bUrheeaukghdyuGHEgh443256gyfegR";

 var $query;
 var $link;
 var $resultado;
 
function conectar() {
$this->link = mysql_connect($this->servidor,$this->usuario,$this->senha);
if (!$this->link) {
echo "Falha na conexao com o Banco de Dados!<br />";
echo "Erro: " . mysql_error();
die();
} elseif (!mysql_select_db($this->database, $this->link)) {
echo "O Banco de Dados solicitado não pode ser aberto!<br />";
echo "Erro: " . mysql_error();
die();
	}
} // fecha conectar

function desconectar() {
return mysql_close($this->link);
}

function executeQuery($query) {
$this->conectar();
$this->query=$query;
if($this->resultado=mysql_query($this->query)) {
$this->desconectar();
return $this->resultado;
} else {
echo "Ocorreu um erro na execução da SQL";
echo "Erro :" . mysql_error();
echo "SQL: " . $query;
die();
desconectar();
		}
	}
} // fecha class
?>

Estanciando e executando a Query:

require 'admin/mysql.php'; // Faz o requerimento da classe conMysql
$conexao = new conMysql(); // Faz o estanciamento
$conexao->executeQuery("select * from anuncio where expirado = 'n'"); // Executa a Query

14/6/10 - Segunda-feira

Física

  • iniciado a confecção dos pacth cord

Enlace

  • Fomos informados pelo professor Casagrande que os patch cord prontos(que são do laboratorio Redes 1), usados na conexão cruzada nos RACKs das equipes tem que ser trocados, por path cord confeccionados pelas mesmas

Rede

Aplicação

  • Foi implementado a página inicial do sistema. Página:
// Função do ítem deletar
<script language='Javascript'>
function confirmar() {
  if( confirm( 'Tem certeza que deseja deletar?' ) ) {
	  return true;
  } else {
	  return false;
  }
}
</script>

<table id="box-table-a" summary="Coffee Break">
    <thead>
       <tr>
         <th scope="col">Título</th>
         <th scope="col">Cliques</th>
         <th scope="col">Tempo Restante</th>
         <th scope="col">Expirado</th>
         <th scope="col">Editar</th>
         <th scope="col">Excluir</th>
       </tr>
    </thead>
<tbody>

<?
	$conexao = new conMysql();
	
	function transData($dataMySQL) {
	$agora = date("Y-n-j H:i:s");
	$data_atual = explode(' ', $agora);
	
	$data_de_cadastro = explode(' ', $dataMySQL);
	// Tranforma a difença entre as datas que estão no formato aaaa/mm/dd em dias faltantes.
	$time_inicial = strtotime($data_atual[0]);
	$time_final = strtotime($data_de_cadastro[0]);
	$diferenca = $time_final - $time_inicial;
	$dias = (int)floor( $diferenca / (60 * 60 * 24));
		if ($dias <= 0) {
		$dias = "";
		} elseif ($dias == 1) {
		$dias .= " dia";
		} else {
		$dias .= " dias";
		}
	return $dias;
	}
	// Se o banner estiver expirado, o mesmo é atualizado e a página do sistema é atualizada.
	function atualizaBD($dataBD,$aid,$expirado) {
	$agora = date("Y-n-j H:i:s");
	$tempo_transcorrido = (strtotime($agora)-strtotime($dataBD));
		if (($tempo_transcorrido > 0) && ($expirado != "s")) {
				$conexao = new conMysql();
				$conexao->executeQuery("update anuncio set expirado='s' where aid='$aid'");
				echo("<script>window.location = 'sistema.php';</script>");
			}
	}
	
	$resultado = $conexao->executeQuery("select * from anuncio order by expira_em desc");
	
	// Gera as linhas da tabela
        while ($busca = mysql_fetch_object($resultado)) {
	
	atualizaBD($busca->expira_em,$busca->aid,$busca->expirado);
	// Troca "n" ou "s" por "Sim" ou "Não". 	
	if ($busca->expirado == n) {
			$expirado = "Não";
		} else {
			$expirado = "Sim";
		}
			
			echo '<tr>
			<td><a href="' . $busca->link . '">' . $busca->titulo . '</a></td>
			<td>' . $busca->visitas . '</td>
			<td>' . transData($busca->expira_em) . ' </td>
			<td>' . $expirado . '</td>
			<td><a href="sistema.php?action=editar&editar=' . $busca->aid . '">
                        <img src="imagens/edit.png" width="16" height="16" /></a></td>
			<td><a href="excluir.php?action=excluir&excluir=' . $busca->aid . '" onClick="return confirmar();">
                        <img src="imagens/delete.png" width="16" height="16" /></a></td>
			</tr>';
}
?>
</tbody>
</table>

15/6/10 - Terça-feira

Física

  • confeccionado 4 path cord para conexão cruzada, para o RACK da equipe

Img17.jpg

Enlace

Rede

Aplicação

Formulário de cadastro:

	<form name="cadastrar" onSubmit="return formularios();" method="post" action="enviar.php?action=novo">
    <table id="box-table-b" summary="Coffee Break">
    <thead>
       <tr>
         <th scope="col" align="left">Cadastro de Anúcio</th>
         <th scope="col" align="right"><? $data = date("j/n/Y"); $hora = date("H:i:s"); echo "Data: $data - Horário: $hora"; ?></th>
       </tr>
     </thead>
     <tbody>
     <tr>
     <td><div class="encapsulador-300"><b>Título: </b><br /><input class="input-1" type="text" name="titulo"></div></td>
     <td><div class="encapsulador-300"><b>Link: </b><br /><input class="input-1" type="text" name="link"></div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-680"><b>Texto: </b><br />
         <textarea class="textarea-1" rows="10" name="texto"></textarea></div></td>
     </tr>
     <tr>
     <td><div class="encapsulador-200"><b>Expira em: </b>
     <input class="input-2" id="date" type="text" name="expira_em"></div></td>
     <td><div class="encapsulador-200"><b>Expirado? </b>
     <input type="radio" name="expirado" value="n" checked> Não - 
     <input type="radio" name="expirado" value="s"> Sim</div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-150-center">
         <input name="enviar" type="submit" value="    Enviar    "></div></td>
     </tr>
     </tbody>
</table>
</form>

Formulário de edição:

	$conexao = new conMysql();
	$busca = mysql_fetch_object($conexao->executeQuery("select * from anuncio where aid='$editar'"));
		if ($busca->expirado == n) {
			$marcacao_ex = "<input type=\"radio\" name=\"expirado\" value=\"n\" checked> Não -
                        <input type=\"radio\" name=\"expirado\" value=\"s\"> Sim"; 
		} else {
			$marcacao_ex = "<input type=\"radio\" name=\"expirado\" value=\"n\"> Não -
                        <input type=\"radio\" name=\"expirado\" value=\"s\" checked> Sim";
		}
?>
	<form name="atualizar" onSubmit="return formularios();" method="post" action="atualizar.php?action=atualizar">
    <table id="box-table-b" summary="Coffee Break">
    <thead>
       <tr>
         <th scope="col" align="left">Cadastro de Anúcio</th>
         <th scope="col" align="right"><? $data = date("j/n/Y"); $hora = date("H:i:s"); echo "Data: $data - Horário: $hora"; ?></th>
       </tr>
     </thead>
     <tbody>
     <tr>
     <td><div class="encapsulador-300"><b>Título: </b><br />
     <input class="input-1" type="text" name="titulo" value="<? echo $busca->titulo ?>"></div></td>
     <td><div class="encapsulador-300"><b>Link: </b><br />
     <input class="input-1" type="text" name="link" value="<? echo $busca->link ?>"></div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-680"><b>Texto: </b><br />
         <textarea class="textarea-1" rows="10" name="texto"><? echo $busca->texto ?></textarea></div></td>
     </tr>
     <tr>
     <td><div class="encapsulador-200"><b>Expira em: </b>
     <input class="input-2" id="date" type="text" name="expira_em" value="<? echo $busca->expira_em ?>"></div></td>
     <td><div class="encapsulador-200"><b>Expirado? </b><? echo $marcacao_ex ?></div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-150-center">
         <input type="hidden" name="atualizar" value="<? echo $editar ?>">
         <input name="enviar" type="submit" value="    Atualizar    "></div></td>
     </tr>
     </tbody>
</table>
</form>

Foi implementado nos formulários do sistema funções JavaScript para verificação dos campos. Exemplo:

<form name="enviar" onSubmit="return formularios();" method="post" action="atualizar.php?action=atualizar">
<input type="text" name="titulo">
<input name="enviar" type="submit" value="Enviar">
</form>

<script language="JavaScript">
	function formularios(){
	if (document.enviar.titulo.value=="") {
		alert( "Entre com um título!" );
		document.enviar.titulo.focus();
		return false;
	}
	return true;
	}
</script>

16/6/10 - Quarta-feira

Física

  • confeccionado 4 pacth cord para conexão cruzada, parao RACK principal

Img18.jpg

Enlace

Rede

  • Instalados e configurados:Dansguardian, Squid, Firewall.

Aplicação

  • Foi feito a página de atualizacao.php para receber dados do formulário de edição:
<?
$action = $_GET['action'];

$atualizar = $_POST['atualizar'];
$titulo = $_POST['titulo'];
$texto = $_POST['texto'];
$link = $_POST['link'];
$expira_em = $_POST['expira_em'];
$expirado = $_POST['expirado'];

if ($action == "atualizar") {
$conexao = new conMysql();
$conexao->executeQuery("update anuncio set titulo='$titulo',texto='$texto',link='$link',
expira_em='$expira_em',expirado='$expirado' where aid='$atualizar'");

echo "<center><b>Anúncio atualizado com sucesso!</b></center>";
echo "<center><a href=sistema.php>Voltar</a></center>";
} else {
	echo "<center><b>Não há variáveis a serem processadas!</b></center>";
	echo "<center><a href=sistema.php>Voltar</a></center>";
}
?>

Foi feito a página de enviar.php para receber dados do formulário de cadastro:

<?
$action = $_GET['action'];

$titulo = $_POST['titulo'];
$texto = $_POST['texto'];
$link = $_POST['link'];
$data = $_POST['expira_em'];
$expirado = $_POST['expirado'];

$hora = date("H:i:s");

$expira_em =  "$data ". $hora;

if ($action == "novo") {
	$conexao = new conMysql();
	$conexao->executeQuery("insert into anuncio values(null,'$titulo','$texto','$link','0','0','$expira_em','$expirado')");
	echo "<center><b>Anúncio cadastrado com sucesso!</b></center>";
	echo "<center><a href=sistema.php>Voltar</a></center>";
} else {
	echo "<center><b>Não há variáveis a serem processadas!</b></center>";
	echo "<center><a href=sistema.php>Voltar</a></center>";
}
?>

17/6/10 - quinta-feira

Física

Enlace

Rede

Aplicação

  • Função do ítem excluir que verifica se usuário tem certeza:
<script language='javascript'>
function confirmar() {
  if( confirm( 'Tem certeza que deseja deletar?' ) ) {
	  return true;
  } else {
	  return false;
  }
}
</script>

Ítem deletar:

<td><a href="excluir.php?action=excluir&excluir=' . $busca->aid . '" onClick="return confirmar();">
<img src="imagens/delete.png" width="16" height="16" /></a></td>

Exemplo da ação:

Certeza deletar.gif

18/6/10 - Sexta-feira

Física

Enlace

Rede

Aplicação

  • Foi implantado um ítem de calendário nos formulários de Edição e Cadastro

Instalação e ativação:

<head>
    <link rel="stylesheet" type="text/css" href="calendario/calendar.css">
    <script type="text/javascript" src="calendario/mootools.js"></script>
    <script type="text/javascript" src="calendario/calendar.js"></script>
    <script type="text/javascript">
    window.addEvent('domready', function() { myCal = new Calendar({ date: 'Y-m-d' }); });
    </script>	
</head>

Uso (id="data" no input ativa a função JavaScript):

<input class="input-2" id="date" type="text" name="expira_em">

Exemplo da ação:

Calendario.gif

21/6/10 - Segunda-feira

Física

Enlace

Rede

Aplicação

  • Foi criado o design do sistema

Logo Coffee Break:

Logo coffeebreak.gif

Página de login do sistema:

Pagina login.jpg

Página inicial do sistema:

Pagina inicial.jpg

22/6/10 - terça-feira

Física

Enlace

Rede

Aplicação

  • Foi feita a página para autenticação do usuário no sistema
<?  session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Coffee Break</title>
</head>
<body>
<? 
require 'mysql.php';
$action = $_GET['action'];
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];

	if ($action == "login") {
		$conexao = new conMysql();
		$busca = mysql_fetch_object($conexao->executeQuery("select * from login"));
		
	if (($busca->usuario == $usuario) && ($busca->senha == $senha)) {
		$_SESSION['usercod'] = "$conexao->validacao$busca->usuario";
		$_SESSION["ultimoAcesso"] = date("Y-n-j H:i:s"); 
		echo("<script>window.location = 'index.php';</script>");
		
	} else {
		echo("<script>
     	alert(\"Usuário ou senha não conferem!\");
     	window.location = 'index.php';
     	</script>");
		
	}
} else {
		echo("<script>
     	alert(\"Nada a ser processado!\");
     	window.location = 'index.php';
     	</script>");
	}
?>
    </body>
</html>
  • Em cada página importante do sistema foi incluso um código que verifica se o usuário é válido e se a sessão está expirada
$conexao = new conMysql();
$busca = mysql_fetch_object($conexao->executeQuery("select * from login"));

	if ($_SESSION['usercod'] != "$conexao->validacao$busca->usuario") {
		echo("<script>
     	alert(\"Você não está logado no sistema.\");
     	window.location = 'index.php';
     	</script>");
	} else {
		$dataSalva = $_SESSION["ultimoAcesso"]; 
		$agora = date("Y-n-j H:i:s");
		$tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva));
	 		if($tempo_transcorrido >= 600) {
     			// Se passaram 10 minutos ou mais
      			session_destroy();
      			echo("<script>
				alert(\"Sessão expirada!\");
				window.location = 'index.php';
				</script>");
			}else {
                        // Renova o tempo da sessão
			$_SESSION["ultimoAcesso"] = $agora;
			}
	}

23/6/10 - Quarta-feira

Física

Enlace

Rede

Aplicação

  • Nada foi feito

24/6/10 - Quinta-feira

Física

Enlace

Rede

Aplicação

  • Nada foi feito

25/6/10 - Sexta-feira

Física

Enlace

Rede

Aplicação

28/6/10 - Segunda-feira

Física

Enlace

Rede

Aplicação

29/6/10 - Terça-feira

Física

Enlace

  • Configurado access point

Img11.jpg Img12.jpg Img13.jpg

  • colocado access point para funcionar

Rede

Aplicação


30/6/10 - Quarta-feira

Física

Enlace

Rede

Aplicação

01/7/10 - Quinta-feira

Física

Enlace

Rede

Aplicação

02/7/10 - Sexta-feira

Física

Enlace

Rede

Aplicação

05/7/10 - Segunda-feira

Física

Enlace

Rede

Aplicação