Hey,

Ik heb hier 2 scripts die ik gebruikt.
Onder het kopje "account" op mijn website moet de gebruiken worden verzonden naar of het inlog scherm, of het account scherm. Dit ligt er natuurlijk aan of de gebruiker is ingelogd. Hier zijn mijn scripts:


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Wizzardz</title>
<link rel="stylesheet" type="text/css" href="WizzardzAccount.css">
</head>
<?
if(isset($_POST["Nickname"]) && isset($_POST["Password"])){
require_once('WizzardzCheckuser.php');
$check=CheckUser($_POST["Nickname"],$_POST["Password"]);
if(!$check){
echo "wrong username or password" ;
}
}
if(isset($_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>';
}
?>
</html>


--


<?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"
$_SESSION['user'] = $myusername;
return 1;
}
else {
return 0;
}
}
?>


Met deze scripts laat hij elke keer het deel zien waar hij al is ingelogd.
Iemand een idee?

Bedankt!
Doctype is ook output, dus die hoort bij de html en niet bovenin voor de php-headers.
Ik mocht geen nieuw topic maken, dus post het hele bericht gewoon hier. Door het slotje van de admin is het bericht een beetje onoverzichtelijk geworden.

Hey,

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:
Code (php)
1
2
3
<?php
session_start();
?>


<!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">
Code (php)
<?php
if(isset($_GET['page']))
{
include($_GET['page']);
}
?>

</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:
Code (php)

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


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

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


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!
als je $_SESSION["user"] niet aanmaakt, bestaat hij niet en is hij dus altijd leeg. als je dan empty($_SESSION["user"])) doet zal hij altijd true terug geven.
Das vreemd... In mijn account check pagina staat dus dit:

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['user'] = $myusername;
//header("location:?page=WizzardzLoginWorked.php");
echo "Login succesfull" ;

}

Maar op een of andere manier werd dit niet gekopieerd

[size=xsmall]Toevoeging op 14/02/2011 16:05:12:[/size]

Oke ik kom er dus net achter dat mijn code gewoon helemaal niet gesaved was en dus wat ik net gekopieerd had niet klopt. Ik probeer het even te fixen
heb je op die pagina ook een session_start() staan?
en doe anders op het punt dat het fout gaat is:

print_r($_SESSION);
Ik was in de war gekomen omdat ik meerdere files had gemaakt omdat ik meerdere manieren had geprobeerd.
Ik heb de logincheck zo verandert nu:

<?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"
$_SESSION['user'] = $myusername;
//header("location:?page=WizzardzLoginWorked.php");
echo "Login succesfull" ;
return 1;
}
else {
return 0;
}
}
?>

[size=xsmall]Toevoeging op 14/02/2011 16:10:46:[/size]

Ik was in de war gekomen omdat ik meerdere files had gemaakt omdat ik meerdere manieren had geprobeerd.
Ik heb de logincheck zo verandert nu:

<?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"
$_SESSION['user'] = $myusername;
//header("location:?page=WizzardzLoginWorked.php");
echo "Login succesfull" ;
return 1;
}
else {
return 0;
}
}
?>

[size=xsmall]Toevoeging op 14/02/2011 16:12:01:[/size]

Oke nog even een ! voor de emty en hij werkt.

Heel erg bedankt voor je hulp want hierdoor zag ik de stomme fout!

^^
ik mis session_start(); op die pagina
Nee he, hij doet het toch niet!

De session_start staat helemaal voor op de pagina, zoals uitgelegd in mijn post hier boven.

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.
<?php
session_start();
?>


[size=xsmall]Toevoeging op 14/02/2011 16:23:30:[/size]

****************************************************************************************************************

En nu voor de laatste keer.

Hij doet het. Ik had een probleem met de session beeindigen.


Zet er please snel een slotje op. xD
Ik zou wel eens willen zien hoe/waar/wanneer je die functie aanroept,
Welke functie bedoel je dan?
Ik denk niet dat dit de meest praktische manier is, maar hier zijn mijn scripts voor je nog 1 keer op een rijtje:

WizzardzMain (ofwel het kader. Vaak index genoemt)

<?php
session_start();
?>

<!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">
<?php
if(isset($_GET['page']))
{
include($_GET['page']);
}
?>
</div>
</div>
</body>
</html>


De account pagina

<?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>" ;
}
}
if(!empty($_SESSION["user"])){
echo 'This is the users panel.<br>
Here you can choose what you want to do with your account. <br></br>
<table border="0">
<tr>
<td><a href="?page=WizzardzLogout.php">Logout</a></td>
</tr>
</table>';
}
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="password" 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>

Accountcheck pagina


<?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"
$_SESSION['user'] = $myusername;
//header("location:?page=WizzardzLoginWorked.php");
echo "Login succesfull <br></br>" ;
return 1;
}
else {
return 0;
}
}
?>

Reageren