Ik heb een loginscherm waar je je naam en wachtwoord in moet vullen.
Deze is zonder database en met maar 1 naam die ook in het script staat.

Als ik inlog kom ik netjes op de gewenste pagina.

Maar als ik dan in het menu op een link klik dan krijg ik de tekst die ik erin heb gezet als je niet gemachtigd bent deze pagina te bezoeken.

Hoe los ik dit op?

Stukje code waar ik zeg dat je de pagina mag tonen als het wachtwoord goed is en als je in het menu klikt dat je dan een pagina moet includen.
(ik weet niet of het uitmaakt maar alles zit in een map die ik chmod 777 heb gegeven)


<?php
if (($_POST['naam'] == "naam") && ($_POST['wachtwoord'] == "wachtwoord")) {
//Als het wachtwoord goed is laat dan de resultaten zien
?>
		<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
        	<tr>
        		<td colspan="2"><h1>Ons huishoudboekje </h1></td>
       		</tr>
        	<tr>
        		<td width="200" valign="top"><?php
	$query = "SELECT * FROM begroting ORDER BY begroting_naam";
	$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven");

	echo '<table class="tabelcat" cellpadding="0" cellspacing="1" >';

	while ($row = mysql_fetch_object($result)){
	echo '<tr><td><a href="?begroting_id='.$row->begroting_id.'" title="'.$row->begroting_naam.'">'.$row->begroting_naam.'</a></td></tr>';
	}
	echo '</tr></table>';
?></td>
        		<td width="500" valign="top">
<?php
	if (isset($_GET['begroting_id'])){
	include ("uitgaven.php");
	}else{
	?><table width="500" class="tabelgroot" align="center" border="0" cellspacing="2" cellpadding="4">
                	<tr>
                		<td colspan="2"><h1>Inkomsten</h1></td>
               		</tr>
                	<tr>
                		<td width="125" class="tdcatin" valign="top"><?php
		//Geef hier de naam weer van de categorie inkomsten
		$query1 = "SELECT cat_naam FROM categorie  WHERE budget_id = 1 ORDER BY cat_naam";
		$result1 = mysql_query($query1) or die ("Sorry maar ik kan naam van de inkomsten niet weergeven");
		while ($row1 = mysql_fetch_object($result1)){
		echo '<font class="inkomsten">'.$row1->cat_naam.'</font>';	
		}	
		?>
Zo, het jaar is alweer voorbij.....

Je ziet dat ik nog nooit met sessies heb gewerkt en nog niet goed snap hoe dat in zijn werk gaat.
Ik heb de browser afgesloten en opnieuw opgestart en toen ik de pagina rechtsstreeks invoerde kreeg ik de melding dat ik niet gemachtigd ben.

Dus het werkt gelukkig toch!

Slaap ze voor straks en een goed 2007
Te vroeg gejuigt...

Ik heb nu weer hetzelfde probleem als voorheen.
Als ik op de budget pagina ben en in het menu klik dan wordt de uitgaven pagina geinclude maar ik krijg weer de melding die onderaan de budget pagina staat dat ik geen toegang heb.

Ik heb verder niets gewijzigd.


<?php
session_start();  // Deze altijd helemaal bovenin je pagina!!
include("../budget/inloggen.php"); 
error_reporting (E_ALL & ~E_NOTICE);
//maak verbinding met de database
$connection = mysql_connect ($hostname,$user,$password) or die ( "Sorry maar ik kan geen contact maken met de database, probeer het later opnieuw of ververs uw browser.");
$db = mysql_select_db ($database, $connection) or die ("Sorry, maar ik kan de database niet openen.");
?>
<html>
<link href="/budget/budget.css" rel="stylesheet" type="text/css">
<body>
<?php
if ((($_POST['naam'] == "naam") && ($_POST['wachtwoord'] == "wachtwoord")) OR $_SESSION['login']) {

//Als het wachtwoord goed is laat dan de resultaten zien
?>


EDIT: Moet je die sessie ook al op de login pagina zetten?
Altijd session_start() bovenin, zeker op de inlogpagina. En tevens de $_SESSION['login'] op TRUE zetten direct na het inloggen.
SanThe schreef op 01.01.2007 00:24
Altijd session_start() bovenin, zeker op de inlogpagina. En tevens de $_SESSION['login'] op TRUE zetten direct na het inloggen.


Tja, en dat had ik dus vergeten.....
$_SESSION['login'] = TRUE;

Het werkt nu weer, gelukkig
Gelukkig.

Ook jij een heel gezond en gezellig 2007 gewenst. ;-)
ja wade programmeren van oud naar nieuw dat is wel fanatiek :)

Reageren