Vnepomuceno Posted May 5, 2006 at 08:16 PM Report #25902 Posted May 5, 2006 at 08:16 PM 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 😉
deathseeker25 Posted May 5, 2006 at 09:36 PM Report #25930 Posted May 5, 2006 at 09:36 PM 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
aparicio Posted May 5, 2006 at 11:08 PM Report #25952 Posted May 5, 2006 at 11:08 PM vê o site: www.darkbuda.net/carlos/asd se for mais ou menos issto diz qq coisa. aka aparicio
Ped@ntilva Posted May 6, 2006 at 09:18 AM Report #25987 Posted May 6, 2006 at 09:18 AM 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
Vnepomuceno Posted May 6, 2006 at 11:53 AM Author Report #26034 Posted May 6, 2006 at 11:53 AM 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 :/
Vnepomuceno Posted May 17, 2006 at 03:17 PM Author Report #27849 Posted May 17, 2006 at 03:17 PM 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 😛
M6 Posted May 17, 2006 at 03:51 PM Report #27854 Posted May 17, 2006 at 03:51 PM 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."
Ped@ntilva Posted May 18, 2006 at 09:49 AM Report #28013 Posted May 18, 2006 at 09:49 AM 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
Vnepomuceno Posted May 18, 2006 at 01:38 PM Author Report #28049 Posted May 18, 2006 at 01:38 PM 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.
Ped@ntilva Posted May 18, 2006 at 02:10 PM Report #28056 Posted May 18, 2006 at 02:10 PM Sessões não tem nada de complicado, e vais ver que até facilita o trabalho. Mas se não queres usar paciencia.
Vnepomuceno Posted August 24, 2006 at 12:51 PM Author Report #46246 Posted August 24, 2006 at 12:51 PM 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...
Vnepomuceno Posted August 27, 2006 at 10:04 AM Author Report #46708 Posted August 27, 2006 at 10:04 AM 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 😛
skin Posted August 27, 2006 at 10:09 AM Report #46709 Posted August 27, 2006 at 10:09 AM 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
Vnepomuceno Posted August 27, 2006 at 01:34 PM Author Report #46721 Posted August 27, 2006 at 01:34 PM Podes me enunciar alguns tutoriais ou guias sobre isso? É que os que me indicaram, apenas este funciona/está activo: http://pt.php.net/manual/pt_BR/ref.session.php E não percebi grande coisa. De qualquer maneira obrigado pela ajuda que me têm dado
Vnepomuceno Posted November 10, 2006 at 05:11 PM Author Report #63411 Posted November 10, 2006 at 05:11 PM 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?
karva Posted November 10, 2006 at 05:13 PM Report #63412 Posted November 10, 2006 at 05:13 PM cria a logout.php, e poe la: <? session_start(); $_SESSION = array(); session_destroy(); Header ("Location: index.php"); exit; ?> Proud LEIC-A@IST student!
Ped@ntilva Posted November 10, 2006 at 05:14 PM Report #63414 Posted November 10, 2006 at 05:14 PM 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 😛
Vnepomuceno Posted November 10, 2006 at 05:49 PM Author Report #63417 Posted November 10, 2006 at 05:49 PM 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 é?
karva Posted November 10, 2006 at 05:54 PM Report #63419 Posted November 10, 2006 at 05:54 PM exactamente. o session_start, aparece pois e necessario dizer ao php que vai utilizar a session Proud LEIC-A@IST student!
Vnepomuceno Posted November 10, 2006 at 06:02 PM Author Report #63421 Posted November 10, 2006 at 06:02 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now