Menu met 1 verborgen item

Status
Niet open voor verdere reacties.

Atwist

Terugkerende gebruiker
Lid geworden
24 jan 2006
Berichten
1.055
Besturingssysteem
Wndows 10
Office versie
2016
Ik zou graag in mijn menu een item willen maken die alleen zichtbaar is voor de beheerder.
Heb thuis een kleine microcontroller die via een website op mijn intranet kan worden bestuurd en worden uitgelezen.
Voor de website heb ik een inlog scherm voor 2 gebruikers en 1 beheerder.
Nu wil ik het zo maken dat de beheerder alleen bij de instellingen kan komen, zoals bv.:

Gebruiker
  • home
  • dashboard
  • logboek

Beheerder
  • home
  • dashboard
  • logboek
  • service

Is zoiets mogelijk via Google kom ik het niet tegen!

Zie graag jullie reactie.
 
Hallo,

Heb toch nog iets gevonden krijg het alleen niet werkend :eek:

PHP:
		<form>
		<?php
session_start();
if $member="user2" echo <p><a href="service.php">Service</a></p>;
	else 
	?>
<script>
function myFunction() {
    alert("Alleen voor beheerder");
}
</script>
	</form>
 
Er gaan daar een aantal dingen mis. Allereerst wordt de $member variabele nergens aangemaakt, ten tweede mis je haakjes om je if statement, en ten derde mis je een =. Wat je nu doet is PHP vragen of het gelukt is om de string "user2" toe te wijzen aan de variabele $member, dat lukt natuurlijk altijd. Voor een vergelijking gebruik je ==.

Er staan geen " of ' om je link, ondanks dat hij binnen de php tags staat.

session_start() moet aan het begin van je code worden uitgevoerd, voordat er informatie naar de browser is gestuurd, dus sowieso voor je HTML.

Het stuk javascript wordt altijd uitgeprint, is dat de bedoeling?
Dus:
PHP:
<form>
<?php
$member = "blaat";// dit moet uiteraard ergens worden opgehaald, hoe en waar hangt van je systeem af. 

if ($member == "user2"):?>
	<p><a href="service.php">Service</a></p>
<?php else: ?>   
	<script>
	function myFunction() {
	    alert("Alleen voor beheerder");
	}
	</script>
<?php endif; ?>
</form>

Op deze manier krijgt "user2" de link te zien, de rest krijgt een alert voor de kiezen.
 
Laatst bewerkt:
Het ligt echt aan de manier hij jij iemand identificeert als beheerder. Heb je al een aanmeldsysteem? Op welke manier werkt dat?
Want één vaste methode om hierop te kunnen controleren is om deze reden niet. Het moet echt aansluiten op je inlogsysteem.

Met HTML alleen gaat het zeker niet lukken, omdat dit alleen maar een opmaak-taal is.
 
Hoi Naarling,

Inderdaad als ik er over na denk hoeft het javascript niet eens wand als "user2" is aangemeld dan moet de link zichtbaar zijn en anders niet.
PHP:
<form>
<?php
$member = "blaat";
 
if ($member == "user2"):?>
    <p><a href="service.php">Service</a></p>
?>
</form>
Zo kan het volgens mij ook.

Met jou script krijgt "user1" en "user2" geen link te zien terwijl ik bv wel zie dat ik als beheerder dus "user2" ben aangemeld. (zie ook screenshot)
PHP:
<?php
if (isset($_POST['submit']))
{
	$UserName=$_POST['UserName'];
	$Password=$_POST['Password'];
	
	if ($UserName=="user1" && $Password=="pw1")
		
	{
		session_start();
		$_SESSION['member']="Gebruiker1";
		header('location:service.php');
	}
	elseif ($UserName=="user2" && $Password=="pw2")
	{
		session_start();
		$_SESSION['member']="Beheerder";
		header('location:service.php');
	}
	else
	{
		header("location:index.php?error=1");
	}
}
?>

Schermafdruk van 2016-01-31 13:13:23.png
 
En wat als het wachtwoord nu uitlekt? Hoe kan iemand dat veranderen? En wat als je nu meerdere beheerders hebt?

