If(!isset Probleempje

Status
Niet open voor verdere reacties.

grumbkow

Gebruiker
Lid geworden
20 aug 2007
Berichten
924
Hallo,

Ik heb voor een project een simpel inlog script nodig.

Het probleem is echter dat zodra ik inlog met de gegevens die in de Database staan mijn pagina alsnog zegt: "Niet ingelogd" de bedoeling is dus dat hij juist gaat zeggen dat ik wel ben ingelogd ben zodra ik via de login pagina gaat.

Hopelijk kan iemand mij hierbij helpen

Hieronder de codes, Login.php --> checklogin.php --> control.php

login.php
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>DVD Project door Jeffrey von Grumbkow</title>
<link href="stijl.css" rel="stylesheet" type="text/css" />
</head>
<body>

<br/><br/><br/><br/><br/>

<h1>Inloggen</h1>

<form name="inlogformulier" action="checklogin.php" method="POST">

<table id='inlogtabel'>
<tr>
<td><b>Gebruikersnaam:</b></td> <td><input type='text' name='uname' size='15'></td>
<tr>
<td><b>Wachtwoord:</b></td> <td><input type='password' name='pword' size='15'></td>
<tr>
<td></td><td><input type='submit' name='inloggen' size='15' value='Inloggen' action='checklogin.php'>
</table>

</form>


</body>
</html>

checklogin.php
PHP:
<?php

require_once('db.php');


// username and password sent from form
$uname=$_POST['uname'];
$pword=$_POST['pword'];

// To protect MySQL injection (more detail about MySQL injection)
$uname = stripslashes($uname);
$pword = stripslashes($pword);
$uname = mysql_real_escape_string($uname);
$pword = mysql_real_escape_string($pword);

$sql="SELECT * FROM users WHERE gebruikersnaam='$uname' and wachtwoord='$pword'";
$result=mysql_query($sql);

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

if($count==1){
// Register $uname, $pword and redirect to file "login_success.php"
session_register("ingelogd");
session_start();
$_SESSION['register'] = true;


header("location:control.php");
}
else {
$_SESSION['ingelogd'] = false;
echo "Wrong Username or Password";
}
?>

control.php
PHP:
<?php
require_once('db.php');

session_start();
if(!isset($_SESSION['ingelogd']))
{
echo 'Niet ingelogd';
}
else
{
echo 'Wel ingelogd';
} 

?>
 
Waarschijnlijk krijg je een foutmelding alleen heb je die uitgeschakeld.

checklogin.php
PHP:
<?php 
// Foutmeldingen weergeven
ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once('db.php'); 


// username and password sent from form 
$uname=$_POST['uname']; 
$pword=$_POST['pword']; 

// To protect MySQL injection (more detail about MySQL injection) 
$uname = stripslashes($uname); 
$pword = stripslashes($pword); 
$uname = mysql_real_escape_string($uname); 
$pword = mysql_real_escape_string($pword); 

$sql="SELECT * FROM users WHERE gebruikersnaam='$uname' and wachtwoord='$pword'"; 
$result=mysql_query($sql); 

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

if($count==1){ 
// Register $uname, $pword and redirect to file "login_success.php" 
session_register("ingelogd"); 
session_start(); 
$_SESSION['register'] = true; 


header("location:control.php"); 
} 
else { 
$_SESSION['ingelogd'] = false; 
echo "Wrong Username or Password"; 
} 
?>
Probeer dit eens en kijk of je een fout krijgt.
 
Ik logde in via login.php
en kwam uit bij control.php zonder enige foutmelding..
 
Waarschijnlijk ligt het dan aan het feit dat je session_register() (is "deprecated", niet aan te raden om verder te gebruiken!) aanroept voor je session_start() uitvoert.

Verder is het makkelijker om session_start() als eerste aan te roepen.

Probeer dit:
PHP:
<?php  
// Foutmeldingen weergeven 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 
// Daadwerkelijke code uitvoeren.
session_start();
require_once('db.php');  


// username and password sent from form  
$uname=$_POST['uname'];  
$pword=$_POST['pword'];  

// To protect MySQL injection (more detail about MySQL injection)  
$uname = stripslashes($uname);  
$pword = stripslashes($pword);  
$uname = mysql_real_escape_string($uname);  
$pword = mysql_real_escape_string($pword);  

$sql="SELECT * FROM users WHERE gebruikersnaam='$uname' and wachtwoord='$pword'";  
$result=mysql_query($sql);  

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

if($count==1) {
  // Register $uname, $pword and redirect to file "login_success.php"
  $_SESSION['ingelogd'] = true;
  // Doe je hier iets mee?
  $_SESSION['register'] = true;
  
  header("location:control.php");  
} else {  
  $_SESSION['ingelogd'] = false;
  echo "Wrong Username or Password";  
}  
?>

Verder heeft het weinig zin om te controleren of $_SESSION['ingelogd'] bestaat.
Die levert een TRUE op ook wanneer $_SESSION['ingelogd'] FALSE is!

control.php
PHP:
<?php 
require_once('db.php'); 

session_start(); 
if(!isset($_SESSION['ingelogd']) && $_SESSION['ingelogd'] != true) { 
  echo 'Niet ingelogd'; 
} else { 
  echo 'Wel ingelogd'; 
}  
?>
 
Heb even snel de codes gekopieerd en het werkt nu.

Ontzettend bedankt!.
Ik ga nu de codes even rustig doorlezen voor veranderen zodat ik er ook nog wat van leer.
Nogmaals bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan