Toon posts:

[php] Cookie wordt niet opgeslagen

Pagina: 1
Acties:
  • 44 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben net begonnen met PHP, en heb een inlogscript geschreven. Nu zit ik met het probleem dat de cookie niet aan wordt gemaakt, en weet nog steeds niet waar dit aan kan liggen. Iemand enig idee? Ik heb 4 bestanden:


functions.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<? 
function connectdb() 
{ 
    //inloggegevens van de database 
    $sHost='bla'; 
    $sUser='bla'; 
    $sPass='bla'; 
    $sDb='bla'; 

    if(!$rDbConn=mysql_connect($sHost,$sUser,$sPass)) 
    { 
        echo 'Kon niet verbinden met de databaseserver'; 
        return FALSE; 
    } 
    else 
    { 
        if(!mysql_select_db($sDb,$rDbConn)) 
        { 
            echo 'Kon de database niet selecteren'; 
            return FALSE; 
        } 
    } 
    return $rDbConn; 
} 
?> 

<? 
function check_login($rDbConn) 
{ 
    $bLogin=FALSE; 

    if(empty($_SESSION['ingelogd'])) 
    { 
        //niet aangemeld volgens sessie, wel volgens db? 
        if(isset($_COOKIE['user_id']) && isset($_COOKIE['validate']) && 
            strlen($_COOKIE['validate'])==32 && preg_match('/^[0-9]{1,8}$/',$_COOKIE['user_id'])) 
        { 
            //de cookies bestaan en zijn geldig, kijken in de db 
            $sQuery='SELECT COUNT(*) FROM logins 
                    WHERE user_id='.$_COOKIE['user_id'].' AND validate="'.$_COOKIE['validate'].'" 
                        AND client_ip="'.$_SERVER['REMOTE_ADDR'].'" 
                        AND tijdstip>DATE_SUB(NOW(),INTERVAL 7 DAY)'; 
            if(!$rResult=mysql_query($sQuery,$rDbConn)) 
            { 
                echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery; 
            } 
            else 
            { 
                if(mysql_num_rows($rResult)==1) 
                { 
                    //volgens db al geldig ingelogd 
                    $bLogin=TRUE; 

                    //de sessie gegevens schrijven 
                    $_SESSION['ingelogd']=TRUE; 
                    $_SESSION['client_ip']=$_SERVER['REMOTE_ADDR']; 
                    $_SESSION['user_id']=$_COOKIE['user_id']; 

                    //willekeurige string maken 
                    $sValidate=md5(rand(0,99999)); 

                    //cookies setten voor 7dagen 
                    setcookie('validate',$sValidate,time()+60*60*24*7,'/','www.frozen-land.com'); 
                    setcookie('user_id',$_SESSION['user_id'],time()+60*60*24*7,'/','www.frozen-land.com'); 

                    //de gegevens in de tabel zetten 
                    $sQuery='REPLACE INTO logins (tijdstip, validate, user_id, client_ip) 
                                VALUES (NOW(), "'.$sValidate.'", '.$_SESSION['user_id'].', "'.$_SERVER['REMOTE_ADDR'].'")'; 
                    if(!mysql_query($sQuery,$rDbConn)) 
                    { 
                        echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery; 
                    } 

                    //deze functie behandel ik straks 
                    clean_up($rDbConn); 

                    return $bLogin; 
                } 
            } 
        } 
    } 
    elseif(isset($_SESSION['client_ip']) && $_SESSION['client_ip']==$_SERVER['REMOTE_ADDR'] 
            && isset($_SESSION['user_id']) && preg_match('/^[0-9]{1,8}$/',$_SESSION['user_id']) 
            && isset($_SESSION['ingelogd']) && $_SESSION['ingelogd']===TRUE) 
    { 
        return TRUE; 
    } 
    return FALSE; 
} 
?> 

<? 
strlen($_COOKIE['validate'])==32 && preg_match('/^[0-9]{1,8}$/',$_COOKIE['user_id']) 
?> 

<? 
//willekeurige string maken 
$sValidate=md5(rand(0,99999)); 

//cookies setten voor 7dagen 
$iUserId=mysql_result($rResult,0,'id'); 
setcookie('validate',$sValidate,time()+60*60*24*7,'/','www.frozen-land.com'); 
setcookie('user_id',$iUserId,time()+60*60*24*7,'/','www.frozen-land.com'); 