Als ik een goed advies mag geven, gebruik een database. Hierin kan je de gebruikers opslaan, makkelijk wijzigen, wachtwoorden in opslaan etc...
Verder horen rechten nooit in een sessie. Als je iemand ontheft uit een recht, zal dit recht pas verdwijnen zodra de sessie is afgelopen.
 
Het is pure prive gebruik voor een microcontroller deze haalt de gegevens van een SD-kaart en kan geen database gebruiken.
 
Op zich zou een XML of SQLlite ook wel kunnen voldoen als database. Zolang je deze maar goed en veilig bewaart buiten je webroot.
Het vergt geen extra installaties op je webserver, verder hoeft de microcontroller geen database te gebruiken, want die leest toch alleen het bestand uit?
Dus praktisch lijkt me alsnog niks in de weg te staan?
 
Dit lijkt voor mij overbodig het is dus alleen voor prive gebruik is ook niet verbonden met het WWW op welke manier dan ook.
Dus er is geen enkel gevaar van buiten af:cool:
 
Ah, okee....
Het maakt het wel beter beheerbaarder in ieder geval zodat je niet steeds je code staat te dupliceren.
 
Helaas kom ik met dit probleem niet verder.

Of ik nu dit probeer
PHP:
<form>
<?php
$member = "Beheerder";// dit moet uiteraard ergens worden opgehaald, hoe en waar hangt van je systeem af. 
 
if ($member == "user2"):?>
    <p><a href="service.php">Service</a></p>
<?php else: ?>   
    <script>
    function myFunction() {
        alert("Alleen voor beheerder");
    }
    </script>
<?php endif; ?>
</form>
Of deze
PHP:
<form>
<?php
$member = "Beheerder";
 
if ($member == "Beheerder");
	?>
    <p><a href="service.php">Service</a></p>
</form>

Het lukt niet om het werkend te krijgen.:confused:
 
Met deze oplossing kom ik ook niet verder.

PHP:
 <?php
$UserName = "user2";// dit moet uiteraard ergens worden opgehaald, hoe en waar hangt van je systeem af. 
 
if ($UserName == "user2"):?>
    <p><a href="service.php">Service</a></p>
<?php else:   
    echo "  ";
 endif; ?>

Terwijl ik dacht dat ik nu aan alle voorwaarden had gedacht, Nee dus.

PHP:
<?php
if (isset($_POST['submit']))
{
	$UserName=$_POST['UserName'];
	$Password=$_POST['Password'];
	
	if ($UserName=="user1" && $Password=="pw1")
		
	{
		session_start();
		$_SESSION['member']="User1";
		header('location:service.php');
	}
	elseif ($UserName=="user2" && $Password=="pw2")
	{
		session_start();
		$_SESSION['member']="User2";
		header('location:settings.php');
	}
	else
	{
		header("location:index.php?error=1");
	}
}
?>

Ook dit staat goed
PHP:
  <?php
session_start();
if (!isset($_SESSION['member']))
{
	header('location:index.php');
}
?>
<html>
	<head>

Waarom wil dit niet????

Wat zie ik over het hoofd????
 
Laatst bewerkt:
Wat lukt er niet, wat gebeurt er?

Een paar opmerkingen:
- Je kan ook prima één session_start(); bovenaan plaatsen
- Er hoort ALTIJD een exit(); na je location-header.
- Waarom op lijn 4 en 5 variabelen kopieren, terwijl je in je if-statement prima je $_POST-variabelen kan gebruiken?
 
Ik krijg het niet voor elkaar dat als "user2" (beheerder) zich heeft aangemeld dan mag pas mag de link "settings" zichtbaar zijn.
Als "user1" (gebruiker) zich heeft aangemeld mag dus de link "settings" niet zichtbaar zijn.

Er gebeurt niets
 
Laatst bewerkt:
Je moet de username uit de sessie halen. En niet uit een string, zoals je in je eerste codeblok doet.
het staat ook in de gele comment vermeld ;).

Verder zou ik toch de gebruikers eens op een fatsoenlijke manier opslaan, bijv. in een array.
 
Begin nu behoorlijk aan mij zelf te twijflen; heb nu al zoveel geprobeerd dat ik niet meer weet wat ik verkeerd doe.
Naar mijn mening haal ik op de juiste manier de gegevens op ik krijg namelijk wel te zien welke "user" is ingelogd.

attachment.php


Dus help ik snap het niet meer:confused::(
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan