Pagina 3 van 4 EersteEerste 1234 LaatsteLaatste
Weergegeven resultaten: 21 t/m 30 van 36
  1. #21
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Bedankt, het inloggen werkt nu. De volgende stap is de bibliotheek, maar dat zal voor na het weekend zijn.

    Goed weekend iedereen!
    Jvuz

  2. De volgende gebruiker bedankt jvuz voor deze nuttige post:

    ultddave (23 October 2009)

  3. #22
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Nog een vraagje. Nu is mijn pagina als ingelogd ben als volgt:

    Code:
    <?php
    // include/require hier evt nog andere zaken
    require ("connect.php");
    // we willen op deze pagina gebruik maken van beveiliging mbv sessies,
    // dus includen (requiren) we session.php
    require("session.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Bib HvZ</title>
    <link rel="stylesheet" type="text/css" href="main.css" />
    <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
    </head>
    
    <body>
    <!-- Begin Wrapper -->
       <div id="wrapper">
             <!-- Begin Header -->
             <div id="header">
                  <h1>Bibliotheek</h1>     
             </div>
             <!-- End Header -->
             <!-- Begin Faux Columns -->
             <div id="faux">         
                   <!-- Begin Left Column -->
                   <div id="leftcolumn">        
                     <br \><br \>
                     <a href="http://www.herenvanzichem.be">hoofdsite</a>
                   </div>
                   <!-- End Left Column -->
                   <!-- Begin Right Column -->
                   <div id="rightcolumn">        
    <?php
    /*
    we gaan hier kijken of de gebruiker is ingelogd, en welk
    user level de gebruiker heeft. Op grond daarvan laten we
    bepaalde delen al dan niet zien.
    Een gebruikerslevel is een getal wat aangeeft hoeveel
    "macht" je hebt. Vaak is het zo: hoe hoger het getal, hoe
    meer je mag.
    bijvoorbeeld:
    Voor een bepaalde bewerking heb je gebruikers-
    niveau 1 nodig, maar voor een andere bewerking heb je niveau
    2 nodig. Een gebruiker die beide bewerkingen mag uitvoeren
    heeft gebruikersniveau 1+2 = 3. MAAR: Een gebruiker die om
    een of andere reden alleen de tweede bewerking mag uitvoeren
    heeft gebruikersniveau 0+2 = 2. Dus je telt de nummers die
    bij bepaalde rechten horen bij elkaar op.
    Het nummer dat het recht geeft op een bepaalde bewerking is
    altijd een macht van 2.
    bijvoorbeeld:
    recht #1 (bv inloggen) heeft gebruikers niveau            2^0 = 1
    recht #2 (bv je eigen info veranderen) heeft gebr. niveau 2^1 = 2
    recht #3 (bv nieuws toevoegen) heeft gebruikers niveau    2^2 = 4
    recht #4 (bv members toevoegen) heeft gebruikersniveau    2^3 = 8
    enz.
    Iemand die al deze bewerkingen mag uitvoeren heeft dus
    gebruikersniveau 1+2+4+8 = 15 (of 2^4 - 1)
    Iemand die alleen recht #1 en recht #3 heeft, heeft
    dus gebruikersniveau 1+4 = 5
    */
    // controle op ingelogd zijn:
    if(isset($_SESSION['suser'])) {
    ?>
    <?php echo "Hi <b> ".$_SESSION['suser']."</b>,<br />";?>
    <?php
      /*
      vervolgens kijken we naar het userlevel, we vergelijken
      bitsgewijs het gebruikerslevel - dit doen we met behulp van
      een enkele '&' (de bitwise comparator)
      *** LET OP ***
      Enkel controleren met & is niet genoeg !
      Stel dat je level 9 moet hebben voor een bepaalde bewerking, en je hebt
      maar level 1. 1 & 9 is gelijk aan 1, en dan zou if(1 & 9) { ... } true opleveren
      Je moet dus expliciet controleren of je level hoog genoeg is.
      */
      if(($_SESSION['slevel'] & 1) == 1) {
        // voer code uit behorend bij recht #1
    ?>
    Je hebt recht #1.<br />
    <?php
      } else {
        // geef een melding dat je de acties
        // behorend bij recht #1 niet mag uitvoeren
    ?>
    Je hebt recht #1 NIET.<br />
    <?php
      }
    
      if(($_SESSION['slevel'] & 2) == 2) {
        // voer code uit behorend bij recht #2
    ?>
    Je hebt recht #2.<br />
    <?php
      } else {
    ?>
    Je hebt recht #2 NIET.<br />
    <?php
      }
      if(($_SESSION['slevel'] & 3) == 3) {
        // voer code uit behorend bij recht #3
    ?>
    Je hebt recht #3.<br />
    <?php
      } else {
    ?>
    Je hebt recht #3 NIET.<br />
    <?php
      }
      // et cetera
    ?>
    <a href="logout.php">uitloggen</a><br />
    <?php
    } else {
    ?>
    Je bent op dit moment niet ingelogd.<br />
    <a href="index.php">inloggen</a><br />
    <?php
    }
    ?>
    <div class="clear"></div>               
                   </div>
                   <!-- End Right Column -->               
                   <div class="clear"></div>               
             </div>       
             <!-- End Faux Columns --> 
             <!-- Begin Footer -->
             <div id="footer">               
                   <h4>KH De Heren van Zichem&copy;2009</h4>        
             </div>
             <!-- End Footer -->        
       </div>
       <!-- End Wrapper -->
    </body>
    </html>
    Nu wil ik ervoor zorgen dat de verwelkoming en de zaken die mogen gebeuren in het menu komen. (tot zover geen enkel probleem), maar als je niet ingelogd bent, krijg je een boodschap. Hoe kan ik ervoor zorgen dat deze boodschap dan niet in het menu komt, maar in rechter vak (zoals het nu in de code is)?

    Jvuz
    Jvuz

  4. De volgende gebruiker bedankt jvuz voor deze nuttige post:

    ultddave (26 October 2009)

  5. #23
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    Als ik het goed begrijp heb je 2 vakken? 1 voor het menu en 1 voor de inhoud?

    Als de gebruiker ingelogd is, ga je de rechten nakijken en aan de hand daarvan, de juiste berichten in het "menuvak" tonen?

    Als de gebruiker niet is ingelogd wil je berichten in het "inhoudvak" plaatsen?

    Nu gebruik je een If Else test voor te kijken of de gebruiker is ingelogd. Ik zou dan gewoon 2 apparte scripts schrijven met elk een gewone If Test .

    Simpel voorgesteld:

    Code:
    <div id="menuvak">
    <?php
    if(INGELOGD)
    {
    // Geef bijpassende rechten en berichten etc weer.
    }
    ?>
    </div>
    <!-- Einde van het menuvak. -->
    <div id="inhoudvak">
    <?php
    if(!INGELOGD)
    {
    Je bent op dit moment niet ingelogd.<br />
    <a href="index.php">inloggen</a><br />
    }
    ?>
    </div>
    <!-- Einde van het inhoudvak. -->
    Of is dat niet wat je bedoelt?

    Je hebt dus 2 delen. 1 deel PHP code voor het menu deel. Dat wordt enkel uitgevoerd als de gebruiker is ingelogd.

    En het 2e deel PHP code wordt enkel uitgevoerd als de gebruiker niet ingelogd is, en die code staat tussen de <div> tags van de inhoud.

    Dus opzich werk je niet met een If Else test voor te kijken of de gebruiker ingelogd is, maar met 2 apparte If testen.

    Mvg,
    Dave
    "Friendship. It's the hardest thing in the world to explain. It's not something you learn in school. But if you haven't learned the meaning of friendship, you really haven't learned anything." ~ Muhammad Ali

  6. #24
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Ah zo, bedankt. Ik zal eens iets uitproberen.
    Jvuz

  7. De volgende gebruiker bedankt jvuz voor deze nuttige post:

    ultddave (28 October 2009)

  8. #25
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Ik dacht dat iker was met mijn login script, maar het werkt toch nog niet naar behoren. Ik heb nu een aantal pagina's aangemaakt. Maar als ik uitlog is het niet de bedoeling dat ik aan die pagina's aankan als ik dat zou ingeven in de adresbalk. Natuurlijk is dat wel het geval. Kan het zijn dat er ergens een foutje in mijn sessie script zit?

    Code:
    <?php
    session_start(); // start een sessie of zet een sessie voort
    
    // als de gebruiker is ingelogd
    if(isset($_SESSION['suser'])) {
      // het volgende timeout deel is optioneel - dit mag worden weggelaten
      // * timeout gedeelte *
      $now = time();
      // als er meer tijd is verstreken dan smaxidle
      // sinds het aanmaken van de sessie
      if($now - $_SESSION['stime'] > $_SESSION['smaxidle']) {
        // breek de sessie af, de gebruiker dient opnieuw in te loggen
        $_SESSION = array();
        session_destroy();
      } else {
        // ververs anders de sessietijd. Dit zorgt er voor
        // dat de gebruiker ingelogd blijft zolang deze actief is.
        $_SESSION['stime'] = $now;
      }
      // * einde timeout gedeelte *
    // v1.2 extra functionaliteit, onthouden login
    } elseif(isset($_COOKIE['login_cookie'])) {
      // bekijk de waarden van de cookie en als deze kloppen met de database - start alsnog een sessie
      // aanname - er is een verbinding met de database
      list($id, $wacht) = split(";", $_COOKIE['login_cookie']);
      $res = mysql_query("SELECT id, pass, level, last_ip FROM users WHERE id='".$id."'") or die(mysql_error());
      if(mysql_num_rows($res) > 0) {
        $row = mysql_fetch_assoc($res);
        if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) {
          // init session
          $_SESSION['suser']    = $naam;
          $_SESSION['slevel']   = $row['level'];
          $_SESSION['stime']    = time();
          $_SESSION['smaxidle'] = 60 * 60;
    
          // update cookie
          // gebruik hierbij wederom het id en het versleutelde wachtwoord
          setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
        } else {
          // password of ip komt niet overeen - unset het cookie en beeindig de sessie
          setcookie("login_cookie", "", time(), "/");
          $_SESSION = array();
          session_destroy();
        }
        // geef resultaten vrij
        unset($row);
        mysql_free_result($res);
      } else {
        // gebruiker onbekend, cookie vervalst ?
        $_SESSION = array();
        session_destroy();
      }
      // ververs de pagina
      header("Location: ".$_SERVER['REQUEST_URI']);
    }
    ?>
    Jvuz

  9. De volgende gebruiker bedankt jvuz voor deze nuttige post:

    ultddave (28 October 2009)

  10. #26
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    Als je uitlogd bestaat de cookie waarschijnlijk nog? Dus aangezien je een cookie hebt en geen sessie meer, komt hij in dit deel:

    Code:
    elseif(isset($_COOKIE['login_cookie'])) {
      // bekijk de waarden van de cookie en als deze kloppen met de database - start alsnog een sessie
      // aanname - er is een verbinding met de database
      list($id, $wacht) = split(";", $_COOKIE['login_cookie']);
      $res = mysql_query("SELECT id, pass, level, last_ip FROM users WHERE id='".$id."'") or die(mysql_error());
      if(mysql_num_rows($res) > 0){
        $row = mysql_fetch_assoc($res);
        if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) {
          // init session
          $_SESSION['suser']    = $naam;
          $_SESSION['slevel']   = $row['level'];
          $_SESSION['stime']    = time();
          $_SESSION['smaxidle'] = 60 * 60;
    
          // update cookie
          // gebruik hierbij wederom het id en het versleutelde wachtwoord
          setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
        } else   {
          // password of ip komt niet overeen - unset het cookie en beeindig de sessie
          setcookie("login_cookie", "", time(), "/");
          $_SESSION = array();
          session_destroy();
        }
        // geef resultaten vrij
        unset($row);
        mysql_free_result($res);
      }
    Ongeacht of hij iets vind in de database gaat hij de resultaten weergeven omdat hij een cookie vindt. Want zoals je ziet staat het groen buiten de If Else test (rood + blauw). Dus na het uitvoeren van de "If" of van de "Else", gaat hij verder met uitvoeren bij de regel aangeduid in het groen.

    Ik denk dat dat de oorzaak is.

    Mvg,
    Dave
    Laatst gewijzigd door ultddave; 28 October 2009 om 20:06
    "Friendship. It's the hardest thing in the world to explain. It's not something you learn in school. But if you haven't learned the meaning of friendship, you really haven't learned anything." ~ Muhammad Ali

  11. #27
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Uitloggen gebeurt via deze pagina
    Code:
    <?php
    session_start();     // start een sessie of zet een sessie voort
    $_SESSION = array(); // maak het sessie array leeg
    session_destroy();   // verwijder de sessie
    
    // als er een cookie geset is, reset deze
    if(isset($_COOKIE['login_cookie'])) {
      setcookie("login_cookie", "", time(), "/");
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Bib HvZ</title>
    <link rel="stylesheet" type="text/css" href="../scripts/main.css" />
    <link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon" />
    </head>
    <body>
       <!-- Begin Wrapper -->
       <div id="wrapper">
             <!-- Begin Header -->
             <div id="header">
                  <h1>Bibliotheek</h1>     
             </div>
             <!-- End Header -->
             <!-- Begin Faux Columns -->
             <div id="faux">         
                   <!-- Begin Left Column -->
                   <div id="leftcolumn">        
                     <?php include("../scripts/menu.php"); ?>
                   </div>
                   <!-- End Left Column -->
                   <!-- Begin Right Column -->
                   <div id="rightcolumn">        
    <p>Je bent uitgelogd.</p><br />
    <a href="index.php">(opnieuw) inloggen</a><br />
    <?php header("refresh: 3; url=../index.php"); ?>
    <div class="clear"></div>               
                   </div>
                   <!-- End Right Column -->               
                   <div class="clear"></div>               
             </div>       
             <!-- End Faux Columns --> 
             <!-- Begin Footer -->
             <div id="footer">               
                   <h4>KH De Heren van Zichem&copy;2009</h4>        
             </div>
             <!-- End Footer -->        
       </div>
       <!-- End Wrapper -->
    </body>
    </html>
    Wordt dan de cookie niet verwijderd?

    Jvuz
    Jvuz

  12. #28
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Je zei in twee posten geleden iets van deze check

    Code:
    <?php
    if(!INGELOGD)
    {
    Je bent op dit moment niet ingelogd.<br />
    <a href="index.php">inloggen</a><br />
    }
    ?>
    Hoe kan ik dat het beste coderen?
    Jvuz

  13. #29
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    Hoe kan ik dat het beste coderen?
    Door die "!INGELOGD" te vervangen door: !isset($_SESSION['suser'])

    Dus concreet:

    Code:
    <div id="menuvak">
    <?php
    if(isset($_SESSION['suser']))
    {
    // Geef bijpassende rechten en berichten etc weer.
    }
    ?>
    </div>
    <!-- Einde van het menuvak. -->
    <div id="inhoudvak">
    <?php
    if(!isset($_SESSION['suser']))
    {
    // HTML code gebruiken in php.
    echo "<p> Je bent op dit moment niet ingelogd.<br /> </p>"; 
    // De aanhalingstekens rond index.php vervallen en er komt een spatie erachter omdat we met php werken.
    echo "<a href=index.php >inloggen</a> <br />";
    }
    ?>
    </div>
    <!-- Einde van het inhoudvak. -->
    Eventueel kan je de session "verversen" als je in de eerste If test terecht komt. Dat moet je zelf beslissen .

    Wordt dan de cookie niet verwijderd?
    Normaal gezien wel .

    Code:
    setcookie("login_cookie", "", time(), "/");
    = Cookie resetten met "vervaldatum" gelijk aan de huidige datum. Opzich zou de browser die dus moeten verwijderen. Vreemd. :(

    Je kan eventueel dit eens proberen:
    Code:
    setcookie("login_cookie", "", time() -3600, "/");
    Door die -3600 zet je de vervaltijd 1uur terug. Dus met andere woorden, je zegt tegen de browser: "De cookie vervalt 1uur geleden." Waardoor de browser hem onmiddelijk gaat verwijderen.
    "Friendship. It's the hardest thing in the world to explain. It's not something you learn in school. But if you haven't learned the meaning of friendship, you really haven't learned anything." ~ Muhammad Ali

  14. #30
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Bedankt!
    Jvuz

  15. De volgende gebruiker bedankt jvuz voor deze nuttige post:

    ultddave (29 October 2009)

Discussie informatie

Users Browsing this Thread

Momenteel bekijken 1 gebruikers deze discussie. (0 leden en 1 gasten)

Soortgelijke discussies

  1. 1 mans orkest!
    Door namaste in forum Fun
    Reacties: 3
    Laatste bericht: 4 April 2009, 12:52
  2. Bibliotheek autocad 2007
    Door Some_body in forum Grafisch algemeen
    Reacties: 3
    Laatste bericht: 15 September 2007, 12:41
  3. Reacties: 3
    Laatste bericht: 2 September 2007, 22:36

Favorieten/bladwijzers

Favorieten/bladwijzers

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •