ik maak een login systeem alleen het werkt nog niet helemaal met de sessions....als je logint gebeurt er dit:

<?
// Als er geen error is dan gaan we inloggen
if(!$error)
{
session_start();
$_SESSION["log"] = true;
$_SESSION["naam"] = $gebruikersnaam;
echo ("U bent nu ingelogd als <b>$gebruikersnaam</b>. Klik <a href=\"index.php\">hier</a> om verder te gaan.");
}
}
?>

en dan bij waar je berichten kan posten:

<?
// Kijken of er door de gebruiker is ingelogged
if($_SESSION["log"] != true)
{
// Alle variabelen een waarde geven
$naam = "gast";

$sql = "INSERT INTO `berichten` (dag, tijd, naam, bericht, ipadres) VALUES ('" . $dag . "', '" . $tijd . "', '" . $naam . "', '" . $bericht . "', '" . $ipadres . "')";
mysql_query($sql) or die (mysql_error());
}
// Als er wel is ingelogged
elseif ($_SESSION["log"] == true)
{
$naam = $_SESSION["naam"];

$sql = "INSERT INTO `berichten` (dag, tijd, naam, bericht, ipadres) VALUES ('" . $dag . "', '" . $tijd . "', '" . $naam . "', '" . $bericht . "', '" . $ipadres . "')";
mysql_query($sql) or die (mysql_error());
}
?>

dus als er geen session is is de gebruiker dus niet geregistreerd en is zijn naam automatisch: gast. maar als er WEL een sessions is *dus $_SESSION["log"] = true* dan is de gebruiker dus wel ingelogt. maar nu wil ik doen dat de naam van de gebruiker dan het zelfde is als waarmee hij inlogt. dus:

$naam = $_SESSION["naam"];

alleen dit werkt niet....er word altijd gepost als 'gast' ook al ben je ingelogt....kan iemand mij helpen zodat je het met die sessies wel goed werkt.... Alvast bedankt,

Monnick
Dit als eerste in je script zetten
session_start();

Vraagje...
Of $_SESSION["log"] nou true of not true is, er wordt altijd een record in de tabel 'berichten' geplaatst.

Dit...

<?php
if($_SESSION["log"] != true)
{
// Alle variabelen een waarde geven
$naam = "gast";

$sql = "INSERT INTO `berichten` (dag, tijd, naam, bericht, ipadres) VALUES ('" . $dag . "', '" . $tijd . "', '" . $naam . "', '" . $bericht . "', '" . $ipadres . "')";
mysql_query($sql) or die (mysql_error());
}
// Als er wel is ingelogged
elseif ($_SESSION["log"] == true)
{
$naam = $_SESSION["naam"];

$sql = "INSERT INTO `berichten` (dag, tijd, naam, bericht, ipadres) VALUES ('" . $dag . "', '" . $tijd . "', '" . $naam . "', '" . $bericht . "', '" . $ipadres . "')";
mysql_query($sql) or die (mysql_error());
}

?>

...kan dan toch beter zo zijn...

<?php
session_start();

if($_SESSION["log"])
{
// Alle variabelen een waarde geven
$naam = "gast";
}
// Als er wel is ingelogged
else
{
$naam = $_SESSION["naam"];

}
$sql = "INSERT INTO `berichten` (dag, tijd, naam, bericht, ipadres) VALUES ('" . $dag . "', '" . $tijd . "', '" . $naam . "', '" . $bericht . "', '" . $ipadres . "')";
mysql_query($sql) or die (mysql_error());
?>

Als je dit altijd zo toepast, dan scheelt het een hap code en het is tevens beter te lezen en makkelijker te onderhouden (je hoeft maar 1 maal iets te veranderen ipv 2).

Je bent zoals SanThe al gezegd heeft de session_start() vergeten. Dit moet bovenaan iedere pagina staan waar sessions gebruikt worden.

Succes
@Barman: Inderdaad een zeer goede tip die je geeft. Dingen zoals bij true doet ie het wel en bij false niet (door de een of andere typfout) vermijdt je daar mee. En de code is veel strakker. Erg goed. Ikzelf heb een motto van moet ik iets twee keer typen, dan kan het korter.

Edit: Weer een typo. Arggg
@SanThe
Helaas kom je dit soort dingen nog heel vaak tegen. Daarmee bedoel ik niet alleen op dit forum :(
"Echte programmeurs" zijn luie donders :D

Mijn 200ste post is binnen :D
Barman schreef op 13.10.2005 00:05
"Echte programmeurs" zijn luie donders :D


Waarom denk je dat er 'Lazy' onder mijn naam staat;-)

Edit: Iets teveel uit de quote gehaald.
SanThe schreef op 13.10.2005 00:18

Waarom denk je dat er 'Lazy' onder mijn naam staat;-)

Edit: Iets teveel uit de quote gehaald.


Haha. Staat SanThe nog ergens voor :D
Barman schreef op 13.10.2005 00:05
@SanThe "Echte programmeurs" zijn luie donders :D


Hmmm...luie donder....ik noem mezelf efficient bezig zijn ;-P
@ barman bedankt voor je tip, daar heb ik wat aan, ik zal het veranderen :-) en programmeer ze iedereen he! :D
Barman schreef op 13.10.2005 12:54
Haha. Staat SanThe nog ergens voor :D


Ja:-)
ik gok dat het voor Sander staat ^^ of San Andreas :p

Reageren