• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Vnepomuceno

[Mini-Projecto] Artwork Entries

50 mensagens neste tópico

Boas  ;)

É o seguinte, estou a fazer um site de portfolio, onde estou a pensar organizar todos os meus trabalhos, e como nas outras duas outras versões do site (esta é a versão 3), levei as coisas um bocado a brincar, preocupando-me apenas com o aspecto, agora, estou-me a dedicar a um 'projecto' mais demorado, mas melhor elaborado e complexo.

A minha experiência com PHP e MySQL é pouca, o pouco que sei, aprendi a fazer downloads do HotScripts quando precisava, e modificáva-os segundo as minhas necessidades.

Mas, como não encontrei nada que se parecesse com isto (e como já disse, quero algo que seja o mais aproximado possível do definitivo), decidi criar um género de um script.

O que tinha na ideia (ou seja, o algoritmo, como já li em alguns tutoriais e revistas, o processo de obtenção da solução, era este) :

Criar na base de dados uma tabela que registasse todos os dados referentes a cada artwork (trabalho), que fosse inserido no site. O artwork seria inserido no site através de um formulário (que só poderia ser acessado, caso passa-se num formulário de login, em que se estivesse certo o login e pass (apenas definido um user), passando ao .php file que contesse o formulário).

O formulário, deveria tomar duas 'atitudes' consoante o que inserissemos no formulário, o resultado seria postado (em HTML) no site (e depois estilizado em CSS), e também enviaria para a base de dados, os dados que nele foram inseridos.

--

Eu sei que parece complicado pedir que me ajudem, mas como já comecei, as ajudas não serão muito grandes. Já comecei por criar a tabela no MySQL, o resultado que obtive foi:

/*

*

* ARTWORK ENTRIES

* Copyright 2006 - 2007 (c) DESIGN LAB

* http://www.designlab.cinexl.net
* Autor: Valter Nepomuceno @ Vnepomuceno@hotmail.com

* 

*/

