Adminpagina beveiligen

Status
Niet open voor verdere reacties.

Egel007

Gebruiker
Lid geworden
4 dec 2007
Berichten
271
Beste forummers,

Ik heb voor mijn site een administrator paneel gemaakt, waarin ik nieuwtjes en andere dingen kan uploaden naar de database, maar die is op dit moment nog niet beveiligd (hij staat overigens ook nog lang niet online).

Ik heb momenteel de bestanden adminpaneel.php, input_admininloggen.php en admin_inlogscript.php.
Hierbij is adminpaneel.php natuurlijk de pagina waarom het allemaal draait. Overigens wordt het adminpaneel straks dus ook nog uitgebreid met verschillende pagina's, dus moeten ook die beveiligd zijn. Verder is input_admininloggen.php de pagina waarop het formulier staat. Dit heb ik zo gedaan vanwege de uitwerking met CSS. Tot slot heb ik nog het bestand admin_inlogscript.php. Dit is het bestand waarin het gehele PHP script in komt te staan.

Het gaat dus zeg maar als volgt. Op de index-pagina staat rechts onderaan een slotje. Wanneer je daarop klikt, wordt je gestuurd naar input_admininloggen.php. Wanneer je daar de gebruikersnaam en het wachtwoord van een admin (deze zet ik in een array in het PHP-script in admin_inlogscript.php, hier wil ik geen database voor gebruiken) kunt invoeren en op de knop 'Log in' hebt geklikt, wordt je dus doorgestuurd naar het adminpaneel, mits alles correct is ingevoerd.

Ik ben momenteel bezig zelf het PHP-script te schrijven, om het in ieder geval te proberen. Maar hoe krijg ik deze bestanden met elkaar gelinkt op de manier zoals ik hierboven beschreven heb. En hoe kan ik de submit button van het formulier laten linken. Hoe krijg ik het überhaubt werkende? Dat wanneer je bij input_admininloggen.php op de log in knop klikt, het php-script afspeelt en de inlognaam en wachtwoord wordt gecontroleerd en als dat jiust is, je doorgestuurd wordt naar het Administrator Paneel?

Bij voorbaat dank voor de mensen die mij willen helpen!
Met vriendelijke groet.
 
ik zou een sessie aanmaken bij het inloggen.
Als de sessie niet meer bestaat/ of afwijkt wat er in de database staat moet ie de sessie destroyen en redirecten naar de login pagina.

Met drie losse pagina's kan je dit nog handmatig maken.
Maar als je een groter systeem gaat bouwen is dit niet handig en zou ik meer de mvc pattern kiezen.
 
Ja, dat klopt. Maar dit wilde ik wat simpel en klein houden. Anyway, heb het nu werkend gekregen.
Ik heb alleen nu ook loguit.php gemaakt met session_destroy en een header naar index, alleen werkt de header dus niet. Wanneer ik header ("locatie: index.php"); doe, werkt het niet. Vermoedelijk omdat hy enkele mappen hoger ligt, maar als ik bijv header ("loc...:c:\xammp\htdocs\site\index.php"); doe, werkt het ook niet. Hoe krijg ik dit voor elkaar? Thankx
 
Het is :

PHP:
header( 'Location: http://jewebsite.nl/depagina.php' );

Headers zijn in het engels ;)
 
In loguit.php heb ik ook de header in het engels. Maar hij wordt gewoon niet geredirect.
Ik heb op dit moment
<?php
session_destroy();
header("Location: http://localhost/www.xboxunit.nl");
?>

Wanneer ik nu op de afbeelding klik om uit te loggen, krijg ik dus bij loguit.php:
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in C:\xampp\htdocs\www.xboxunit.nl\adminpaneel\admin_loguit.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\www.xboxunit.nl\adminpaneel\admin_loguit.php:2) in C:\xampp\htdocs\www.xboxunit.nl\adminpaneel\admin_loguit.php on line 3.

Dus klopt er iets niet. Maar ik begrijp het niet, als ik eerlijk moet zeggen. Ik begrijp niet hoe ik he werkend moet krijgen, zegmaar. Ik heb mijn site nog niet online, dus heb ik geen URL maar bestandsnaam voor de header, en bij adminpaneel werkte het wel (alleen die zat in dat geval in dezelfde map). Moet ik mijn loguit anders in de hoofdmap van de site plaatsen, net als index.php?
 
