Sessions
Ik ben al een tijdje wat met php bezig en ik snap het al voor een groot deel. Alleen de sessions snap ik niks van. Ik ben nu met men eerste echte PHP site bezig en ik wil dat mensen kunnen inloggen etc. Nou heb ik al een hoop tutorials gelezen maar ik snap het maar half en ik krijg mijn script niet goed werkend. ik heb login.php en posten.php. Login.php is een script van deze site die ik grondig verbouwt heb zodat ie naar men wensen is.
Login:
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
38
39
40
41
42
43
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
38
39
40
41
42
43
<?php
require("config.php");
session_start();
if ($_POST["loginnaam"] && $_POST["wachtwoord"])
{
$sql_db = "SELECT * FROM users WHERE loginnaam = '$_POST[loginnaam]' AND wachtwoord = '$_POST[wachtwoord]'";
$res_db = mysql_query($sql_db);
if (mysql_num_rows($res_db) >= 1)
{
$sess = mysql_fetch_object($res_db);
$sess_id = $sess->ID;
$sess_loginnaam = $sess->loginnaam;
$sess_level = $sess->level;
session_register(sess_id);
session_register(sess_loginnaam);
session_register(sess_level);
echo "U bent ingelogt als: $sess_loginnaam<br>";
echo "Met ID: $sess_id<br>";
echo "En level: $sess_level<br>";
echo "<a href=\"index.php?page=posten\">asdf</a>";
}
else
{
echo "Verkeerde loginnaam of paswoord<br>";
echo "Ga <a href=\"Javascript:history.back()\">terug</a> en probeer het opnieuw.";
}
}
else
{
// Geef een formulier
}
?>
require("config.php");
session_start();
if ($_POST["loginnaam"] && $_POST["wachtwoord"])
{
$sql_db = "SELECT * FROM users WHERE loginnaam = '$_POST[loginnaam]' AND wachtwoord = '$_POST[wachtwoord]'";
$res_db = mysql_query($sql_db);
if (mysql_num_rows($res_db) >= 1)
{
$sess = mysql_fetch_object($res_db);
$sess_id = $sess->ID;
$sess_loginnaam = $sess->loginnaam;
$sess_level = $sess->level;
session_register(sess_id);
session_register(sess_loginnaam);
session_register(sess_level);
echo "U bent ingelogt als: $sess_loginnaam<br>";
echo "Met ID: $sess_id<br>";
echo "En level: $sess_level<br>";
echo "<a href=\"index.php?page=posten\">asdf</a>";
}
else
{
echo "Verkeerde loginnaam of paswoord<br>";
echo "Ga <a href=\"Javascript:history.back()\">terug</a> en probeer het opnieuw.";
}
}
else
{
// Geef een formulier
}
?>
Bij de echo's geeft ie de juiste waardes maar als ik dan vervolgens maar posten.php ga dan werkt het ineens niet meer. Dit is mij script in posten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start();
if (session_is_registered("sess_loginnaam") && session_is_registered("sess_id") && $sess_level == 4)
{
// code voor het posten van een nieuws bericht
}
else {
echo "Error: Je hebt geen rechten";
}
?>
session_start();
if (session_is_registered("sess_loginnaam") && session_is_registered("sess_id") && $sess_level == 4)
{
// code voor het posten van een nieuws bericht
}
else {
echo "Error: Je hebt geen rechten";
}
?>
Het heeft laatst wel eens gewerkt maar daarna ineens niet meer zonder dat ik wat veranderd had :S.
Ik neem aan dat ik met dit script de variabelen op alle pagina's kan opvragen. Maar als de ingelogde persoon zen brouwser afsluit zal die weer opnieuw in moeten loggen of niet? Toen heb ik wat gelezen dat je dat dan met cookies kunt doen en met een of andere Session ID. Waar haal ik die ID vandaan? en ik moet dan natuurlijk ook al men waardes md5-en of iets dergelijks want anders kan men alles zo aanpassen of niet?
Ik hoop dat jullie me kunnen helpen
Grtz Roy
Gebruik $_SESSION :)
je kan makkelijker zo iets in een session lezen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
$sess = mysql_fetch_object($res_db);
$sessie->ID = $sess->ID;
$sessie->loginnaam = $sess->loginnaam;
$sessie->level = $sess->level;
session_register(sessie);
?>
$sess = mysql_fetch_object($res_db);
$sessie->ID = $sess->ID;
$sessie->loginnaam = $sess->loginnaam;
$sessie->level = $sess->level;
session_register(sessie);
?>
je kan ze dan gemakkelijk zo weer uitlezen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
$_SESSION['sessie']->ID
$_SESSION['sessie']->level
//je kan dit ook natuurlijk in een if gebruiken:
if($_SESSION['sessie']->level == "4")
{
}
?>
$_SESSION['sessie']->ID
$_SESSION['sessie']->level
//je kan dit ook natuurlijk in een if gebruiken:
if($_SESSION['sessie']->level == "4")
{
}
?>
veel succes
Maar hoe kun je aan die Session ID die in cookies of de url wordt gezet komen? is dat gewoon de ID die dan met md5 gecodeerd is?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
$sess = mysql_fetch_object($res_db);
$sessie->ID = $sess->ID;
$sessie->loginnaam = $sess->loginnaam;
$sessie->level = $sess->level;
//dit werkt
echo "$sessie->ID<br>";
echo "$sessie->loginnaam<br>";
echo "$sessie->level<br>";
session_register($sessie);
// Vanaf hier werkt het niet.
$asdf = $_SESSION['sessie']->loginnaam;
echo "$asdf";
//echo "$_SESSION['sessie']->id"; //deze geeft een error
//echo "$_SESSION['sessie']->level"; // deze geeft een error
if (session_is_registered($_SESSION['sessie']->loginnaam)) {
echo "U bent ingelogt";
?>
$sess = mysql_fetch_object($res_db);
$sessie->ID = $sess->ID;
$sessie->loginnaam = $sess->loginnaam;
$sessie->level = $sess->level;
//dit werkt
echo "$sessie->ID<br>";
echo "$sessie->loginnaam<br>";
echo "$sessie->level<br>";
session_register($sessie);
// Vanaf hier werkt het niet.
$asdf = $_SESSION['sessie']->loginnaam;
echo "$asdf";
//echo "$_SESSION['sessie']->id"; //deze geeft een error
//echo "$_SESSION['sessie']->level"; // deze geeft een error
if (session_is_registered($_SESSION['sessie']->loginnaam)) {
echo "U bent ingelogt";
?>
ps. Weet iemand misschien waarom je bij de superglobals de ene keer wel de ' moet gebruiken en de andere keer weer niet omdat ie dan een parse error geeft.
Maar hoe zit dat nou presies als ik die variabelen op een andere pagina wil hebben? Ik heb ooit een ander script gebruikt en daar kon ik die variabelen op elke pagina ophalen. Maar nu werkt dat niet. Want als ik nu naar een andere pagina ga en ik probeer daar de gegevens op te halen dan krijg ik weer deze: "Notice: Undefined index: loginnaam" error. de $ is dus leeg...
login.php:
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
38
39
40
41
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
38
39
40
41
<?php
session_start();
header();
error_reporting(E_ALL);
require("config.php");
if($_POST['loginnaam'] && $_POST['wachtwoord'])
{
$loginnaam = $_POST['loginnaam'];
$wachtwoord = $_POST['wachtwoord'];
$sql = "SELECT * FROM users WHERE loginnaam = '$loginnaam' AND wachtwoord = '$wachtwoord'";
$res = mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($res) >= 1)
{
$sess = mysql_fetch_object($res);
$_SESSION['loginnaam'] = $sess->loginnaam;
$_SESSION['ID'] = $sess->ID;
$_SESSION['level'] = $sess->level;
// Dit werkt dus ik neem aan dat de session dan geregistreert is.
echo "U bent ingelogt als: ".$_SESSION['loginnaam']."<br>";
echo "Met ID: ".$_SESSION['ID']."<br>";
echo "En level: ".$_SESSION['level']."<br>";
echo "<a href=\"index.php?page=posten\">asdf</a>";
}
else
{
echo "Verkeerde loginnaam of paswoord<br>";
echo "Ga <a href=\"Javascript:history.back()\">terug</a> en probeer het opnieuw.";
}
}
else {
// Geef een formulier
}
?>
session_start();
header();
error_reporting(E_ALL);
require("config.php");
if($_POST['loginnaam'] && $_POST['wachtwoord'])
{
$loginnaam = $_POST['loginnaam'];
$wachtwoord = $_POST['wachtwoord'];
$sql = "SELECT * FROM users WHERE loginnaam = '$loginnaam' AND wachtwoord = '$wachtwoord'";
$res = mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($res) >= 1)
{
$sess = mysql_fetch_object($res);
$_SESSION['loginnaam'] = $sess->loginnaam;
$_SESSION['ID'] = $sess->ID;
$_SESSION['level'] = $sess->level;
// Dit werkt dus ik neem aan dat de session dan geregistreert is.
echo "U bent ingelogt als: ".$_SESSION['loginnaam']."<br>";
echo "Met ID: ".$_SESSION['ID']."<br>";
echo "En level: ".$_SESSION['level']."<br>";
echo "<a href=\"index.php?page=posten\">asdf</a>";
}
else
{
echo "Verkeerde loginnaam of paswoord<br>";
echo "Ga <a href=\"Javascript:history.back()\">terug</a> en probeer het opnieuw.";
}
}
else {
// Geef een formulier
}
?>
Posten.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
session_start();
error_reporting(E_ALL);
// Deze zijn dus allemaal leeg
echo "".$_SESSION['loginnaam']."";
echo "<br>";
echo "".$_SESSION['ID']."";
echo "<br>";
echo "".$_SESSION['level']."";
echo "<br>";
if (isset($_SESSION[loginnaam]) && isset($_SESSION[wachtwoord]) && $_SESSION[level] == 2)
{
echo "Script om een bericht te posten";
}
else {
echo "Error: Je hebt geen rechten";
}
?>
session_start();
error_reporting(E_ALL);
// Deze zijn dus allemaal leeg
echo "".$_SESSION['loginnaam']."";
echo "<br>";
echo "".$_SESSION['ID']."";
echo "<br>";
echo "".$_SESSION['level']."";
echo "<br>";
if (isset($_SESSION[loginnaam]) && isset($_SESSION[wachtwoord]) && $_SESSION[level] == 2)
{
echo "Script om een bericht te posten";
}
else {
echo "Error: Je hebt geen rechten";
}
?>
Code (php)
wil hij graag boven aan hebben voordat hij output geeft, zo heb ik het geleerd.
en
&& $_SESSION[level] == 2)
waarom zit dit niet tussen een aparte?? ()
ik weet niet hoe dat laatste stukje werkt wat je hebt.
Krijg ik nu vast wel te horen van een phpmasterrrr
Gewijzigd op 10/06/2004 15:26:00 door P.v.Denzel
Maar nu heb ik eigenlijk nog 2 vraagjes over de cookies.
1) Kan het kwaat om je gegevens in de cookie NIET te coderen. dus gewoon loginnaam wachtwoord etc en zo inzetten.
2) Ik wil een cookie setten zo halverwege men script. Logisch dat ie een error geef maar hoe zou ik dat opkunnen lossen? Een include zou kunnen maar dan heb ik weer en los bestand waar bijna niks instaat :x