Developer17 Posted April 23, 2015 at 10:59 AM Report Share #581696 Posted April 23, 2015 at 10:59 AM (edited) Bons dias! Acho que finalmente consegui criar um sistema login em condições, contudo ao inserir o user e a pass dá-me o seguinte erro: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Doubleh\login.php on line 24 o meu doc login.php é o seguinte: <?php session_start(); // Starting Session $error=''; // Variable To Store Error Message if (isset($_POST['submit'])) { if (empty($_POST['username']) || empty($_POST['password'])) { $error = "Username or Password is invalid"; } else { // Define $username and $password $username=$_POST['username']; $password=$_POST['password']; // Establishing Connection with Server by passing server_name, user_id and password as a parameter $connection = mysql_connect("localhost", "root", ""); // To protect MySQL injection for Security purpose $username = stripslashes($username); $password = stripslashes($password); $username = mysql_real_escape_string($username); $password = mysql_real_escape_string($password); // Selecting Database $db = mysql_select_db("teste", $connection); // SQL query to fetch information of registerd users and finds user match. $query = mysql_query("select * from users where password='$password' AND username='$username'", $connection); $rows = mysql_num_rows($query); if ($rows == 1) { $_SESSION['login_user']=$username; // Initializing Session header("location: profile.php"); // Redirecting To Other Page } else { $error = "Username or Password is invalid"; } mysql_close($connection); // Closing Connection } } ?> Edited April 23, 2015 at 12:20 PM by apocsantos geshi Link to comment Share on other sites More sharing options...
Solution HappyHippyHippo Posted April 23, 2015 at 11:16 AM Solution Report Share #581699 Posted April 23, 2015 at 11:16 AM altera a seguinte linha e diz o que aparece: $query = mysql_query("select * from users where password='$password' AND username='$username'", $connection) or die(mysql_error()); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Developer17 Posted April 23, 2015 at 11:25 AM Author Report Share #581702 Posted April 23, 2015 at 11:25 AM (edited) altera a seguinte linha e diz o que aparece: $query = mysql_query("select * from users where password='$password' AND username='$username'", $connection) or die(mysql_error()); Hum, agora nem sequer me deixa abrir a página, coloco no endereço o "localhost/Doubleh/index.php" e ele passa a "localhost/Doubleh/profile.php" e na página aparece Esta página Web tem um ciclo de redireccionamento Edited April 23, 2015 at 11:25 AM by Developer17 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 23, 2015 at 11:34 AM Report Share #581705 Posted April 23, 2015 at 11:34 AM Hum, agora nem sequer me deixa abrir a página, coloco no endereço o "localhost/Doubleh/index.php" e ele passa a "localhost/Doubleh/profile.php" e na página aparece Esta página Web tem um ciclo de redireccionamento isso é porque alteraste mais coisas do que disse para alterar ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Developer17 Posted April 23, 2015 at 01:58 PM Author Report Share #581718 Posted April 23, 2015 at 01:58 PM isso é porque alteraste mais coisas do que disse para alterar ... Tinhas razão, tinha alterado uma coisa para testar e esqueci-me de voltar a colocar igual.. Voltei a colocar o código todo como tinha no inicio e agora já está tudo a funcionar, não entendo. De qualquer forma muito obrigado pelo teu tempo e ajuda 🙂 Link to comment Share on other sites More sharing options...
chbcl Posted April 23, 2015 at 02:05 PM Report Share #581720 Posted April 23, 2015 at 02:05 PM Tinhas razão, tinha alterado uma coisa para testar e esqueci-me de voltar a colocar igual.. Voltei a colocar o código todo como tinha no inicio e agora já está tudo a funcionar, não entendo. De qualquer forma muito obrigado pelo teu tempo e ajuda 🙂 WTF?! die(); resolve problemas agora? AHAHAHHAHAHAAHAHHAHAHAHAHHAHA 1º Foste tu que 'criaste' mesmo isso? Se sim, porque usas partes em inglês e outras em português? ahah 2º Não está bem em condições porque estás a usar uma versão descontinuada de conexão à base de dados 1 Report developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
Developer17 Posted April 23, 2015 at 02:47 PM Author Report Share #581724 Posted April 23, 2015 at 02:47 PM Agora só estou com um problema... É que incorporei este session login no meu "site" e tenho uma stylesheet para uma caixa de login e ele não me está a assumir essa formatação. Portanto, o index.php está desta forma: <?php include('login.php'); // Includes Login Script if(isset($_SESSION['login_user'])){ header("location: profile.php"); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>DoubleH</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> <!-- Le styles --> <link href="css/bootstrap.css" rel="stylesheet"> <link href="css/login.css" rel="stylesheet"> <style type="text/css"> body { padding-top: 60px; padding-bottom: 40px; } .bgcolor { background-color: none; } .lightblue { background-color: none; } </style> <link href="css/bootstrap-responsive.css" rel="stylesheet"> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!-- Le fav and touch icons --> <link rel="shortcut icon" href="../assets/ico/favicon.ico"> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png"> <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png"> </head> <body> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container-fluid"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="#">DoubleH</a> <div class="nav-collapse collapse"> <p class="navbar-text pull-right"> Logged in as <a href="profile.php" class="navbar-link">Username</a> </p> <ul class="nav"> <li class="active"><a href="#">Home</a></li> <li><a href="cliente.html">Novo cliente</a></li> <li><a href="servico.html">Novo serviço</a></li> <li><a href="relatorio.html">Relatório</a></li> </ul> </div><!--/.nav-collapse --> </div> </div> </div> <br><br><br><br><br> <section id="login"> <h2>Login Form</h2> <form action="" method="post"> <label>UserName :</label> <input id="name" name="username" placeholder="username" type="text"> <label>Password :</label> <input id="password" name="password" placeholder="**********" type="password"> <input name="submit" type="submit" value=" Login "> <span><?php echo $error; ?></span> </form> </section> <hr> <footer> <p>© DoubleH 2015</p> </footer> </div><!--/.fluid-container--> <!-- Le javascript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> <script src="js/jquery-1.8.0.min.js"></script> <script src="js/bootstrap.js"></script> </body> </html> e o meu login.css assim: @charset "utf-8"; /* CSS Document */ .login { width: 300px; height: 285px; overflow: hidden; background: #1e1e1e; border-radius: 6px; margin: 50px auto; box-shadow: 0px 0px 50px rgba(0,0,0,.8); } .login .titulo { width: 298px; height: 14px; padding-top: 13px; padding-bottom: 13px; font-size: 14px; text-align: center; color: #bfbfbf; font-weight: bold; background: #121212; border: #2d2d2d solid 1px; margin-bottom: 30px; border-top-right-radius: 6px; border-top-left-radius: 6px; font-family: Arial; } .login form { width: 240px; height: auto; overflow: hidden; margin-left: auto; margin-right: auto; } .login form input[type=text], .login form input[type=password] { width: 200px; font-size: 12px; padding-top: 14px; padding-bottom: 14px; padding-left: 40px; border: none; color: #bfbfbf; background: #141414; outline: none; margin: 0; } .login form input[type=text] { border-top-left-radius: 6px; border-top-right-radius: 6px; border-top: #0b0b0b solid 1px; background: #141414 url(http://dev.dhenriquez.com/test-img/icons/111-user.png) 10px center no-repeat; } .login form input[type=password] { border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-top: #0b0b0b 1px solid; border-bottom: #353535 1px solid; background: #141414 url(http://dev.dhenriquez.com/test-img/icons/54-lock.png) 10px center no-repeat; } .login form .enviar { width: 240px; height: 12px; display: block; padding-top: 14px; padding-bottom: 14px; border-radius: 6px; border: none; border-top: #4eb2a8 1px solid; border-bottom: #161616 1px solid; background: #349e92; text-align: center; text-decoration: none; font-size: 12px; font-weight: bold; color: #FFF; text-shadow: 0 -1px #1d7464, 0 1px #7bb8b3; font-family: Arial; } .login .olvido { width: 240px; height: auto; overflow: hidden; padding-top: 25px; padding-bottom: 25px; font-size: 10px; text-align: center; } .login .olvido .col { width: 50%; height: auto; float: left; } .login .olvido .col a { color: #fff; text-decoration: none; font: 12px Arial; } /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block } body { line-height: 1 } ol, ul { list-style: none } blockquote, q { quotes: none } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; } Em 23/04/2015 às 16:05, chbcl disse: WTF?! die(); resolve problemas agora? AHAHAHHAHAHAAHAHHAHAHAHAHHAHA 1º Foste tu que 'criaste' mesmo isso? Se sim, porque usas partes em inglês e outras em português? ahah 2º Não está bem em condições porque estás a usar uma versão descontinuada de conexão à base de dados O die() não resolveu o problema, foi uma ótima sugestão para descobrir qual o problema. O erro devia estar em algum include ou conexão à base de dados que quando tive de vereficar novamente o código devo ter alterado sem reparar e começou a funcionar. O código não é meu, pesquiso na net, tiro umas coisinhas daqui e outras dali e vou tentando fazer funcionar. Dizes que a minha conexão à base de dados está descontinuada porque deveria utilizar mysqli? Link to comment Share on other sites More sharing options...
chbcl Posted April 23, 2015 at 02:53 PM Report Share #581725 Posted April 23, 2015 at 02:53 PM (edited) Sim, devias usar mysqli. É como comprares um telemóvel hoje, amanha ele ainda é bom mas daqui a uns anos com o avanço da tecnologia ele torna-se lento, com o avanço das falhas torna-se menos seguro, e com o avanço das funcionalidades torna-se limitado... Por isso, partindo do principio que nao vais usar o site apenas para fazer login, devias começar logo de raiz pelo mysqli Edited April 23, 2015 at 02:53 PM by chbcl developer @ filipealves.net filipealvesbcl [a] gmail.com github.com/filipealvesbcl Link to comment Share on other sites More sharing options...
Developer17 Posted April 23, 2015 at 02:55 PM Author Report Share #581726 Posted April 23, 2015 at 02:55 PM Sim, devias usar mysqli. É como comprares um telemóvel hoje, amanha ele ainda é bom mas daqui a uns anos com o avanço da tecnologia ele torna-se lento, com o avanço das falhas torna-se menos seguro, e com o avanço das funcionalidades torna-se limitado... Por isso, partindo do principio que nao vais usar o site apenas para fazer login, devias começar logo de raiz pelo mysqli Hum ok, vou ver então se o faço. Obrigado 😉 Link to comment Share on other sites More sharing options...
IodyLody Posted May 4, 2015 at 12:32 AM Report Share #582419 Posted May 4, 2015 at 12:32 AM lol, eu também comecei com mysql e depois passei para mysqli; mas hoje uso PDO e acho que tem inumeras vantagens, realmente recomendo! 😄 , fica a dica 😉 Link to comment Share on other sites More sharing options...
xaboto Posted May 7, 2015 at 08:41 AM Report Share #582658 Posted May 7, 2015 at 08:41 AM porque é que nos inputs do teu form nao metes required? Assim ele nao te deixa passar para o php sem teres alguma coisa escrita no user e password e escusavas de ter essa primeira parte para verificar se os campos estao vazios ou não. OFF: também tenho visto por ai para usar o comando msqli em vez de mysql ou até mesmo PDO, mas ainda não consegui perceber bem as diferenças. Basta-me simplesmente substituir mysql por mysqli e não preciso de mudar mais nada? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 7, 2015 at 10:15 AM Report Share #582666 Posted May 7, 2015 at 10:15 AM porque é que nos inputs do teu form nao metes required? Assim ele nao te deixa passar para o php sem teres alguma coisa escrita no user e password e escusavas de ter essa primeira parte para verificar se os campos estao vazios ou não. porque sempre, mas mesmo sempre se faz a verificação do lado do servidor mesmo existindo do lado do cliente. 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
xaboto Posted May 7, 2015 at 10:40 AM Report Share #582667 Posted May 7, 2015 at 10:40 AM porque sempre, mas mesmo sempre se faz a verificação do lado do servidor mesmo existindo do lado do cliente. Peço desculpa então, não fazia ideia. Link to comment Share on other sites More sharing options...
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