bruger system - sessions og validering
Hey,Jeg er ny med PHP,
og er nået til at skal lave et brugersystem..
når jeg trykker mig ind på log ind formen og trykker en forkert kode, så gør den som den skal.
men trykker jeg koden ind rigtigt, så sker der ikke noget..
det er som om at den ikke gemmer noget i min session.
jeg har sat session_start() ind i toppen som man skal så vidt jeg har forstået.
og der virker det ikke..
sætter jeg den derimod under doctype, så kører det fint, men så kommer der til at stå en fejl meddelelse om noget header osv..
min mistanke er at det er fordi at jeg loader filerne igennem includes at den ikke kan finde ud af det..
men hvad er det jeg gør forkert siden at det ikke kan lade sig gøre..?
håber nogle af jer kan overskue det hele, og kan hjælpe..!
på forhånd tak..
hierarki over mappe og filer.
og hvad nogle af filerne indeholder af forhåbentligt relevante info.
rod:
index.php phpinfo.php template.php
images:
box_01.png box_02.png box_03.png box_041.png logo (1).png logo.png
includes:
admin.php login_form.php node.php top_menu.php
login.php membersonly.php session.php widget.php
settings:
settings.php
theme:
images main.css
jeg bruger kun siden index.php til at vise data,
og bruger querystrings (omsat med url rewriting) til at skabe en dynamisk side.
når jeg skal logge på
ser index.php sådan her ud. (jeg har fjernet html og styling, da det ikke er vigtigt formoder jeg)
<?php session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
require_once('includes/session.php');
require_once './template.php';
require_once('./settings/settings.php');
require('./includes/widget.php');
echo head('bruger system');
echo theme();
?>
<?php
if ($url=="administration" | $url=="badpassword" | $url=="logaf")
{
require('includes/admin.php');
}
else
require('includes/node.php');
?>
min includes/admin.php ser således her ud
<?php
if ($url == "logaf")
{
$_SESSION = array(); //fjern alle session variabler
session_destroy();
echo "Du er nu logget af.!";
}
if (isLoggedIn()==false)
require("includes/login_form.php");
else
require("includes/membersonly.php");
?>
login_form.php
<?php
if ($url=="badpassword")
echo "<p>brugernavnet eller koden du har indtastet er ikke korrekt, forsøg igen!</p>";
?>
<form name="login" action="includes/login.php" method="post">
Brugernavn: <input type="text" name="username" />
Kodeord: <input type="password" name="password" />
<input type="submit" value="Log ind" />
</form>
includes/login.php
<?php
require('session.php');
$username = $_POST['username'];
$password = $_POST['password'];
$con = mysql_connect('*****','*****','******');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// some code
mysql_select_db("massage", $con);
$username = mysql_real_escape_string($username);
$query = "SELECT password, salt
FROM users
WHERE username = '$username';";
$result = mysql_query($query);
if(mysql_num_rows($result) < 1) //no such user exists
{
header('Location: ../badpassword');
die();
}
$userData = mysql_fetch_array($result, MYSQL_ASSOC);
$hash = sha1( $userData['salt'] . sha1($password) );
if($hash != $userData['password']) //incorrect password
{
header('Location: ../badpassword');
die();
}
else
{
validateUser(); //sets the session data for this user
}
header('Location: ../administration');
?>
includes/session.php
<?php
function validateUser()
{
session_regenerate_id (); //this is a security measure
$_SESSION['valid'] = 1;
$_SESSION['userid'] = $userid;
}
function isLoggedIn()
{
if($_SESSION['valid'])
return true;
return false;
}
?>