luis7 0 Posted October 21, 2011 Report Share Posted October 21, 2011 Numa cadeira da faculdade tenho que fazer um projecto que funcione à semelhança do Delicious (http://delicious.com/). Estava a criar o script em php para o login mas estou a falhar em qq coisa pois ele nunca entra naquele If. Podiam-me ajudar? <?php // começar ou retomar uma sessão session_start(); // se vier um pedido para login if (!empty($_POST)) { $db = new PDO('sqlite:database.db'); // verificar o utilizador em questão (pretendemos obter uma única linha de registos) $login = $db->prepare('SELECT * FROM users WHERE username = :username AND password = :password'); // receber o pedido de login com segurança $login->bindParam(':username', $_POST['username'], PDO::PARAM_STR,15); $login->bindParam(':password', $_POST['password'], PDO::PARAM_STR,15); $login->execute(); if(mysql_num_rows($login) == 1) { $_SESSION['id'] = $login['id_u']; $_SESSION['username'] = $login['username']; echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>"; } else { // falhou o login echo "<p>Utilizador ou password invalidos.<br><a href=\"login.html\">Tente novamente</a></p>"; } } ?> CREATE TABLE users( id_u INTEGER PRIMARY KEY AUTOINCREMENT, username varchar, password varchar, fname varchar, lname varchar, email varchar ); CREATE TABLE link( id_l INTEGER PRIMARY KEY AUTOINCREMENT, link varchar ); CREATE TABLE bookmark( id_l integer, id_u integer, primary key (id_u, id_l) ); Link to post Share on other sites
scorch 12 Posted October 21, 2011 Report Share Posted October 21, 2011 Não te esqueces-te de fazer hash à password? Se não, devias-te ter esquecido, pois era sinal que estavas a guardar as passwords encriptadas. Anyway, tu estás a misturar as funções mysql_* com PDO. PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to post Share on other sites
luis7 0 Posted October 21, 2011 Author Report Share Posted October 21, 2011 Para já estava a fazer isto muito simples. O hash (penso que seja isto (SHA1('Password')) é uma coisa que quero colocar depois. Se não for isto ficava agradecido que me explicasse o que é 😄 Eu ainda estou a iniciar-me no php e cometo assim algumas gafes 😁 O correcto seria colocar um fetch() no if? Link to post Share on other sites
scorch 12 Posted October 21, 2011 Report Share Posted October 21, 2011 Para já estava a fazer isto muito simples. O hash (penso que seja isto (SHA1('Password')) é uma coisa que quero colocar depois. Se não for isto ficava agradecido que me explicasse o que é 😄 Sim, é isso. Eu ainda estou a iniciar-me no php e cometo assim algumas gafes 😁 O correcto seria colocar um fetch() no if? Não, em vez do mysql_num_rows() usa: http://pt.php.net/manual/en/pdostatement.rowcount.php PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to post Share on other sites
luis7 0 Posted October 26, 2011 Author Report Share Posted October 26, 2011 Muito Obrigado. Estava a tentar fazer um script para visualizar as tags inseridas, mas ordená-las por ordem decrescente de ID. COntudo algo está a dar mal... <?php require 'protect.php'; $db = new PDO('sqlite:database.db'); $lin = $db->query('SELECT * FROM tags, bookmark WHERE bookmark.id_t = tags.id_t AND bookmark.id_u ='.$_SESSION['id'] 'ORDER BY id_t DESC;')->fetchAll(PDO::FETCH_ASSOC); foreach( $lin as $row2){ echo json_encode($row2['name']); echo '<br/>'; } echo "<p><a href=\"home.php\">Regressar</a></p>"; ?> CREATE TABLE users( id_u INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR, password VARCHAR, fname VARCHAR, lname VARCHAR, email VARCHAR ); CREATE TABLE links( id_l INTEGER PRIMARY KEY AUTOINCREMENT, link VARCHAR ); CREATE TABLE bookmark( id_u INTEGER REFERENCES users, id_l INTEGER REFERENCES links, id_t INTEGER REFERENCES tags, title VARCHAR, data DATE, time DATE, PRIMARY KEY (id_u, id_l, id_t) ); CREATE TABLE tags( id_t INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR ); Alguém me pode ajudar? Muito obrigado Link to post Share on other sites
fil79 5 Posted October 26, 2011 Report Share Posted October 26, 2011 Qual o erro? MCITP-MCTS-MCP Link to post Share on other sites
luis7 0 Posted October 26, 2011 Author Report Share Posted October 26, 2011 Não dá nenhum erro em específico, simplesmente não corre o script :\ Link to post Share on other sites
fil79 5 Posted October 26, 2011 Report Share Posted October 26, 2011 Já experimentaste fazer um output da query SELECT * FROM tags, bookmark WHERE bookmark.id_t = tags.id_t AND bookmark.id_u ='.$_SESSION['id'] 'ORDER BY id_t DESC;') e testá-lo directamente no SGBD? MCITP-MCTS-MCP Link to post Share on other sites
luis7 0 Posted October 26, 2011 Author Report Share Posted October 26, 2011 Já descobri o problema. Não estava a concatenar corretamente. Danke Link to post Share on other sites
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