Inloggen d.m.v. een Sessie

Door Stefan , 21 jaar geleden, 10.111x bekeken

Tja, ik zag dat 'Heel erg mega simpel inlogsysteem' en vond dat hij nóg makkelijker kon, en nóg veiliger. D.m.v. sessie's kun je verschillende pagina's blijven bezoeken, en blijf je niet steken op dat je maar 1 pagina kunt zien. Bij het script van Johan Versteeg heb je het probleem dat je maar 1 pagina kunt gebruiken, aangezien hij in een

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php if (isset($_POST['inloggen'])){

}

?>


zit. Als je dit gaat oplossen met sessies, kun je ontelbaar pagina's gaan toepassen, door 1 keer in te loggen.

Zoals je al in het script kunt vinden, zijn bij het voorbeeld de gebruikersnaam Admin en het wachtwoord is test123.

Voorbeeld: http://stefanuzz.nl/testmap/adminpanel.php

Gesponsorde koppelingen

PHP script bestanden

  1. inloggen-dmv-een-sessie

 

Er zijn 21 reacties op 'Inloggen dmv een sessie'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mebus  Hackintosh
Mebus Hackintosh
21 jaar geleden
 
0 +1 -0 -1
Kijk dit is al het betere werk!

GR. mebus!
Jelmer -
Jelmer -
21 jaar geleden
 
0 +1 -0 -1
Hebben we hier niet al genoeg van?

Ik denk dat het nuttiger is een tutorial hierover te maken, met de basis ideeën die hierin zitten, zodat mensen zelf de code wel kunnen schrijven (naja, uiteraard wordt die dan in de tutorial stap voor stap geschreven, maar ik bedoel ik theorie)
Jan Koehoorn
Jan Koehoorn
21 jaar geleden
 
0 +1 -0 -1
Zet nooit je gebruikersnaam en je wachtwoord in een sessie. Nergens voor nodig. Je hoeft de gebruikersnaam en het wachtwoord maar één keer te controleren; bij het inloggen. Daarna zet je het user_id in een sessie en een boolean die verteld of er correct ingelogd is of niet.

@Jelmer: misschien dat ik die tut wel ga maken.
Stefan
Stefan
21 jaar geleden
 
0 +1 -0 -1
Jep, dat had ik al wel door ;-) Maar aangezien het hier om een admin-panel gaat voor maar 1 persoon, dacht ik dat het niet al te veel uitmaakte. Wat je ook e.v.t. zou kunnen doen is de sessie-wachtwoord in MD5 te gooien uiteraard. Die aanpassing ga ik nu even maken.
Stefan
Stefan
21 jaar geleden
 
0 +1 -0 -1
Zo, ik heb er even md5-gegevens van gemaakt, issie nog veiliger ;-)
Jan Veenstra
Jan Veenstra
21 jaar geleden
 
0 +1 -0 -1
als ik het goed begrijp:

als je nu een nieuwe pagina maakt, moet je dan het hele script erin plakken en vervolgens jou pagina er tusse proppe?
Stefan
Stefan
21 jaar geleden
 
0 +1 -0 -1
Nee, door middel van een switch kun je meerdere pagina's gebruiken binnenin adminpanel.php. Dit doe je door bijvoorbeeld ?pagina=blog er achter te plakken. Zo zorg je er voor dat je niet steeds hoeft in te loggen.

Bijvoorbeeld, plak dit in de ruimte waar je de tekst kunt neerzetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

switch ($_GET['pagina']){

   case
blog:
   include "blog.php";
   break;

   case
gebruikers:
   include "gebruikers.php";
   break;

}


?>


Doordat je inlog-gegevens nu in sessies staan, kun je én meerdere pagina's gebruiken binnenin adminpanel.php, én er voor zorgen dat je niet steeds opnieuw moet inloggen. Zo is je pagina toch beveiligd, en hoef je maar 1x in te loggen.
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
Zou je dat succesvol in/uitgelogd niet gewoon doen d.m.v. een header refresh.

Ik vind dit altijd zoiets...
- SanThe -
- SanThe -
21 jaar geleden
 
0 +1 -0 -1
De link werkt bij mij niet. Dit komt waarschijnlijk doordat de nameservers van stefanuzz.nl niet geheel correct zijn ingesteld. Zie hier.
Stefan
Stefan
21 jaar geleden
 
0 +1 -0 -1
Ohja, en dat snap ik direct.. Nee maar daar kan ik niks aan veranderen, ligt dan aan mijn hoster (neem ik aan?)..
- SanThe -
- SanThe -
21 jaar geleden
 
0 +1 -0 -1
@Stefan: Ik neem aan dat het domein stefanuzz.nl van jou is. Dan mag je best van je hosting verlangen dat de nameservers in orde zijn. Zo als ze nu zijn ingesteld betekent dat niet iedereen op jouw site kan komen.
Steven Prins
Steven Prins
21 jaar geleden
 
0 +1 -0 -1
niet echt veilig, als je bij het voorbeeld een map terug gaat en dan naar photering dan ben ik bij het admin gedeelte...
Stefan
Stefan
21 jaar geleden
 
