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

Lythari

php + mysql + login

41 mensagens neste tópico

boas,

Tou a tentar desenvolver uma pagina de login, ou seja um site que permite ao utilizador registar-se e depois fazer o respectivo login, de momento tenho isto mas da-me um erro

Parse error: syntax error, unexpected $end in C:\wamp\www\por mim\reg_trata.php on line 43

pagina 1

<html>

<head>
<meta http-equiv="Content-Language" content="pt">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nova pagina 1</title>
</head>

<body>

<form method="POST" action="reg_trata.php">
<!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.csv" S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
<p>Nome:<input type="text" name="nome" size="20"></p>
<p>Nick<input type="text" name="nick" size="20"></p>
<p>Pass<input type="text" name="pass" size="20"></p>
<p>Nº Tel<input type="text" name="tel" size="20"></p>
<p>Email<input type="text" name="email" size="20"></p>
<p> </p>
<p><input type="submit" value="Submeter" name="B1"></p>
</form>

</body>

</html>

pagina 2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<?php

/*-------------------------------
Funções de manipulação de BDs MySQL
-------------------------------*/
function DBConn()
{
$dbUser = "root";
$dbPwd = "";
$dbName = "1";
$dbHost = "localhost";
$tabela		=	"base";

if (!($conn = mysql_connect($dbHost,$dbUser,$dbPwd))) return -1;
if (!mysql_select_db($dbName,$conn)) return -2;
return $conn;
}


function DBDisplayTable($tablename, $conn)
{
$query = "INSERT INTO base (nome, nick, pass, tel, email)
VALUES ('$nome','$nick','$pass','$tel','$email')"; //insere os campos na tabela"


?>
</body>
</html>

ja procurei em muitos e muitos sites, tutoriais algumas paginas ja feitas e dá-me sempre algum erro...

Se alguem me puder ajudar agradecia

cumprimentos 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta para a página 2:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<?php

/*-------------------------------
Funções de manipulação de BDs MySQL
-------------------------------*/
function DBConn()
{
        $dbUser = "root";
        $dbPwd = "";
        $dbName = "1";
        $dbHost = "localhost";
        $tabela         =       "base";
       
        if (!($conn = mysql_connect($dbHost,$dbUser,$dbPwd))) return -1;
        if (!mysql_select_db($dbName,$conn)) return -2;
        return $conn;
}


function DBDisplayTable($tablename, $conn)
{
        $query = "INSERT INTO base (nome, nick, pass, tel, email)
        VALUES ('$nome','$nick','$pass','$tel','$email')"; //insere os campos na tabela"
}       
       
?>
</body>
</html>

O erro estava em que te esqueces-te de fechar a função. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta isto e diz se te dá algum erro.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<?php

/*-------------------------------
Funções de manipulação de BDs MySQL
-------------------------------*/
function DBConn()
{
        $dbUser = "root";
        $dbPwd = "";
        $dbName = "1";
        $dbHost = "localhost";
        $tabela         =       "base";
       
        if (!($conn = mysql_connect($dbHost,$dbUser,$dbPwd))) return -1;
        if (!mysql_select_db($dbName,$conn)) return -2;
        return $conn;
}


function DBDisplayTable($tablename, $conn)
{
       $query = "INSERT INTO base (nome, nick, pass, tel, email)
       VALUES ('$nome','$nick','$pass','$tel','$email')"; //insere os campos na tabela"
       echo  mysql_errno($conn).": ".mysql_error($conn);
}      
       
?>
</body>
</html>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu faço submit, e abre a 2ª pagina em branco, vou a BD  e nada...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu nao percebo muito, mas tem ai todo o codigo que ja fiz... :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok. Então eu explico. As funções servem para organizar o código e para serem reutilizáveis, ou seja, podes ter o código dividido entre ficheiros e depois, chamas as funções num ficheiro principal. Ou então, para em vez de escreveres o mesmo código várias vezes, o que pode ser necessário em qualquer altura, escreves uma função e depois, com apenas uma linha de código, chamas a função. Para chamar a função basta escreveres o nome da função, abres e fechas parênteses, e dentro desses parênteses defines os argumentos, caso existam, da função.

Neste caso, será assim.

DBConn();
DBDisplayTable(); //Os argumentos nesta função são desnecessários.

Ou seja, no final, e com umas pequenas alterações no código, o ficheiro deverá ficar assim.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<?php

/*-------------------------------
Funções de manipulação de BDs MySQL
-------------------------------*/
function DBConn()
{
        $dbUser = "root";
        $dbPwd = "";
        $dbName = "1";
        $dbHost = "localhost";
        $tabela = "base";
       
        if (!($conn = mysql_connect($dbHost,$dbUser,$dbPwd))) return -1;
        if (!mysql_select_db($dbName,$conn)) return -2;
        return $conn;
}


function DBDisplayTable()
{
        $query = 'INSERT INTO base (nome, nick, pass, tel, email)
        VALUES ("'.$_POST["nome"].'","'.$_POST["nick"].'","'.$_POST["pass"].'","'.$_POST["tel"].'","'.$_POST["email"].'")'; //insere os campos na tabela
        mysql_query($query);
}       
DBConn();
DBDisplayTable();       
?>
</body>
</html>

EDIT: Tenta assim.

Para executares a query, tens de chamar a função mysql_query(), que tem como argumentos o nome da variável que guarda o nome da query. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguém já mencionou que não chamas as funções que tu mesmo definiste. A página 2 (suponho que seja essa a reg_trata.php) tem que chamar as funções DBConn() e DBDisplayTable() [claro que é a seguir à declaração delas], caso contrário elas nunca serão chamadas e nada acontece.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

edsousa, eu já editei o meu post anterior e chamei lá as funções. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois era por isso então...

Assim ja deu para inserir... Agora vou tentar fazer o login... se tiver mais alguma questão posto aqui e espero a vossa ajuda... Muito obrigado

CUmprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas... ca esta outro duvida...

agora gostava de saber como é que comparo os campos da BD com os do formulário  :hmm:

<?php


function DBConn()
{
$dbUser = "root";
        $dbPwd = "";
        $dbName = "1";
        $dbHost = "localhost";
        $tabela = "base";

if (!($conn = mysql_connect($dbHost,$dbUser,$dbPwd))) return -1;
if (!mysql_select_db($dbName,$conn)) return -2;
return $conn;
}

function DBDisplayTable($tablename, $conn)
{
$query = "select * from .$tabela ";

}
DBConn();
DBDisplayTable(); 
?>

cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na BD não, no Select.

Por exemplo:

$query = 'SELECT ID_USER FROM '.$tabela.' WHERE username = "'.$username.'" and password = "'.$password.'"';

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ao fazer isso depois para saber se existe ou não, tenho de fazer um count não?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, para saber o que foi escrito no formulario tenho de fazer o método post

"'.$_POST["nick"].'"

? ou serve assim como tenho?

<?php


function DBConn()
{
$dbUser = "root";
        $dbPwd = "";
        $dbName = "1";
        $dbHost = "localhost";
        $tabela = "base";

if (!($conn = mysql_connect($dbHost,$dbUser,$dbPwd))) return -1;
if (!mysql_select_db($dbName,$conn)) return -2;
return $conn;
}

function DBDisplayTable($tablename, $conn)
{

$query = "SELECT id FROM '.$tabela.' WHERE nick = "'.$nick.'" and pass = "'.$pass.'"";


}
DBConn();
DBDisplayTable(); 

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\por mim\login_tt.php on line 22

Segundo o que eu percebi o erro estará no SELECT?

<?php


function DBConn()
{
$dbUser = "root";
        $dbPwd = "";
        $dbName = "1";
        $dbHost = "localhost";
        $tabela = "base";

if (!($conn = mysql_connect($dbHost,$dbUser,$dbPwd))) return -1;
if (!mysql_select_db($dbName,$conn)) return -2;
return $conn;
}

function DBDisplayTable()
{
//$query = "select nick, pass from .$tabela where nick = "'.$_GET['nick'].'" AND pass = "'.$_GET['pass'].'"";
$query = 'SELECT id FROM '.$tabela.'WHERE nick ="'.$_POST["nick"].'" AND pass ="'.$_POST["pass"].'"';

$rows = mysql_num_rows($query);

if ($rows == 1) echo "Login efectuado com sucesso";
}	


DBConn();
DBDisplayTable(); 

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

exprimenta dar um espaço entre o '.$tabela.'WHERE :thumbsup:

$query = 'SELECT id FROM '.$tabela.' WHERE nick ="'.$_POST["nick"].'" AND pass ="'.$_POST["pass"].'"';

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

function DBDisplayTable()
{
        //$query = "select nick, pass from .$tabela where nick = "'.$_GET['nick'].'" AND pass = "'.$_GET['pass'].'"";
        $query = 'SELECT id FROM '.$tabela.'WHERE nick ="'.$_POST["nick"].'" AND pass ="'.$_POST["pass"].'"';
       echo $query;
        $rows = mysql_num_rows($query);
       
        if ($rows == 1) echo "Login efectuado com sucesso";
}

Diz-me o que é que isto mostra.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é que esperas ter o nome da tabela aí se a declaraste apenas no scope da DBConn?

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