Pagina 2 van 4 EersteEerste 1234 LaatsteLaatste
Weergegeven resultaten: 11 t/m 20 van 36
  1. #11
    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 ook extra informatie over de componist gaat bijhouden in de tabel, kan je zoals Carl zegt, beter kiezen voor een extra tabel enkel voor die componisten. (Bijvoorbeeld: Geboorte -en sterfdatum, geslacht, woonplaats, ... als kolommen van die tabel)

    Als je enkel de naam van de componist wilt bijhouden, dan kan je die inderdaad beter in dezelfde tabel als de partituren stoppen.

    Een kolom "datum" is ook handig als je van plan bent om ze via datum te rangschikken.

    Je kan inderdaad alles in 1 tabel stoppen, maar het moet ook wat ordelijk & overzichtelijk blijven hé.

    Zo kan je bij 2 apparte tabellen, makkelijk extra componisten toevoegen, zonder daarvoor ook partituren te moeten toevoegen.

    Eventueel kan men dan ook een soort biografie maken van elke componist met een verwijzing naar de partituren (indien aanwezig) van deze componist bijvoorbeeld.

    ***

    Voor dat wachtwoord; Ik maak zoiets meestal in de vorm van een "login form" dat afgehandeld wordt via PHP.
    Bijvoorbeeld:
    Naam: [.........]
    Wachtwoord: [.........]
    (Eventueel een die ook cookies stored op de PC van de gebruiker)

    Als je een apparte gebruiker aanmaakt (in de MySql tabel) bijvoorbeeld "Moderator" met wachtwoord "abc" dan kan je iedereen dat wachtwoord doorgeven die rechten heeft tot die partiturensectie.

    Als er dan problemen zouden zijn (Iemand die perongeluk het wachtwoord heeft doorgegeven aan minder eerlijke mensen, en dergelijke) kan je gewoon het wachtwoord in de tabel aanpassen en dat nieuwe wachtwoord doorgeven aan de respectievelijke personen.

    PS: Zorg ervoor dat men geen scriptcode kan invoeren in die login forms.

    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

  2. #12
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    In denk dat in ons geval gewoon één tabel voldoende is. Er moeten geen ingewikkelde queries uitgevoerd worden. Gewoon de tabel opvragen of opzoeken op componist, arrangement, code of titel. Veel meer moet dat niet zijn.
    Jvuz

  3. #13
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Ik ben ondertussen begonnen. Ik zit momenteel met een parse error probleem in volgend bestand session.php

    PHP-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 FROM users WHERE id='".$id."'") or die(mysql_error());
      if(
    mysql_num_rows($res) > 0) {
          
    // 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']);
    }
    ?>
    Ik vind zo niet direct de fout. Kan iemand me helpen?
    Laatst gewijzigd door Snakey; 21 October 2009 om 15:29 Reden: php-bbcode gebruiken
    Jvuz

  4. #14
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    Dat laatste haakje achter "header" is teveel.

    Je gaat trouwens problemen krijgen met die header functie.

    http://php.net/manual/en/function.header.php

    Remember that header() must be called before any actual output is sent, ...
    Aangezien je nu onvoorwaardelijk die header gaat uitvoeren zit je in een oneindige lus.

    Pagina wordt geladen => If Test wordt uitgevoerd => Pagina wordt herladen => If Test wordt uitgevoerd => Pagina wordt herladen (Door header functie) => ...

    De pagina blijft dus oneindig lang herladen worden.

    Mvg,
    Dave
    Laatst gewijzigd door ultddave; 21 October 2009 om 13:43
    "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

  5. #15
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Bedankt,

    en hoe kan ik dat oplossen?

    Jvuz
    Jvuz

  6. #16
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    Het beste is om de code wat aan te passen. Op dit moment filter je alle slechte dingen eruit.

    Maar het is handiger om iets te maken in de aard van dit:
    PHP-code:
    <?php
    if (x)
    {
    // Persoon mag deze pagina niet zien vanwege reden "x"
    session_destroy;
    }
    else if (
    )
    {
    // Persoon mag deze pagina niet zien vanwege reden "Y"
    session_destroy;
    }
    else if (
    Z)
    {
    // Persoon mag deze pagina niet zien vanwege reden "Z"
    session_destroy;
    }
    else
    {
    // Persoon mag deze pagina wel zien omdat hij niet voldoet aan x y en z;
    // maak connectie met database en geef alle partituren weer.
    // Als men tot hier geraakt in de If Else structuur, wil dat zeggen dat men een legitieme 
    //gebruiker is die hier de inhoud mag zien.
    }
    ?>
    Uiteraard moet je jouw code invullen en aanpassen aan bovenstaand ontwerp. Maar aangezien je werkt met een If Else structuur weet je direct wie iets mag zien, en wie niet.

    Als men de pagina niet mag zien, wordt er geen inhoud weergegeven. Maar bijvoorbeeld een bericht "Sorry u bent niet bevoegd om deze pagina te bekijken." En kan je bijvoorbeeld gewoon een link zetten naar de vorige pagina waarop men dan kan duwen.
    Laatst gewijzigd door Snakey; 21 October 2009 om 15:30 Reden: php-bbcode gebruiken
    "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

  7. #17
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    En kan dit?

    PHP-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.";".$wachttime()+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']);
    }
    ?>
    Laatst gewijzigd door Snakey; 21 October 2009 om 15:30 Reden: php-bbcode gebruiken
    Jvuz

  8. #18
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    Ik denk dat dat een oneindige lus gaat geven als de gebruiker een cookie heeft.

    Dus wat je doet is:

    PHP-code:
    elseif(isset($_COOKIE['login_cookie'])) {
    ...
      
    header("Location: ".$_SERVER['REQUEST_URI']);

    Op die "..." staan allemaal if else testen. Maar die header staat erbuiten. Dus hij wordt uitgevoerd ongeacht de if testen.

    Dus als de gebruiker een cookie heeft zal hij altijd de pagina blijven refreshen, tenzij je in de If Else testen, de cookie ergens vernietigd waardoor het zou stoppen. Maar dat is niet bedoeling volgens mij. Iemand wil cookies zodat hij niet meer moet inloggen .

    ****

    Hier:
    PHP-code:
        // ververs anders de sessietijd. Dit zorgt er voor
        // dat de gebruiker ingelogd blijft zolang deze actief is.
        
    $_SESSION['stime'] = $now
    Achter die $_SESSION['stime'] = $now; kan je een If Test plaatsen voor het Level te bekijken.

    PHP-code:
    ...
    }else {
    // ververs anders de sessietijd. Dit zorgt er voor
    // dat de gebruiker ingelogd blijft zolang deze actief is.
    $_SESSION['stime'] = $now;
    if(
    $_SESSION['slevel'] == 1)
    {
    // Toon inhoud & partituren en dergelijke
    echo "Welkom admin";
    }
    else
    {
    // De gebruiker is geen admin maar is wel ingelogd. Dus zijn level is te laag om de inhoud te zien.
    echo "Sorry u bent niet gemachtigd om deze pagina te bekijken.";
    }

    Ik heb nu maar nummers genomen als "Level". Level 1 = toegang. Andere levels niet.

    Dezelfde code moet je plaatsen achter:

    PHP-code:
          $_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.";".$wachttime()+3600*24*31*2"/"); 
    Dus:

    PHP-code:
    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.";".$wachttime()+3600*24*31*2"/");
    if(
    $_SESSION['slevel'] == 1)
    {
    // Toon inhoud & partituren en dergelijke
    echo "Welkom admin";
    }
    else
    {
    // De gebruiker is geen admin maar is wel een lid (Aangezien hij een geldige cookie had.)
    echo "Sorry u bent niet gemachtigd om deze pagina te bekijken.";
    }
        } else {
    ... 
    En dan die header op het einde gewoon weglaten. Dat zou moeten werken normaal gezien.

    Mensen die niets met de site te maken hebben, krijgen een lege pagina. En mensen die ingelogd zijn,maar niet het juiste "level" hebben, die krijge die "Sorry u bent niet gemachtigd..." melding te zien.

    Je moet dus die "== 1" wel eventueel vervangen door hetgeen jij gebruikt voor die levels.

    Als ik me niet vergis.

    Mvg,
    Dave
    Laatst gewijzigd door ultddave; 21 October 2009 om 15:40
    "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

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

    Dexter (21 October 2009)

  10. #19
    Gevorderd  
    Geregistreerd
    20 June 2006
    Locatie
    Zichem
    Berichten
    106
    Bedankjes
    0
    Bedankt
    18 keer in 16 posts
    Momenteel ben ik nog bezig met het login systeem. Nu bij het gebruik van de volgende code zou er na het inloggen een verwelkoming moeten komen in de vorm: Hi username, ... , maar ik krijg enkel de Hi, de username is blank. Wat doe ik verkeerd?

    Code:
    <?php
    require("connect.php"); // connectie met database maken en database selecteren
    session_start(); // start een sessie of zet een sessie voort
    
    // controleer hier of iemand inlogt - dit moet _voor_ de <HTML>-tag gebeuren gebeuren
    if(isset($_POST['login'])) {
      if(trim($_POST['naam']) <> "" && trim($_POST['wacht']) <> "") {
        // naam en wachtwoord zijn ingevuld. Haal het (versleutelde) wachtwoord en
        // het gebruikersniveau dat bij deze gebruikersnaam hoort uit de database op
        // en vergelijk dit wachtwoord met het in het formulier opgegeven wachtwoord.
    
        $naam  = $_POST['naam'];
        $wacht = md5($_POST['wacht']);
        $res = mysql_query("SELECT id, pass, level FROM users where name='".$naam."'") or die(mysql_error());
    
        // Als er een resultaat is, oftewel er bestaat een gebruiker met de naam $naam
        if(mysql_num_rows($res) > 0) {
          $row = mysql_fetch_assoc($res);
          // aanname: het wachtwoord in de database is eenmalig gehashed mbv de functie md5()
          // vergelijk het opgehaalde wachtwoord met een versleutelde versie van het in het
          // formulier opgegeven wachtwoord
          if(!strcmp($wacht, $row['pass'])) {
            // alle gegevens kloppen
    
            // v1.2 extra functionaliteit, onthouden login
            // wil de gebruiker zijn gegevens onthouden ?
            if(isset($_POST['memory'])) {
              // set cookie (voor 2 maanden) en onthoud het IP
              // gebruik hierbij het id van de gebruiker
              setcookie("login_cookie", $row['id'].";".$row['pass'], time()+3600*24*31*2, "/");
              $ip = $_SERVER['REMOTE_ADDR'];
              mysql_query("UPDATE users SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());
            }
    
            // vul sessievariabelen
            $_SESSION['suser']    = $naam;         // gebruikersnaam van ingelogd persoon
            $_SESSION['slevel']   = $row['level']; // bijbehorende gebruikersniveau
            $_SESSION['stime']    = time();        // de huidige tijd
            $_SESSION['smaxidle'] = 60 * 60;       // het aantal seconden inactiviteit
          } else {
            // wachtwoorden komen niet overeen, breek de sessie weer af
            $_SESSION = array();
            session_destroy();
          }
          // geef de resultaten van deze query weer vrij
          unset($row);
          mysql_free_result($res);
        }
        // ververs, of de gebruikersnaam/wachtwoord combinatie nou klopt of niet, de pagina
        header("Location: index.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
    // als de (een willekeurige) sessievariabele suser in het sessie-array nog geen waarde heeft
    // (dus als iemand nog niet is ingelogd)
    if(!isset($_SESSION['suser'])) {
    ?>
    <form action="index.php" method="post">
    naam <input type="text" name="naam" size="15"><br />
    wachtwoord <input type="password" name="wacht" size="15"><br />
    <!-- v1.2 extra functionaliteit, login onthouden -->
    <input type="checkbox" name="memory" value="1"> onthoud mijn login (gebruikt cookie)<br />
    <input type="submit" name="login" value="log in"><br />
    </form>
    <?php
    } else {
      // de gebruiker is ingelogd - geef een welkomstboodschap oid
      // hier kun je tevens kijken of alle sessievariabelen de goede
      // waarden hebben (debugging)
    ?>
    Hi <b><?= $_SESSION['suser'] ?></b>,<br />
    <a href="voorbeeld.php">mijn pagina</a><br />
    <a href="logout.php">uitloggen</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>
    Jvuz

  11. #20
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    <?= $_SESSION['suser'] ?>
    Je moet hem nog echo'n. Je kan trouwens ook HTML code echo'n. Die worden dan niet als tekst geplaatst, maar worden "uitgevoerd". Bijvoorbeeld;

    echo "<br/>";

    plaatst dus een newline.

    Code:
    else {
      // de gebruiker is ingelogd - geef een welkomstboodschap oid
      // hier kun je tevens kijken of alle sessievariabelen de goede
      // waarden hebben (debugging)
    
    echo "Hi <b> ".$_SESSION['suser']."</b>,<br />";
    
    ?>
    <a href="voorbeeld.php">mijn pagina</a><br />
    <a href="logout.php">uitloggen</a><br />
    <?php
    }
    Ofwel jouw code aanpassen en:

    <?= echo $_SESSION['suser']; ?>
    gebruiken.
    Laatst gewijzigd door ultddave; 23 October 2009 om 14:12
    "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

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
  •