Session fout.
Allereerst sorry for alweer een topic over dit onderwerp, maar ik wil mijn probleem even goed uitleggen in de hoop dat iemand mij kan helpen.
Op mijn website wil ik iemand laten inloggen. Hiervoor gebruik ik session_start().
Het eerste probleem is dat mijn website een kader bevat die waar een pagina binnen in wordt geladen.
De session_start is het eerste wat moet worden geladen van de pagina. En daarom staat deze daar voor aan:
Quote:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Wizzardz</title>
<link rel="stylesheet" type="text/css" href="WizzardzMain.css">
</head>
<body>
<div id="Header">
<a href="?page=WizzardzArtwork.php"><img id="button1" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonArtwork.png" alt="Artwork"/></a>
<a href="http://wizzardz.actieforum.com/" target=_blank><img id="button2" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonForum.png" alt="Forum"/></a>
<a href="?page=WizzardzHome.php"><img id="button3" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonHome.png" alt="Home"/></a>
<a href="?page=WizzardzHelp.php"><img id="button4" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonHelp.png" alt="Help"/></a>
<a href="?page=WizzardzAccount2.php"><img id="button5" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonAccount.png" alt="Account"/></a>
</div>
<div id="Background">
<div id="Sidelist">
</div>
<div id="Main">
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Wizzardz</title>
<link rel="stylesheet" type="text/css" href="WizzardzMain.css">
</head>
<body>
<div id="Header">
<a href="?page=WizzardzArtwork.php"><img id="button1" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonArtwork.png" alt="Artwork"/></a>
<a href="http://wizzardz.actieforum.com/" target=_blank><img id="button2" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonForum.png" alt="Forum"/></a>
<a href="?page=WizzardzHome.php"><img id="button3" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonHome.png" alt="Home"/></a>
<a href="?page=WizzardzHelp.php"><img id="button4" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonHelp.png" alt="Help"/></a>
<a href="?page=WizzardzAccount2.php"><img id="button5" src="http://dl.dropbox.com/u/2765884/wizzardz%20textures/ButtonAccount.png" alt="Account"/></a>
</div>
<div id="Background">
<div id="Sidelist">
</div>
<div id="Main">
</div>
</div>
</body>
</html>
Als iemand op de Account knop klikt komt hij op een pagina.
Het eerste wat die pagina doet is kijken of de pagina een post mee krijgt met "username" en "password".
In dit geval, controleert de pagina of de naam en wachtwoord bestaan en bij elkaar horen.
Dit controleren gaat met de verwijzing: require_once('WizzardzCheckuser.php');.
Op dit script kom ik later nog terug.
Het tweede was de pagina doet is controleren of er een session "user" bestaat.
Als dit het geval is komt de gebruiker normaal op een gebruikers panel.
Op dit moment het ik dat gedeelte vervangen met: echo "hier komt het gebruiker deel";.
Als de session niet bestaat is er een echo waar de html code in staat voor inloggen.
Deze inlog verwijst weer naar dezelfde pagina.
Maar nu zit er wel een post en kan de pagina dus gaan inloggen.
Het deel van account checken werkt trouwens wel, hoewel er kleine foutjes in zitten als variabelen tussen haakjes.
Dit is de "account" pagina.
Quote:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Wizzardz</title>
<link rel="stylesheet" type="text/css" href="WizzardzAccount.css">
</head>
</html>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
if(isset($_POST["Nickname"]) && isset($_POST["Password"])){
require_once('WizzardzCheckuser.php');
$check=CheckUser($_POST["Nickname"],$_POST["Password"]);
if(!$check){
echo "wrong username or password <br></br>" ;
}
}
//tot hier werkt het nog.
if(empty($_SESSION["user"])){
echo "hier komt het gebruiker deel";
}
else{
echo '
Welcome! Before we can move you to the account panel, you must log in. Please enter your username and password below.
<br></br>
<form method="post" action="?page=WizzardzAccount2.php">
<table border="0" id="Table">
<tr>
<td>Nickname:</td>
<td><input type="text" name="Nickname" value=""></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" name="Password" value=""></td>
</tr>
<tr height="15"></tr>
<tr>
<td><a href="?page=WizzardzForgotpassword.php">Forgot password?</a></td>
<td><a href="?page=WizzardzAccountCreate.php">Create new account?</a></td>
</tr>
</table>
<input type="submit" id="LoginButton" value="Login">
</form>';
}
?>
if(isset($_POST["Nickname"]) && isset($_POST["Password"])){
require_once('WizzardzCheckuser.php');
$check=CheckUser($_POST["Nickname"],$_POST["Password"]);
if(!$check){
echo "wrong username or password <br></br>" ;
}
}
//tot hier werkt het nog.
if(empty($_SESSION["user"])){
echo "hier komt het gebruiker deel";
}
else{
echo '
Welcome! Before we can move you to the account panel, you must log in. Please enter your username and password below.
<br></br>
<form method="post" action="?page=WizzardzAccount2.php">
<table border="0" id="Table">
<tr>
<td>Nickname:</td>
<td><input type="text" name="Nickname" value=""></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" name="Password" value=""></td>
</tr>
<tr height="15"></tr>
<tr>
<td><a href="?page=WizzardzForgotpassword.php">Forgot password?</a></td>
<td><a href="?page=WizzardzAccountCreate.php">Create new account?</a></td>
</tr>
</table>
<input type="submit" id="LoginButton" value="Login">
</form>';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Wizzardz</title>
<link rel="stylesheet" type="text/css" href="WizzardzAccount.css">
</head>
</html>
En hier is het deel waar de naam en pass worden gechecked.
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
function CheckUser($user,$pass){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$mypassword = mysql_real_escape_string($pass);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$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"
return 1;
}
else {
return 0;
}
}
?>
function CheckUser($user,$pass){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$mypassword = mysql_real_escape_string($pass);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$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"
return 1;
}
else {
return 0;
}
}
?>
De fout die ik krijg, is dat de pagina altijd denkt dat er een session bestaat.
Ook als dit niet het geval is.
Als er nog vragen zijn zal ik deze zo spoedig mogelijk beantwoorden.
Ik hoop echt dat iemand weet wat de fout is.
Heel erg bedankt alvast!
Gewijzigd op 14/02/2011 15:15:35 door Bram unknown
oude topic verder.
Dubbel. Je kunt gewoon in je