Headers already sent. Dat betekend, je stuurt al input naar de browser, en dan ga je redirecten. Dat mag dus niet. Je moet een header location altijd VOOR ENIGE input. Wat betekend, dus boven de <html> in principe.

Loguit.php is dus waarschijnlijk een include die je gedaan hebt, en dan gaat het niet werken. Ga je zo naar dit bestandje toe, dan zou het gewoon moeten werken, aangezien je niets output VOOR de header location.

P.s. Wat nog zou kunnen.. probeer dit eens;

PHP:
<?php session_destroy();
header("Location: http://localhost/www.xboxunit.nl"); ?>

Header doet moeilijk met spaties/ enters.
 
Dan krijg ik alsnog diezelfde error.
Ik heb op dit moment adminpaneel.php en admin_addnieuws.php. Admin_addnieuws.php is in dit geval een aanhang van het adminpaneel, waarbij je dus nieuws naar de database kunt sturen.
Op beide pagina's heb ik rechtsonderaan een slotje gemaakt (deze bevat de volgende code:
Code:
<div id="footeradminLock"><a href="../index.php"
        onclick="return confirm('U logt uit bij het Administrator Paneel en wordt teruggestuurd naar Xbox-Unit.nl')">
        <IMG SRC="../images/adminlockopen.png" ALT="Uitloggen als Administrator" border="0" />
        </a>
        </div>
). Wanneer je dus op deze klikt, wordt je doorgestuurd naar de index, maar daarvoor wil ik wel de session destroyen, maar dat lijkt niet te werken. Het lijkt wel alsof hij de sessie niet opslaat en gewoon vergeet.

Edit:
Tussen de </a> en </div> van het slotje (bovenstaande code), had ik dus <?php session_destroy(); ?> toegevoegd, maar dat werkt dus niet. Bovendien krijg ik ook geen inlogscherm wanneer ik zo naar admin_addnieuws.php ga. Dan krijg ik die pagina gewoon, terwijl ik daarvoor uitgelogd heb, dus wordt de sessie niet weggegooid?
 
Laatst bewerkt:
Heb je session_start() bovenaan de pagina? Anders bestaat de sessie niet op die pagina, en kun je em ook niet destroyen.
 
Bovenaan beide pagina's heb ik de volgende code staan:
Code:
<?php
 session_start();
  if($_SESSION['adminingelogd'] == "Ja")
  {
  header ("Location: admin_addnieuws.php");
  exit;
  }
  else
  {
  header("Location: input_admininloggen.php");
  }
?>

Maar ook dit werkt niet. Ik krijg nu standaard het inlogscherm wanneer ik op het slotje klik bij index.php, maar ook als ik via de browser naar admin_addnieuws.php ga, dus dat klopt. Maar wanneer ik vervolgens mijn juiste gebruikersnaam en wachtwoord invoer, wordt hij nogmaals gewoon teruggezonden naar het inlogscherm.
 
Je moet een a hrefje maken, die naar een link gaat. Bijvoorbeeld loguit.php (zoals je al had)? Deze loguit.php bevat dan HELEMAAL BOVENAAN de code <?php session_destroy();
header("Location: http://localhost/www.xboxunit.nl"); ?>. Hij vernietigt dan de sessie (indien sesie aangemaakt), en gaat naar je pagina toe ingevuld in de location (althans zo zou het moeten gaan).
 
Oké, dat heb ik nu gedaan, maar de code die ik een bericht eerder heb gepost werkt dus niet helemaal, zoals ik heb beschreven. Daarom kan ik dan ook dat a hrefje niet testen.
Weet iemand hoe ik die code dan wel moet gebruiken?

EDIT
Ik heb inmiddels een ander script gevonden op internet waarmee ik een login tot stand kan maken, en hierbij werkt de session_destoy gelukkig wel! Deze ga ik in mijn site proberen te verwerken en als dat niet lukt, dan horen jullie snel nog van mij, haha.
Thanks voor alle hulp, jullie waren fantastisch. Puik werk. :thumb:

EDIT 2
Heb het in mijn site gekregen. Het werkt echt geweldig en sessies worden nu bewaard en verwijderd op de momenten wanneer het moest, dus alles loopt vlotjes nu. Mede dankzij de hulp van hier, anders had het alsnog niet gewerkt nu. Ik ben jullie echt dankbaar. Ik heb er weer wat meer van geleerd, en dat is de bedoeling. Dankjewel!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan