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>';	
		}	
		?>
Heeft iemand een idee hoe ik dit op kan lossen.
Het komt denk ik omdat hij de pagina opnieuw moet laden.
Ik heb de pagina die ik include nu ook gewoon op dezelfde pagina gezet maar dat maakt ook geen verschil.

Ik moet hier snel mee verder en waarschijnlijk is het iets van niets.
Help....
Niet bumpen Elsy!!! Dat zou jij toch moeten weten, als oudgediende.
Sorry, sorry, maar er staat iemand achter me die resultaten wil zien!!
Elsy: Je moet een sessie maken, en op iedere pagina controleren of de sessie bestaat. Zo, ja: "Persoon is gemachtigd" Zo, nee: "Persoon is niet gemagtigd".


<?php
session_start();  // Deze altijd helemaal bovenin je pagina!!
if (($_POST['naam'] == "naam") && ($_POST['wachtwoord'] == "wachtwoord")) {
$_SESSION['login'] = TRUE;
//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>';    
        }    
?>  


en dan zet je bovenin iedere pagina:

<?php
session_start(); //Zorg dat deze weer bovenin staat!
if(!$_SESSION['login']) { //Als die sessie TRUE is
echo "Niet gemachtigd deze pagina te zien.";
die(); // of een andere manier dat de pagina verder wordt geladen, je kan ook nog een else maken natuurlijk.
}
?>
Het wil niet lukken.

Ik heb 3 pagina's.

1. De loginpagina in html, als je op inloggen klikt ga je naar de volgende pagina: budget.php

2.budget.php
Hier staat de volgende code op:

<?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")) {
$_SESSION['login'] = TRUE;
echo 'je bent ingelogd';
//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
				//Laat de begroting categorie zien
	$query = "SELECT * FROM begroting WHERE budget_id = 2 ORDER BY begroting_naam";
	$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven");

	echo '<table class="budget2" cellpadding="2" cellspacing="2" >';

	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><br />';
	//Laat de vakantie categorie zien
	$query = "SELECT * FROM begroting WHERE budget_id = 3 ORDER BY begroting_naam";
	$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven");

	echo '<table class="budget3" cellpadding="2" cellspacing="2" >';

	while ($row = mysql_fetch_object($result)){
	echo '<tr><td><a href="?begroting_id='.$row->begroting_id.'&budget_id=3" 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 ("budget/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>';	
		}	
		?></td>
                		<td width="375" class="tabelinkomsten" valign="top">
                			<table width="375"  border="0" cellspacing="0" cellpadding="0">
                				<?php
		//Geef hier de onderwerpen weer van de categorie inkomsten
		$query2 = "SELECT * FROM begroting WHERE budget_id = 1 ORDER BY begroting_naam";
		$result2 = mysql_query($query2) or die ("Sorry maar ik kan naam van de inkomsten niet weergeven");
		while ($row2 = mysql_fetch_object($result2)){
		echo '<tr><td class="tdinkomsten">'.$row2->begroting_naam.'</td><td class="tdinkomsten">&#8364; '.$row2->begroting_bedrag.'</td></tr>';	
		}	
		?>
                				<tr>
                					<td width="200" class="totaalin"><b>Totaal:</b></td>
                					<td width="175" class="totaalin">
                						<?php
		$query3 = "SELECT budget_id, SUM(begroting_bedrag) AS totaal FROM begroting WHERE budget_id = 1 GROUP BY budget_id";
		$result3 = mysql_query($query3) or die ("Sorry maar ik kan het totaalbedrag van de inkomsten niet weergeven");
		$row3 = mysql_fetch_object($result3);
		echo '&#8364; '.$row3->totaal.'';
		
		?></td>
               					</tr>
               				</table></td>
               		</tr>
                	</table>
        			<br>
        			<table width="500" class="tabelgroot" align="center" border="0" cellspacing="2" cellpadding="4">
                    	<tr>
                    		<td colspan="2"><h1>Uitgaven</h1></td>
                   		</tr>
                    	<?php
		//Geef hier de categorienaam weer van de uitgaven
		$query4 = "SELECT cat_id,cat_naam from categorie WHERE budget_id = 2 ORDER BY cat_naam";
		$result4 = mysql_query($query4) or die ("Sorry maar ik kan naam van de uitgaven niet weergeven");
		while ($row4 = mysql_fetch_object($result4)){
		?>
                    	<tr>
                    		<td width="125" class="tdcatuit" valign="top">
                    			<?php
		echo '<font class="inkomsten">'.$row4->cat_naam.'</font>';	
		?></td>
                    		<td width="375" class="tabeluitgaven" valign="top">
                    			<table width="375"  border="0" cellspacing="0" cellpadding="0">
                    				<?php
		
		//Geef hier de onderwerpen weer van de categorie uitgaven
		$query5 = "SELECT
		c.cat_id,
		c.cat_naam,
		c.budget_id,
		u.begroting_naam,
		u.begroting_bedrag,
		u.cat_id,
		u.budget_id
		FROM categorie AS c
		JOIN
		begroting AS u
		ON c.cat_id = u.cat_id WHERE u.cat_id = $row4->cat_id
		ORDER BY u.begroting_naam";
		$result5 = mysql_query($query5) or die ("Sorry maar ik kan naam van de uitgaven niet weergeven");
		while ($row5 = mysql_fetch_object($result5)){
		
		echo '<tr><td class="tdinkomsten">'.$row5->begroting_naam.'</td><td class="tdinkomsten">&#8364; '.$row5->begroting_bedrag.'</td></tr>';	
		}
		?>
                    				<tr>
                    					<td width="200" class="totaaluit"><b>Totaal:</b></td>
                    					<td width="175" class="totaaluit">
                    						<?php
		$query6 = "SELECT budget_id, SUM(begroting_bedrag) AS totaal FROM begroting WHERE budget_id = 2 AND cat_id = $row4->cat_id GROUP BY budget_id";
		$result6 = mysql_query($query6) or die ("Sorry maar ik kan het totaalbedrag van de inkomsten niet weergeven");
		$row6 = mysql_fetch_object($result6);
		echo '&#8364; '.$row6->totaal.'';
		?></td>
                   					</tr>
                   				</table></td>
                   		</tr>
                    	<?php
						}
						?>
                    	</table>
        			<br>
        			<table class="tabelgroot" width="500" align="center" border="0" cellspacing="1" cellpadding="4">
                    	<tr>
                    		<td class="tdtotaalgroen">Totaal inkomsten:</td>
                    		<td class="tdgroen"><?php
		$query7 = "SELECT budget_id, SUM(begroting_bedrag) AS totaal FROM begroting WHERE budget_id = 1 GROUP BY budget_id";
		$result7 = mysql_query($query7) or die ("Sorry maar ik kan het totaalbedrag van de inkomsten niet weergeven");
		$row7 = mysql_fetch_object($result7);
		echo '&#8364; '.$row7->totaal.'';
		
		?></td>
                   		</tr>
                    	<tr>
                    		<td class="tdtotaalrood">Totaal uitgaven:</td>
                    		<td class="tdrood"><?php
		$query8 = "SELECT budget_id, SUM(begroting_bedrag) AS totaal FROM begroting WHERE budget_id = 2 GROUP BY budget_id";
		$result8 = mysql_query($query8) or die ("Sorry maar ik kan het totaalbedrag van de inkomsten niet weergeven");
		$row8 = mysql_fetch_object($result8);
		echo '&#8364; '.$row8->totaal.'';
		
		?></td>
                   		</tr>
                    	<tr>
                    		<td class="over">Over of Tekort:</td>
                    		<td class="overzwart"><?php
		$query9 = "SELECT budget_id, SUM(begroting_bedrag) AS totaal FROM begroting WHERE budget_id = 1 GROUP BY budget_id";
		$result9 = mysql_query($query9) or die ("Sorry maar ik kan het totaalbedrag van de inkomsten niet weergeven");
		$row9 = mysql_fetch_object($result9);
		
		
		$query10 = "SELECT budget_id, SUM(begroting_bedrag) AS totaal FROM begroting WHERE budget_id = 2 GROUP BY budget_id";
		$result10 = mysql_query($query10) or die ("Sorry maar ik kan het totaalbedrag van de inkomsten niet weergeven");
		$row10 = mysql_fetch_object($result10);
		echo '&#8364; '.($row9->totaal-$row10->totaal).'';
		?></td>
                   		</tr>
                    	</table>
						<?php
						}
						?></td>
       		</tr>
        	</table>
		<br>
<br>

<br>
<br>

<br>
<br>
<?php


}else{
echo 'Geen toegang.';
}
?>

</body>
</html>


Als ik op deze pagina kom zie ik de tabel die ik moet zien, dat is dus goed.
Maar zo gauw ik in het menu klik dan wordt niet die pagina in de tabel geopend maar krijg ik de boodschap die helemaal onderaan de pagina staat: Geen toegang.

Ik heb al geprobeerd om de te includen pagina anders aan te roepen omdat het in de map "budget" zit.
Dus include("../budget/uitgaven.php") of include("budget/uitgaven.php") of include("uitgaven.php") maar dat maakt allemaal niets uit. Ook als ik hier even een tekst echo gaat hij naar het eind van de pagina.

Dit is de code van uitgaven.php
<?php
session_start(); //Zorg dat deze weer bovenin staat!
if(!$_SESSION['login']) {    //Als die sessie TRUE is
    echo "Niet gemachtigd deze pagina te zien.";
    }else{
?>


<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
	<tr>
		<td colspan="3"><?php
		//Geef hier de naam weer van de categorie uitgaven
		$query1 = 'SELECT begroting_naam, begroting_bedrag FROM begroting  WHERE begroting_id = '.$_GET['begroting_id'].' AND budget_id = 2 ORDER BY begroting_naam';
		$result1 = mysql_query($query1) or die ("Sorry maar ik kan naam van de uitgaven niet weergeven");
		$row1 = mysql_fetch_object($result1);
		echo '<font class="inkomsten">'.$row1->begroting_naam.'</font>';	
		?></td>
	</tr>
	<tr>
		<td width="125"><?php echo 'Per maand: &euro; '.$row1->begroting_bedrag.''; ?> </td>
		<td><?php echo 'Per jaar: &euro; '.($row1->begroting_bedrag * 12).''; ?></td>
		<td width="125"><?php
		$query3 = 'SELECT begroting_id, SUM(uitgave_bedrag) AS totaal FROM uitgaven WHERE begroting_id = '.$_GET['begroting_id'].' GROUP BY begroting_id';
		$result3 = mysql_query($query3) or die ("Sorry maar ik kan het totaalbedrag van de uitgaven niet weergeven");
		$row3 = mysql_fetch_object($result3);
		echo 'Saldo: &euro; '.($row1->begroting_bedrag * 12) - ($row3->totaal).'';
		
		?> </td>
	</tr>
	<tr>
		<td><h1>Datum</h1></td>
		<td><h1>Omschrijving</h1></td>
		<td><h1>Bedrag</h1></td>
		
	</tr>
	<tr>
	<?php
	$query3 = 'SELECT * FROM uitgaven  WHERE begroting_id = '.$_GET['begroting_id'].' ORDER BY uitgave_datum';
		$result3 = mysql_query($query3) or die ("Sorry maar ik kan de uitgaven niet weergeven");
		while ($row3 = mysql_fetch_object($result3)){
		?>
		<td><?php echo '-'.$row3->uitgave_datum.''; ?></td>
		<td><?php echo ''.$row3->uitgave_omschrijving.''; ?></td>
		<td><?php echo '&euro; '.$row3->uitgave_bedrag.''; ?></td>
	</tr>
</table>
<?php
}

?>

Jan Koehoorn schreef op 31.12.2006 17:05
Niet bumpen Elsy!!! Dat zou jij toch moeten weten, als oudgediende.


Oh, wat voel ik me een oen!
Ik dacht dat je iets anders bedoelde....

Ik geloof dat bumpen (increment) betekend dat je geen while lus in een while lus mag zetten? Heb ik dat goed.

Maar hoe doe je het dan.........maar even verder zoeken.....of misschien dat iemand me verder kan helpen.
if ((($_POST['naam'] == "naam") && ($_POST['wachtwoord'] == "wachtwoord")) OR $_SESSION['login']) {
Nog een probleempje....

Ik kan nu alle pagina's gewoon in de browser bekijken en dat is natuurlijk niet de bedoeling.
Heb je dat ook als je de browser eerst hebt afgesloten? Want de session blijft bestaan totdat je de browser sluit.

Reageren