Ir para o conteúdo
SitoMan

Validar dados da base de dados para Login

Mensagens Recomendadas

SitoMan

Viva pessoal,

Estou a começar a mexer com PHP e SQL, e estou a ter um problema com a validação dos dados para login.

Depois de inserir o Nickname, Email e Password, deve fazer a verificação e, caso esteja tudo correto, o utilizador deve ser redimensionado para a página users.php (não está a acontecer).

Deixo aqui a minha página index e login.

INDEX

<?php
include 'header.php';
?>
<h2>Login</h2>

<form name="login" method="post" action="login.php">
Nickname:<br />
<input name="nickname" type="text" maxlength="40"/><br />
Email:<br />
<input name="email" type="text"><br />
Password:</br>
<input name="password" type="password" maxlength="20"/></br>
<input type="submit" value="Login" />
</form>

<?php include 'footer.php'; ?>

LOGIN

<?php
include 'header.php';
$table = "utilizadores";
$consulta = "SELECT * FROM " . $table . " WHERE Nickname='" . $_POST['nickname'] . "' AND Email='" . $POST['email'] . "' AND Password='" . $_POST['password'] . "'";
$resultado=mysqli_query($consulta);
if (mysql_num_rows($resultado)>0){
$linha=mysql_fetch_array($resultado);
$_SESSION['EMAIL']=$linha['EMAIL'];
header("location: user.php");
} else {
header("location: index.php?erro=1");
}
?>

HEADER

<?php
session_start();
$host = "localhost";
$user = "root";
$pass = "";
$con=mysqli_connect($host,$user,$pass);
$dbname = "teste";
$checkDB = mysqli_select_db($con,$dbname);
if(!$checkDB){
mysqli_query($con,"CREATE DATABASE " . $dbname);
echo "Base de dados " . $dbname . " criada!";
}
$table = "utilizadores";
$checkTable = mysqli_query($con,"SELECT * FROM " . $table);
if(!$checkTable){
$tableCode = "CREATE TABLE " . $table . "(ID int NOT NULL AUTO_INCREMENT, Nickname varchar(30) NOT NULL, Email varchar(30) NOT NULL, Password varchar(30) NOT NULL, PRIMARY KEY (ID));";
$checkTable = mysqli_query($con,$tableCode);
if($checkTable){
echo "Tabela " . $table . " criada!";
}
}
// Nota: Caso a tabela já esteja criada, embora com as colunas erradas, o script continua sem apresentar nenhum problema.
?>

SQL

n69l.png

----

Obrigado a todos pela ajuda. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
SitoMan

Boas!

Verifica se o caminho para user.php esta correcto,

Nao devias estar sempre a criar a tabela, a tabela crias uma vez e depois inseres os dados na tabela http://www.w3schools.com/php/php_mysql_insert.asp

Viva,

O ficheiro user.php está apenas com o texto "teste" e está a abrir corretamente.

Em relação ao criar sempre a tabela, não era esse o meu objetivo. O meu objetivo era:

Verificar se a tabela existe;

Se existir, inserir os dados; Se não existir, criar a tabela e inserir os dados.

Não é isto que o código está a fazer? Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AJBM

Tu no primeiro post disseste que ele não era reencaminhado para o users.php.

Pelo que vi não, tu apenas crias as tabela se ela nao existir mas nao estas a inserir dados.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
SitoMan

Tu no primeiro post disseste que ele não era reencaminhado para o users.php.

Pelo que vi não, tu apenas crias as tabela se ela nao existir mas nao estas a inserir dados.

O objetivo não é inserir dados, é só verificar. Isto é o login. Eu quero é que, se o Nickname, Email e Password coincidirem, seja redimensionado para o users.php.

O problema é que eu meto no Nickname, Email e Password correto e ele não redimensiona!

O registo fica para quando eu conseguir meter o a entrada a funcionar. :P

Editado por SitoMan

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Virneto

Tens aqui um post do p@p com uma questão que julgo ser semelhante ao que pretendes:

https://www.portugal-a-programar.pt/topic/61777-perfis-de-utilizador/

Vê o código do @happy... nas respstas 2 e 4.


"Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental

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

Linuxando.com | ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
SitoMan

ok.

Mesmo assim não gosto do teu header.

Não redimensiona para user.php então faz o que, vai para o index.php

Forca os dados em vez de post, põe os dados correctos.

Ve este link pode ajudar te http://pplware.sapo.pt/tutoriais/php-quinta-feira-sistema-de-login/

Entra no else, e vai para header("location: index.php?erro=1");

Tens aqui um post do p@p com uma questão que julgo ser semelhante ao que pretendes:

https://www.portugal-a-programar.pt/topic/61777-perfis-de-utilizador/

Vê o código do @happy... nas respstas 2 e 4.

Vou verificar tudo novamente, já cá passo dar um feedback.

Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
SitoMan

Não consegui descobrir o que estava a fazer de mal. Resolvi pegar no tutorial do pplware indicado aqui e já consegui.

Obrigado.

EDIT: Descobri que o erro tem a ver com estes códigos:

session_start();
$host = "localhost";
$user = "root";
$pass = "";
$con=mysqli_connect($host,$user,$pass);
$dbname = "teste";
$checkDB = mysqli_select_db($con,$dbname);

Não sei porquê, mas isto não faz a conexão. Em vez disso, utilizei os códigos antigos (já li que estão desatualizados, mas os outros não me estão a dar...):

session_start(); 
mysql_connect('localhost','root',''); 	
mysql_select_db('teste'); 	

Editado por SitoMan

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson
session_start();
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "teste";
$con=mysqli_connect($host,$user,$pass, $dbname);


You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
SitoMan

Thanks. No entanto, eu queria fazer algo do género:

Verificar se existe base de dados X e fazer ligação; Se não existir, criar.

Verificar se existe tabela Y e fazer ligação; Se não existir criar.

Isto, como posso fazer?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
taviroquai

Verificar se existe base de dados X e fazer ligação; Se não existir, criar.

Tenta isto... pode nao funcionar no teu servidor...

try {
$con=@mysqli_connect($host,$user,$pass, $dbname);
if ($con === false) throw new Exception('bla');
}
catch (Exception $e) {
$cmd = escapeshellcmd('mysql -u username -p -e "create database dbname"');
$test = shell_exec($cmd);
$con=@mysqli_connect($host,$user,$pass, $dbname);
}

NOTA: não faças apenas copy/paste isto é só um esboço!

Verificar se existe tabela Y e fazer ligação; Se não existir criar.

$r = mysql_query("show tables like 'nome_tabela'");
if (mysql_num_rows($r)) // existe
else {
// instruções para criar a tabela
}

Editado por taviroquai

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.