CREATE TABLE `Artwork_Entries` (
  `id` BIGINT( 2 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `date` DATE NOT NULL ,
  `programs` TEXT NULL ,
  `languages` TEXT NULL ,
  `category` TEXT NOT NULL ,
  `description` TEXT NOT NULL
) TYPE = MyISAM ;

(Está tudo certo? A tabela tem 6 linhas, um id, uma 'data de inserção', uma linha 'programas utilizados no trabalho', uma linha 'linguagens utilizadas no trabalho', uma 'categoria' e uma 'descrição'.)

Agora que me dessem uma ajudinha no resto, é que não sei restringir o acesso, consoante o correcto preenchimento de um form (login), e depois dentro do formulário de inserção, não sei que funções deveria atribuir  ao formulário, para enviar os dados para a base de dados, e para um iframe, que iria ser introduzido no site.

Fiquem bem e quem leu este testamento até ao fim...obrigado, lol  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para restringir terás de ler alguma coisa sobre sessões em PHP:

http://pt.php.net/manual/pt_BR/ref.session.php

http://www.phpfreaks.com/tutorials/41/0.php

http://www.cgi-bin.com/Detailed/2323.html

Não será muito difícil se compreenderes o seu funcionamento. Claro que tambem precisarás de umas bases de PHP...

Acho que será melhor para ti até: aprendes a programar o básico em PHP e realizas o projecto. Com umas duas semanitas de estudo é bem provável que implementes isso e fiques a trabalhar devidamente.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vê o site:

www.darkbuda.net/carlos/asd

se for mais ou menos issto diz qq coisa.

aka aparicio

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A tabela parece-me que está correcta.

Para usares o login tens que usar SESSIONS

Não penses que SESSIONS é um bicho de 7 cabeças porque na verdade não o é. É muito fácil perceber as SESSIONS.

Pensa assim, a SESSION é um array que te guarda variáveis durante a sessão.

Para iniciares uma SESSION basta fazeres no inicio da página

session_start();

em todas as páginas que vão ser usadas deve conter o seesion_start(), pois se a sessao ainda foi aberta ele abre a sessao.

Tendo isto em conta agora só precisas de validar os utilizadores.

Crias uma tabela na base de dados para os utilizadores...

No form de login a página que recebe o POST vai guardar, caso login válido uma variavel controladora na SESSION

por exemplo:

$_SESSION['valLogin']=true;

Assim sendo nas páginas que queres tornar confidenciais basta pores uma condição que verifica essa variável e que caso esteja a true permite o acesso.

Caso contrário faz um redirect para a pagina de login.

Ajudei alguma coisa ou nem por isso?

Cumps,

Pedantilva

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, muito obrigado pela explicação que me deste e pelos links dos guias que me forneceram.

Estive a ler um guia de PHP muito bom, que explica tudo muito bem.

Aqui fica o link para quem estiver interessado:

http://www.numaboa.com.br/informatica/webmaster/PHP/

Agora que já sei os básicos, vou começar a ler uns tutoriais mais avançados para ver se consigo acompanhar e perceber o código, porque se for para não percebe-lo é a mesma coisa que fazer copy paste :/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, a maior parte do "sistema de login" já está feita. Não é nenhum sistema de login, é apenas um script (minusculo, como ainda sou noob em PHP), que num formulário, de variáveis $username e $password, é aplicado o seguinte if:

<?php

if($username == "teste" and $password == "teste")
{
	echo("Usuario correcto");
}
else
{
	echo("Usuario incorrecto");
}

?>

Bem, pelo menos funciona, e como para o que é não é preciso mais, alguem me pode dizer uma função de direcionamento de páginas?

Ou seja, se o login estiver correcto, vai para a página tal, se estiver incorrecto, vai para a página taloides.

Fiquem bem :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que compreendi do teu modelo de dados, pelo menos os campos 'programs', 'languages' e 'category' deviam ser foreign keys  para outras tabelas.

Ou seja, devias ter uma tabela de 'programs', onde listas todos os programas, 'languages', onde listas todas as linguagens, e uma tabela de 'categoty', onde listas todas as categorias. Depois, cada entrada na tabela 'Artwork_Entries' faz referência a uma, ou mais, depende do desenho do modelo, 'language' e 'category'.

Este modelo permite mais flexibilidade, reutilização de informação e redução de erros.

Antes de construires a base de dados é melhor desenhá-lo ao nível lógico.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, a maior parte do "sistema de login" já está feita. Não é nenhum sistema de login, é apenas um script (minusculo, como ainda sou noob em PHP), que num formulário, de variáveis $username e $password, é aplicado o seguinte if:

<?php

if($username == "teste" and $password == "teste")
{
	echo("Usuario correcto");
}
else
{
	echo("Usuario incorrecto");
}

?>

Bem, pelo menos funciona, e como para o que é não é preciso mais, alguem me pode dizer uma função de direcionamento de páginas?

Ou seja, se o login estiver correcto, vai para a página tal, se estiver incorrecto, vai para a página taloides.

Fiquem bem :thumbsup:

Para sistemas de login recomendo que uses SESSION e também uma base de dados ou um txt com pass encriptada.

o redirecionamento de paginas é uma coisa que estão sempre a pedir e que tamos sempre a responder.

Podes encontrar aqui a solução.

Cumps,

Pedantilva

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelo link e desculpa não ter feito um search antes.

Btw, sessões são ainda um bocado complexas para mim, e como estou apenas a fazer um site de portfolio, acho que não é tão preciso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sessões não tem nada de complicado, e vais ver que até facilita o trabalho.

Mas se não queres usar paciencia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A tabela parece-me que está correcta.

Para usares o login tens que usar SESSIONS

Não penses que SESSIONS é um bicho de 7 cabeças porque na verdade não o é. É muito fácil perceber as SESSIONS.

Pensa assim, a SESSION é um array que te guarda variáveis durante a sessão.

Para iniciares uma SESSION basta fazeres no inicio da página

session_start();

em todas as páginas que vão ser usadas deve conter o seesion_start(), pois se a sessao ainda foi aberta ele abre a sessao.

Tendo isto em conta agora só precisas de validar os utilizadores.

Crias uma tabela na base de dados para os utilizadores...

No form de login a página que recebe o POST vai guardar, caso login válido uma variavel controladora na SESSION

por exemplo:

$_SESSION['valLogin']=true;

Assim sendo nas páginas que queres tornar confidenciais basta pores uma condição que verifica essa variável e que caso esteja a true permite o acesso.

Caso contrário faz um redirect para a pagina de login.

Ajudei alguma coisa ou nem por isso?

Cumps,

Pedantilva

Sim, claro que ajudaste, mas como ainda sou um bocadinho novo nisto, precisava de uma mãozinha  :hmm:

É o seguinte, abandonei aquela if else statement, porque isso não daria com nada como seria de esperar, e segui o tutorial da tofas (http://www.portugal-a-programar.pt/index.php?showtopic=1446)

O meu formulário de login é:

<form action="includes/login/action.php" method="post">
Username:<br /> <input type="text" value="" name="username" size="30" /><br /><br />
Password:<br /> <input type="password" value="" name="password" size="30" /><br /><br />
<input type="submit" value="Login Username" name="validate" /> <input type="reset" value="Reset" name="reset" />
</form>

E a action é:

<?
$username=$_POST["username"];
$password=$_POST["password"];

$conectar=mysql_connect("localhost", "root","" ) or die ("Falhou ao tentar ligar ao servidor");

$bdd=mysql_select_db("cinelnet_designlab", $conectar) or die ("Falhou ao tentar ligar à base de dados");

$pesquisa="select password from login_userdata where username='$username';";

$resultado=mysql_query($pesquisa);

$num=mysql_num_rows($resultado);

if( $num!=0 ) { 
while( list($pass)= @ mysql_fetch_row($resultado) )
{  
   $query=$pass;
}

if( $query==$password)
{ 
     ?> <script language="JavaScript">window.location="../../index.php";</script> <? ;
}
else 
{
    echo "Password or Username wrong";
}
}

else {
  echo "Username not found on the database";
}

mysql_close($conectar);
?>

Podem-me agora dar uma mãozinha para inserir neste sistema de login as sessions? É que dos tutoriais que me deram, apenas este está activo (http://pt.php.net/manual/pt_BR/ref.session.php), e já o li, mas não refere nada que me possa ajudar, apenas a teoria...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho outra dúvida. Por exemplo, neste exemplo, no ficheiro de acção de formulário, são definidas as variáveis introduzidas no formulário:

$username=$_POST["username"];

$password=$_POST["password"];

Agora, estou a construir uma "home.php" para o utilizador ligado. Como posso a partir dessa página buscar a variável $username, para construir algo do tipo:

Logged in as: $username

Se pudessem me responder a estas duas perguntas agradecia muito :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para isso tens de usar sessions ou cookies mas penso ser mais aconselhado sessions.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, metade do painel de administração já está feito, agora restam as pequenas dúvidas. Por agora fica só uma: como podem ver no screenshot do painel de administração, têm lá um link no footer que diz Logout, o problema é que não sei como avivá-lo. Sei que o código ficará:

session_destroy();

Mas metê-lo onde? Já tentei no href, e logo que actualizava a página, a sessão ia-se, também já tentei em todos (acho) os onACTION e também nenhum deles funcionou. Alguém dá uma ajudinha?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

cria a logout.php, e poe la:

<?

session_start();
$_SESSION = array();
session_destroy();

Header ("Location: index.php");

exit;

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes por o link para uma pagina tipo logout.php com o seguinte código:

<?php
$volta = $_SERVER['HTTP_REFERER'];
session_start();
session_destroy();
header("Location: $volta");
?>

EDIT: LOLO :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1- Porque é que no .php aparece o session_start(); ?

2- No "script" do Ped@ntilva, o logaritmo é definir o url da página actual (a tal da session_start()) e depois destruir a sessão e redireccionar para o url inicial (definido), é isso não é?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

exactamente.

o session_start, aparece pois e necessario dizer ao php que vai utilizar a session

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Yap, não se pode destruir uma sessão que nunca foi iniciada:

"session_destroy(): Trying to destroy uninitialized session"

Sendo assim, em todos os CMS tem de haver uma página de logout certo?

Obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Yap, não se pode destruir uma sessão que nunca foi iniciada:

"session_destroy(): Trying to destroy uninitialized session"

Sendo assim, em todos os CMS tem de haver uma página de logout certo?

Obrigado pela ajuda

CMS, e supostamente em tudo o que envolva logins e sessoes...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma outra pergunta, já estive a procurar no php.net, e no google, mas não encontrei nada do que eu queria.

O que queria fazer era criar uma página functions.php em que pudesse definir umas quantas variáveis e funções como globais, para que pudesse usá-las em todo o site (nomeadamente variáveis como informações do servidor, bases de dados, etc)

Não encontrei nada que me informasse isso! Podem dar uma ajudinha?

(Obrigado pela ajuda que me têm dado até agora :P)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me fiz entender. As funções que me estava a referir não são as funções pré-definidas do PHP, são funções que criei que me ajudam nas tarefas automáticas do site:

function design_artwork($id) { ... }

Gostava de pôr todas estas funções que criei num ficheiro functions.php, e "globalizá-las" tanto as funções como as variáveis, e depois era só em qualquer lugar do site:

design_artwork(6);

Fiz-me entender?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, essas funções são sempre globais :) basta fazeres include do functions.php uma vez. qts às variáveis, basta fazeres

 global $variavela, $variavelb, $variavelc; 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora