Hallo

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:

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

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:

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

?>

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
session_register enz is oud.
Gebruik $_SESSION :)
zet ook even bij login de session_start(); boven aan en daarna pas de require(); bij posten dit if(... ipv if (... laat de spatie weg

je kan makkelijker zo iets in een session lezen:

<?

$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:
<?
$_SESSION['sessie']->ID
$_SESSION['sessie']->level

//je kan dit ook natuurlijk in een if gebruiken:

if($_SESSION['sessie']->level == "4")
{
}
?>

veel succes
aah bedankt :). eens kijken of ik het nu wel weer fatsoenlijk aan de gang krijg.

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?
Sorry voor de dubbel post maar ik zit weer ergens vast. Ik denk dat het probleem bij de superglobals zit. Ik heb nu dit:

<?
$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.
Ik ben weer eens wat aan het proberen geweest en ik heb nou ook "error_reporting(E_ALL);" gebruikt. Het loginscript werkt nou bijna perfect. Ik krijg alleen dit bericht nog: "Notice: Undefined index: loginnaam"
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:
<?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
}
?>

Posten.php:
<?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";
}

?>
<?

if (isset($_SESSION[loginnaam]) && isset($_SESSION[wachtwoord]) && $_SESSION[level] == 2)

?>
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
Ik heb men script ondertussen werkende. Ik weet niet waar het aan lag. Ik was bezig met cookies als backup systeem zeg maar voor als de sessies het niet deden. En op een gegeven moment deden men sessies het :D.

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

Reageren