0 +1 -0 -1
@Steven: Dat heeft niks met het script te maken, dat is gewoon een open dir die ik nog open had staan ;-)
Richard de Boer
Richard de Boer
21 jaar geleden
 
0 +1 -0 -1
Mooi inlog script maar hoe beveilig je de pagina's dan die je in je adminpanel propt? Zodat ze niet te zien zijn, alleen maar als je inlogt?

Rieksie
Richard de Boer
Richard de Boer
21 jaar geleden
 
0 +1 -0 -1
Zit ik nu fout te kijken/lezen of heeft iemand een ideetje?
Stefan
Stefan
21 jaar geleden
 
0 +1 -0 -1
Simpel, zoals ik al eerder had gereageerd, je kunt binnen het gebied waar de sessies worden gecontroleerd, je zooi gooien. Dus tussen dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// Als er sessies bestaan, en die komen overeen met de instellingen, dan gaan wij het admin paneel weergeven...
}elseif(($_SESSION['gebruikersnaam'] == $usermd5) && ($_SESSION['wachtwoord'] == $userpass)){


        ?>

<!-- Het is dus de bedoeling om hier je hele lay-out van je admin panel in te flansen. -->

<h1>Admin - panel</h1>
<a href="#">Blog toevoegen</a> - <a href="#">Blog verwijderen</a> - <a href="#">Gebruikers verbannen</a><br /><br />

Hier kun je teksten neer zetten, of een pagina script gebruiken :-)<br /><br />

&raquo; <a href="?actie=uitloggen">Uitloggen</a>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

        
// En natuurlijk, als er niks van toepassing is, laten wij het inlogformulier zien... That's it! ;-)    
}else{
?>


Die tekst kun je weghalen, en je eigen pagina's er in zetten, door b.v. een pagina systeem, of een switch. :-)
Richard de Boer
Richard de Boer
21 jaar geleden
 
0 +1 -0 -1
Ik zit eens hardop te denken maar...

Als ik dit boven aan ieder script zet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
session_start();
?>


Zijn die pagina's dan wel beveiligd?

Rieksie
R. Hebing
R. Hebing
21 jaar geleden
 
0 +1 -0 -1
Ik geloof dat dit een beter alternatief is voor het script:

Sla de volgende code op onder de naam login_verify.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

//Opslaan als login_verify.php

if(!empty($_POST['username']))
{

  session_start();
  mysql_connect('localhost','root','jehoshua');
  mysql_select_db("LEDEN");
  $query=mysql_query("SELECT USER_ID FROM USERS WHERE USERNAME='".$_POST['username']."' AND PASSWORD='".$_POST['password']."';");
  if(mysql_num_rows($query)>0)    
  {

    $row=mysql_fetch_assoc($query);
    $_SESSION['user_id']=$row['USER_ID'];
    header("Location: ".$_SERVER['PHP_SELF']);
    //zoals je ziet wordt alleen user_id opgeslagen. Dit uit veiligheidsoverwegingen omdat je met een relatief eenvoudige handeling bij sessie data kan komen (ook wel eens voorgekomen in de ELO van mijn school).
  }    
  else
  echo("Toegang geweigerd voor ".$_POST['username']." met wachtwoord ".$_POST['password']);  
}


?>

<form method="post" action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($_SERVER['PHP_SELF']); ?>
">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Inloggen">
</form>

Sla vervolgens deze code op als inc_login.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

//Opslaan als inc_login.php
session_start();

if(!isset($_SESSION['user_id']))
{

  echo("U hebt geen toegang tot ".$_SERVER['PHP_SELF']." omdat u niet bent aangemeld");
  echo("<hr>");
  require("login_verify.php");
  exit();
}


?>


Plaats bovenaan iedere pagina die je wilt beveiligen de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php require('inc_login.php'); ?>


Et voila, een simpel doch krachtig inlogscript op MySQL. Je kunt MySQL natuurlijk ook vervangen door een van te voren gedefinieerde string.

Over de vraag van Rieksje... Als je met sessions werkt moet je dat wel bovenaan je pagina zetten (tenzij de omgevingsvariabele session_auto_start actief is) omdat je anders niet bij je session variables kan.
Maikel
maikel
21 jaar geleden
 
0 +1 -0 -1
Kan iemand mij uilegen hoe ik alles moet opslaan. En kan ik het dan ook met tekstbestanden doen.
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
dit is het eenigste dat ik in beeld krijg:
Admin - panel
Blog toevoegen - Blog verwijderen - Gebruikers verbannen

Hier kun je teksten neer zetten, of een pagina script gebruiken :-)

» Uitloggen
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
nou dat script van R Hebing werkt net zo goed als dat van Stefan ook niet dus.
krijg dit:
U hebt geen toegang tot /cafehofland/dchofland/wedstrijdteam1/inc_login.php omdat u niet bent aangemeld
--------------------------------------------------------------------------------

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\cafehofland\dchofland\wedstrijdteam1\login_verify.php on line 11
Toegang geweigerd voor root met wachtwoord jehoshua .
ook met mijn eigen wachtwoord voor de root en ook niet met de gebruikersnaam en wachtwoord op de server. wat moet er nog meer gewijzigt worden

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. inloggen-dmv-een-sessie

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.