Jump to content
MMarques

Login PHP

Recommended Posts

MMarques

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?

Share this post


Link to post
Share on other sites
andreb

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


...

Share this post


Link to post
Share on other sites
MMarques

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

Share this post


Link to post
Share on other sites
zero-cool

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,

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.