Jump to content

Recommended Posts

Posted

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  😉

  • Replies 49
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted

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

Posted

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

Posted

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 :/

  • 2 weeks later...
Posted

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 😛

Posted

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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Posted

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 👍

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

Posted

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.

  • 3 months later...
Posted

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  ?

É 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...

Posted

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 😛

Posted

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

Our lives begin to end the day we become silent about things that matter - Martin Luther King

  • 2 months later...
Posted

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?

Posted

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 é?

Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.