Jump to content
SitoMan

Validar dados da base de dados para Login

Recommended Posts

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. :)

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Edited by SitoMan

Share this post


Link to post
Share on other 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 | ...

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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'); 	

Edited by SitoMan

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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
}

Edited by taviroquai

Share this post


Link to post
Share on other sites

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.