te gaan, teneinde meer te weten te komen over gebruikersniveaus, bedankt nog daarvoor!
Ik ben een aantal dagen bezig nu en heb nogal wat moeite om een script te schrijven wat omgaat met de $_SESSION['userdata'] zoals vermeld in het artikel. Sterker nog, mijn huidige loginscript laat in alle gevallen (dus ook zonder usernaam en password) de bezoeker naar de "logged.php" pagina gaan.
Ik heb een index pagina met daarin een login form, dat verwijst naar auth.php. Auth.php heeft het volgende script:
<?php
session_start ();
//Include db login and details
include("login details");
//username and password from signup form
$_POST['username'];
$_POST['password'];
//start query and retrieve Level to check login and user rights
$sql="SELECT Level from Testuser WHERE username='$username' AND password='$password'";
$result=mysql_query($sql);
//count rows and store result
$count=mysql_num_rows($result);
$row=mysql_fetch_assoc($result);
//start function to determine if username and password are correct, store username and Level in a session
if ($count = 1) {
$_SESSION['username']=$row['username'];
$_SESSION['Level']=$row['Level'];
header ('Location:logged.php');
}
else {
header ('Location:index.php');
}
?>
Logged.php heeft het volgende:
<?
require ("auth.php");
?>
Enig idee waar mijn script zover de mist in gaat, ik zie het niet meer...
Alvast bedankt!
$username en $password komen uit de form (method POST) en zijn de namen die de twee velden hebben meegekregen.
Dit staat er in de file die included wordt:
<?php
$host = "localhost";
$user = "**";
$password = "**";
$db = "**";
$connection = mysql_connect($host,$user,$password)
or die ("Could not connect to the server");
mysql_select_db($db,$connection)
or die ("Could not select DB");
?>
Ik snap je opmerking "waar contoleer je of er wel resultaat uit je query komt" niet helemaal, kun je proberen dit te verduidelijken?
Alvast bedankt!
?
Onbekende gebruiker
13-04-2008 16:17
In plaats van:
//username and password from signup form
$_POST['username'];
$_POST['password'];
//start query and retrieve Level to check login and user rights
$sql="SELECT Level from Testuser WHERE username='$username' AND password='$password'";
Moet dat natuurlijk dit zijn:
//username and password from signup form
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
//start query and retrieve Level to check login and user rights
$sql="SELECT Level from Testuser WHERE username='" . $username . "' AND password='" . $password . "'";
En het is altijd wel vriendelijk om een hash van het wachtwoord op te slaan in plaats van het wachtwoord zelf. Mocht er dan om een of andere reden data uit je database lekken, bijvoorbeeld door SQL injection, dan staat daar niet direct vol glorie het wachtwoord.
Bedankt voor de input zover! Er gebeurt in ieder geval iets...Alleen met de setup hieronder, blijft de browser in auth.php hangen.
<?php
session_start ();
//Include db login and details
include("login.inc");
//username and password from signup form
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
//start query and retrieve Level to check login and user rights
$sql="SELECT username, Level from Testuser WHERE username='".$username."' AND password='".$password."'";
$result=mysql_query($sql);
//count rows and store result
$count=mysql_num_rows($result);
//start function to determine if username and password are correct, store username and Level in a session
if ($count == 1) {
$row=mysql_fetch_assoc($result);
$_SESSION['username']=$row['username'];
$_SESSION['Level']=$row['Level'];
header ('Location:logged.php');
}
else {
header ('Location:index.php');
}
?>
Blijkbaar maak ik ergens nog een fout...Alvast bedankt voor jullie input!
Niemand een idee? Zou het aan het header () deel kunnen liggen, ik heb namelijk ook een script gevonden wat anders is opgebouwd maar min of meer hetzelfde probleem geeft...