SitoMan Posted August 2, 2013 at 06:39 PM Report #520711 Posted August 2, 2013 at 06:39 PM 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 http://img27.imageshack.us/img27/4413/n69l.png ---- Obrigado a todos pela ajuda. 🙂
AJBM Posted August 2, 2013 at 07:31 PM Report #520712 Posted August 2, 2013 at 07:31 PM 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
SitoMan Posted August 2, 2013 at 08:30 PM Author Report #520714 Posted August 2, 2013 at 08:30 PM 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.
AJBM Posted August 2, 2013 at 08:49 PM Report #520717 Posted August 2, 2013 at 08:49 PM 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.
SitoMan Posted August 2, 2013 at 09:14 PM Author Report #520720 Posted August 2, 2013 at 09:14 PM (edited) 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. 😛 Edited August 2, 2013 at 09:15 PM by SitoMan
AJBM Posted August 2, 2013 at 09:26 PM Report #520721 Posted August 2, 2013 at 09:26 PM 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/
Virneto Posted August 2, 2013 at 09:40 PM Report #520723 Posted August 2, 2013 at 09:40 PM 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 | ...
SitoMan Posted August 2, 2013 at 09:47 PM Author Report #520724 Posted August 2, 2013 at 09:47 PM 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!
SitoMan Posted August 2, 2013 at 10:40 PM Author Report #520727 Posted August 2, 2013 at 10:40 PM (edited) 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 August 2, 2013 at 10:50 PM by SitoMan
N3lson Posted August 3, 2013 at 08:47 PM Report #520781 Posted August 3, 2013 at 08:47 PM 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.
SitoMan Posted August 4, 2013 at 09:11 PM Author Report #520821 Posted August 4, 2013 at 09:11 PM 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?
taviroquai Posted August 5, 2013 at 12:16 AM Report #520824 Posted August 5, 2013 at 12:16 AM (edited) 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 August 5, 2013 at 12:22 AM by taviroquai
SitoMan Posted August 5, 2013 at 12:17 AM Author Report #520826 Posted August 5, 2013 at 12:17 AM Obrigado, vou experimentar. 🙂
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