Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Developer17

[Resolvido] Session login

Mensagens Recomendadas

Developer17    2
Developer17

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
}
}
?>

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Developer17    2
Developer17

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

Editado por Developer17

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Developer17    2
Developer17

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
chbcl    9
chbcl

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


developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Developer17    2
Developer17

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 4/23/2015 às 15: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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
chbcl    9
chbcl

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

Editado por chbcl

developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Developer17    2
Developer17

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 ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
IodyLody    0
IodyLody

lol, eu também comecei com mysql e depois passei para mysqli; mas hoje uso PDO e acho que tem inumeras vantagens, realmente recomendo! :D, fica a dica ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
xaboto    0
xaboto

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

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.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
xaboto    0
xaboto

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.

Partilhar esta mensagem


Link 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.