//de gegevens in de tabel zetten 
$sQuery='REPLACE INTO logins (tijdstip, validate, user_id, client_ip) 
            VALUES (NOW(), "'.$sValidate.'", '.$iUserId.', "'.$_SERVER['REMOTE_ADDR'].'")'; 
if(!mysql_query($sQuery,$rDbConn)) 
{ 
    echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery; 
} 

//de sessie gegevens schrijven 
$_SESSION['user_id']=$iUserId; 
$_SESSION['ingelogd']=TRUE; 
$_SESSION['client_ip']=$_SERVER['REMOTE_ADDR']; 

//doorsturen naar de volgende pagina 
header('location: secure.php'); 
?>


login.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<? 
session_start(); 
require('functions.php'); 

if($_SERVER['REQUEST_METHOD']=='POST') 
{ 
    if(FALSE!==($rDbConn=connectdb())) 
    { 
        $sQuery='SELECT id FROM users WHERE username="'.$_POST['username'].'" AND password="'.md5($_POST['password']).'"'; 
        if(!$rResult=mysql_query($sQuery,$rDbConn)) 
        { 
            echo 'Hey een foutmelding: '.mysql_error($rDbConn).'<BR>'.$sQuery; 
        } 
        else 
        { 
            if(mysql_num_rows($rResult)==0) 
            { 
                echo 'Gebruikersnaam en wachtwoord horen niet bij elkaar.'; 
            } 
            else 
            { 
                //En dan komt hier het loginverhaal 
            } 
        } 
        mysql_close($rDbConn); 
    } 
} 
else 
{ 
    //het formulier (zonder te letten op HTML-standaarden): 
    echo '<FORM NAME="inlogform" METHOD="post" ACTION="'.$_SERVER['PHP_SELF'].'"> 
            Gebruikersnaam: <INPUT TYPE="text" NAME="username" SIZE="10"><BR> 
            Wachtwoord: <INPUT TYPE="password" NAME="password" SIZE="10"><BR> 
            <INPUT TYPE="submit" VALUE="Inloggen"></FORM>'; 
} 
?>


logout.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? 
session_start(); 
require('functions.php'); 
if(FALSE!==($rDbConn=connectdb())) 
{ 
    if(!check_login($rDbConn)) 
    { 
        header('location: login.php'); 
        exit; 
    } 
    //wordt hieronder behandeld 
    clean_up($rDbConn,$_SESSION['user_id']); 

    mysql_close($rDbConn); 
} 
setcookie('validate','',time(),'/','www.frozen-land.com'); 
setcookie('user_id',0,time(),'/','www.frozen-land.com'); 
$_SESSION['ingelogd']=FALSE; 
echo 'Uitgelogd'; 
?>


toevoegen.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php      

if (isset($_POST["username"]) || isset($_POST["password"])) { // kijken of de variable zijn opgegeven in het formulier 
$md5password = md5($_POST["password"]);//md5 van maken 


    include ("functions.php"); // de functie verbind() is nodig 

    connectdb(); //verbinden 

    // controle of de gebruikers naam al bestaat 
    $sql = "SELECT * FROM users WHERE username LIKE '".$username."' ORDER BY id DESC";      
    $resultaat = mysql_query($sql) or die(mysql_error());      

    if ($row = mysql_fetch_object($resultaat)) {      
        echo "sorry deze gebruikers naam bestaat al";      
    }      
    else {      
          
        /*Maak SQL-query */       
        $sql = "INSERT INTO users (username, password) 
              VALUES ('".$username."', '".$md5password."')";      
        mysql_query($sql) or die ("fout in query");      

        // bericht weergeven 
        echo "succesvol toegevoegd<br><br>";      
        echo "<a href=\"login.php\">inloggen</a>";      
    }      
}       
else { // ander formulier weergeven 
?>      

<form action="toevoegen.php" method="post"> 
    username:<input type="Text" name="username"><br> 
    password:<input type="Password" name="password"><br> 
    <input type="Submit" name="Submit" value="Toevoegen"> 
</form> 

<?php } // else einde 
?>

[ Voor 15% gewijzigd door Verwijderd op 03-04-2004 23:56 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:15

.oisyn

Moderator Devschuur®

Demotivational Speaker

Debuggen doen we niet voor je

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.