Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

cookies

BasHamar
11 antwoorden
  • ik moet voor school een inlogsysteem maken met cookies. de gegevens hoeven nog niet uit een database te komen dit mag gwn met een if statement.

    alleen werkt hij niet.

    weet een van jullie wat er mis is?

    dit is de code:
    [code:1:13890d98ae]<?php
    $gebr = $_POST['gebr'];
    $pass = $_POST['pass'];

    if(isset($gebr) && ($pass)){
    if($gebr == "leerling" && $pass == "breul"){
    setcookie('login',$_POST['login'], time() + 52*7*24*60*60); //cookie instellen
    laadpagina();
    }

    else {
    laadfoutpagina();
    }

    }
    elseif(isset($_COOKIE['login'])){
    laadpagina();
    }
    else{
    echo "u moet eerst inloggen om bij uw account te komen.";
    }
    ?>

    <form method="post" action="inlogsysteem.php">
    gebruikersnaam: <input type="text" name="gebr"/><br>
    wachtwoord: <input type="text" name="pass" />
    <input type="submit" value="go!" />
    </form>

    <?php
    function laadpagina(){
    $page = <<<EOD
    <html>
    <body>
    <div>dit is de pagina waar je bent ingelogd, $gebr</div>
    </body>
    </html>
    EOD;

    global "$page";
    }

    function laadfoutpagina(){
    $errorpage = <<<EOD
    <html>
    <body>
    <div>dit is een error pagina</div>
    </body>
    </html>
    EOD;

    global "$errorpage";
    }

    if(isset($page)){
    echo "$page";
    }

    else {
    echo "$errorpage";
    }

    ?>[/code:1:13890d98ae]
  • if(isset($gebr) && ($pass)){

    moet zijn: if(isset($gebr) && isset($pass){

    Voor de rest zie ik niet direct iets…

    Edit: global "$errorpage"; -> global $errorpage;
    Edit2: analoog ook de andere global uit de aanhalingstekens halen en ook de echo…
    Edit3: spaties voor en achter $errorpage = <<<EOD en $page = <<<EOD weghalen, en dan werkt het.

    Veel success!!
  • oke bedankt ik ga het proberen
  • ik heb alles geprobeerd maar hij werkt nog steeds niet :(
    iemand nog een idee?
  • Raar.. Op mijn server werkt het na die aanpassingen. Post je nieuwe code eens?
  • ik krijg nu geen error meer maar hij doet het gwn niet:

    [code:1:2001dd4279]<?php
    $gebr = $_POST['gebr'];
    $pass = $_POST['pass'];

    if(isset($gebr) && isset($pass)){
    if($gebr == "leerling" && $pass == "breul"){
    setcookie('login',$_POST['login'], time() + 52*7*24*60*60); //cookie instellen
    laadpagina();
    }

    else {
    laadfoutpagina();
    }

    }
    elseif(isset($_COOKIE['login'])){
    laadpagina();
    }
    else{
    echo "u moet eerst inloggen om bij uw account te komen.";
    }
    ?>

    <form method="post" action="inlogsysteem.php">
    gebruikersnaam:<br> <input type="text" name="gebr"/>
    <p></p>
    wachtwoord:<br> <input type="text" name="pass" /><br>
    <input type="submit" value="go!" />
    </form>

    <?php
    function laadpagina(){
    $page =<<<EOD
    <html>
    <body>
    <div>dit is de pagina waar je bent ingelogd, $gebr</div>
    </body>
    </html>
    EOD;

    global $page;
    }

    function laadfoutpagina(){
    $errorpage =<<<EOD
    <html>
    <body>
    <div>dit is een error pagina</div>
    </body>
    </html>
    EOD;

    global $errorpage;
    }

    if(isset($page)){
    echo $page;
    }

    else {
    echo $errorpage;
    }

    ?>[/code:1:2001dd4279]
  • ehm….

    Ik zou de code een beetje opschonen, en wat dingen in de goede volgorde gaat zetten… Dat gaat schelen. :)
  • Ik heb de code verbeterd.
    [code:1:a8c2b29c2c]<!doctype HTML>
    <html>
    <body>
    <?php
    $gebr = $_POST['gebr'];
    $pass = $_POST['pass'];

    function toonformulier(){
    $action = $_SELF;
    $formulier = <<<EOD
    <form method="post" action="$action">
    <label>gebruikersnaam: </label><input type="text" name="gebr"/>
    <label>wachtwoord: </label><input type="text" name="pass" />
    <input type="submit" value="go!" />
    </form>
    EOD;
    return $formulier;
    }

    function laadpagina(){
    $page = "<div>dit is de pagina waar je bent ingelogd, $gebr</div>";
    echo $page;
    }

    function laadfoutpagina(){
    $errorpage = "<div>dit is een error pagina</div>"
    .toonformulier();
    echo $errorpage;
    }

    if(isset($gebr) && isset($pass)){
    if($gebr == "leerling" && $pass == "breul"){
    setcookie('login','loggedin', time() + 52*7*24*60*60); //cookie instellen
    laadpagina();
    }
    else {
    laadfoutpagina();
    }

    }
    elseif(isset($_COOKIE['login'])){
    laadpagina();
    }
    else{
    echo toonformulier();
    }

    ?>
    </body>
    </html>[/code:1:a8c2b29c2c]

    [list:a8c2b29c2c]
    [*:a8c2b29c2c]Ik heb de html met body en al uit de functie gehaald. Scheelt één keer typen.
    [*:a8c2b29c2c] Hierdoor hoef je niet meer met heredoc te werken
    [*:a8c2b29c2c] Regel 1: Doctype toegevoegd.
    [*:a8c2b29c2c] In de html van het formulier alle overbodige dingen kwijtgespeeld.
    [*:a8c2b29c2c] Functie toonformulier toegevoegd om alles wat makkelijker te maken.
    [*:a8c2b29c2c] Let op: $_SERVER['PHP_SELF'] duidt het pad aan naar de huidige pagina.
    [*:a8c2b29c2c] De functie print niet uit, maar retourneert een waarde, dit maakt het mogelijk om die te verwerken in $errorpage bij laadfoutpagina()
    [*:a8c2b29c2c] Die globals hoeven helemaal niet, je kan ook gewoon onmiddelijk echo gebruiken
    [*:a8c2b29c2c] Cookie aangepast, want $_POST['login] bestaat helemaal niet (wordt nergens aangemaakt), veranderd naar loggedin.
    [*:a8c2b29c2c] Dit controleer ik ook op regel 41

    [*:a8c2b29c2c]Dus, ik hoop dat je hier iets uit [b:a8c2b29c2c]leert[/b:a8c2b29c2c]…
    [/list:u:a8c2b29c2c]
  • ik heb er zeker iets van geleerd, erg bedankt. ik ben nu verder gegaan om deze technieken toe te passen met databases, omdat we ook sql hebben gehad, dacht ik waarom niet gebruiken :)

    alles werk gewoon, maar ik ben er nog niet helemaal uit hoe ik er voor kan zorgen dat een gebruiker niet kan registreren met dezelfde gebruikersnaam, ik heb in de database als wel een unieke sleutel ervan gemaakt, dus het kan sws al niet meer, maar nu moet ik nog voor zorgen dat er een foutmelding word gegeven als dit toch het geval is.

    ik zat te denken aan iets van:

    [code:1:15c296bedd]
    $gebruikersnaam = $_POST['gebruikernaamform']
    $dbuser = mysql_query("select gebruikers from users where username = $gebruikersnaam")

    if(!dbuser = null){
    echo "error"
    }
    else{
    voer het script uit.
    }
    [/code:1:15c296bedd]


    is dit goed?

    ik wil nog niet gelijk gaan klote in het script dus vandaar dat ik het eerst hier ff vraag of het goed is.

    er zal nog wel een syntax foutje in zitten omdat ik het gwn hier heb getypt, maar het gaat er om of er echt denk fouten in zitten.

    alvast bedakt!
  • Je kan een dergelijke controle gebruiken, al moet je dan [u:184298e7be]mysql_num_rows[/u:184298e7be] gebruiken i.p.v. controleren op null.

    Je hebt in de database een uniqueness constraint op de gebruikersnaam gezet, dus je kan ook "gewoon" de insert-query uitvoeren en aan de hand van de foutmelding controleren of het probleem is dat de gebruikersnaam al bestaat of dat er iets anders aan de hand is. Op die manier voer je een query minder uit en voorkom je een [u:184298e7be]race condition[/u:184298e7be] als twee mensen zich nagenoeg tegelijkertijd met dezelfde naam proberen aan te melden. Al zal dit laatste geen probleem zijn bij een site voor een schoolopdracht.
  • oke erg bedankt het is gelukt. maar dan idd met numrows vind ik overzichtelijker. op die andere manier ga ik nog een keer proberen.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.