• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

MMarques

Login PHP

6 mensagens neste tópico

Ola, tenho aqui um problema. Estou a tentar fazer um sistema de login para um site mas estou com uns problemas com as sessões.

Aqui está o código que tenho:

index.php

<?php
session_start();
if(!isset($_SESSION['myusername'])){
echo $_SESSION['myusername'];
}
else {
echo ("<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
	<tr>
	<form name="form1" method="post" action="checklogin.php">
	<td>
	<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
		<tr>
			<td colspan="3"><strong>Member Login </strong></td>
		</tr>
		<tr>
			<td width="78">Username</td>
			<td width="6">:</td>
			<td width="294"><input name="myusername" type="text" id="myusername"></td>
		</tr>
		<tr>
			<td>Password</td>
			<td>:</td>
			<td><input name="mypassword" type="text" id="mypassword"></td>
		</tr>
		<tr>
			<td> </td>
			<td> </td>
			<td><input type="submit" name="Submit" value="Login"></td>
		</tr>
	</table>
	</td>
	</form>
	</tr>
	</table>");
}
?>

checklogin.php

<?php
ob_start();
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="members"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"

$_SESSION['myusername'] = $myusername;

header("location:index.php");
}
else {
echo "Wrong Username or Password";
}

ob_end_flush();
?>

Portanto, isto supostamente verificaria se existe uma sessão, se não, apareceria o formulario para fazer login, se sim, então apareceria o nome do utilizador. Alguém me sabe explicar porque isto não está a acontecer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas

em primeiro lugar aconselho-te a usares sempre codebox

e em segundo lugar tenta:

echo ('<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
      <tr>
      <form name="form1" method="post" action="checklogin.php">
      <td>
      <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
         <tr>
            <td colspan="3"><strong>Member Login </strong></td>
         </tr>
         <tr>
            <td width="78">Username</td>
            <td width="6">:</td>
            <td width="294"><input name="myusername" type="text" id="myusername"></td>
         </tr>
         <tr>
            <td>Password</td>
            <td>:</td>
            <td><input name="mypassword" type="text" id="mypassword"></td>
         </tr>
         <tr>
            <td> </td>
            <td> </td>
            <td><input type="submit" name="Submit" value="Login"></td>
         </tr>
      </table>
      </td>
      </form>
      </tr>
      </table>');

no sitio do outro echo.. porque a mim davame um erro

cumps andreb

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem pelo menos esse problema está resolvido, agora dá-me um erro Notice: Undefined index: myusername in C:\Programas\EasyPHP 2.0b1\www\chklog\index.php on line 4, a linha 4 é onde tenho a aparecer o nome do utilizador se existir sessão.

Outra coisa, o que é isso das codebox? é o input type do formulario? se for eu só não o puz pois quero ver o que estou a introduzir para testes.

Obrigado pela ajuda :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if(!isset($_SESSION['myusername'])){
echo $_SESSION['myusername'];
}

A lógica está mal. Quando a variável não existe ( !isset() ) não vai ser possível mostrá-la a seguir como tinhas escrito. Penso que o que queres é isto:

if(isset($_SESSION['myusername'])){
echo $_SESSION['myusername'];
}

Por uma questão de optimização, utiliza o empty:

if(!empty($_SESSION['myusername'])){
echo $_SESSION['myusername'];
}

Abraço,

0

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