Welke gebruiker is wanneer en hoe vaak ingelogd geweest?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Jan van der Veeken

Jan van der Veeken

25/05/2016 20:09:42
Quote Anchor link
dbc.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
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<?php

define ("DB_HOST", "localhost"); // set database host
define ("DB_USER", "root"); // set database user
define ("DB_PASS",""); // set database password
define ("DB_NAME","ambicius_nieuw"); // set database name

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database");



/* Registration Type (Automatic or Manual)
 1 -> Automatic Registration (Users will receive activation code and they will be automatically approved after clicking activation link)
 0 -> Manual Approval (Users will not receive activation code and you will need to approve every user manually)
*/

$user_registration = 1;  // set 0 or 1

define("COOKIE_TIME_OUT", 10); //specify cookie timeout in days (default is 10 days)
define('SALT_LENGTH', 9); // salt for password

//define ("ADMIN_NAME", "admin"); // sp

/* Specify user levels */

define ("ADMIN_LEVEL", 5);
define ("USER_LEVEL", 1);
define ("GUEST_LEVEL", 0);



/*************** reCAPTCHA KEYS****************/
$publickey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";


/**** PAGE PROTECT CODE  ********************************
This code protects pages to only logged in users. If users have not logged in then it will redirect to login page.
If you want to add a new page and want to login protect, COPY this from this to END marker.
Remember this code must be placed on very top of any html or php page.
********************************************************/


function page_protect() {
session_start();

global $db;


/* Secure against Session Hijacking by checking user agent */
if (isset($_SESSION['HTTP_USER_AGENT']))
{

    if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
    {

        logout();
        exit;
    }
}


// before we allow sessions, we need to check authentication key - ckey and ctime stored in database

/* If session not set, check for cookies set by Remember me */

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

    if(isset($_COOKIE['user_id']) && isset($_COOKIE['user_key'])){
    /* we double check cookie expiry time against stored in database */
    
    $cookie_user_id  = filter($_COOKIE['user_id']);
    $rs_ctime = mysql_query("select `ckey`,`ctime` from `users` where `id` ='$cookie_user_id'") or die(mysql_error());
    list($ckey,$ctime) = mysql_fetch_row($rs_ctime);
    // coookie expiry
    if( (time() - $ctime) > 60*60*24*COOKIE_TIME_OUT) {

        logout();
        }

/* Security check with untrusted cookies - dont trust value stored in cookie.         
/* We also do authentication check of the `ckey` stored in cookie matches that stored in database during login*/


     if( !empty($ckey) && is_numeric($_COOKIE['user_id']) && isUserID($_COOKIE['user_name']) && $_COOKIE['user_key'] == sha1($ckey)  ) {
           session_regenerate_id(); //against session fixation attacks.
    
          $_SESSION['user_id'] = $_COOKIE['user_id'];
          $_SESSION['user_name'] = $_COOKIE['user_name'];
        /* query user level from database instead of storing in cookies */    
          list($user_level) = mysql_fetch_row(mysql_query("select user_level from users where id='$_SESSION[user_id]'"));

          $_SESSION['user_level'] = $user_level;
          $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
          
       }
else {
       logout();
       }

  }
else {
    header("Location: login.php");
    exit();
    }
}
}



function
filter($data) {
    $data = trim(htmlentities(strip_tags($data)));
    
    if (get_magic_quotes_gpc())
        $data = stripslashes($data);
    
    $data = mysql_real_escape_string($data);
    
    return $data;
}



function
EncodeURL($url)
{

$new = strtolower(ereg_replace(' ','_',$url));
return($new);
}

function
DecodeURL($url)
{

$new = ucwords(ereg_replace('_',' ',$url));
return($new);
}

function
ChopStr($str, $len)
{

    if (strlen($str) < $len)
        return $str;

    $str = substr($str,0,$len);
    if ($spc_pos = strrpos($str," "))
            $str = substr($str,0,$spc_pos);

    return $str . "...";
}    

function
isEmail($email){
  return preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU', $email) ? TRUE : FALSE;
}

function
isUserID($username)
{

    if (preg_match('/^[a-z\d_]{5,20}$/i', $username)) {
        return true;
    }
else {
        return false;
    }
 }    
 
function
isURL($url)
{

    if (preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url)) {
        return true;
    }
else {
        return false;
    }
}

function
checkPwd($x,$y)
{

if(empty($x) || empty($y) ) { return false; }
if (strlen($x) < 4 || strlen($y) < 4) { return false; }

if (strcmp($x,$y) != 0) {
 return false;
 }

return true;
}

function
GenPwd($length = 7)
{

  $password = "";
  $possible = "0123456789bcdfghjkmnpqrstvwxyz"; //no vowels
  
  $i = 0;
    
  while ($i < $length) {

    
    $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
      
    
    if (!strstr($password, $char)) {
      $password .= $char;
      $i++;
    }

  }


  return $password;

}

function
GenKey($length = 7)
{

  $password = "";
  $possible = "0123456789abcdefghijkmnopqrstuvwxyz";
  
  $i = 0;
    
  while ($i < $length) {

    
    $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
      
    
    if (!strstr($password, $char)) {
      $password .= $char;
      $i++;
    }

  }


  return $password;

}


function
logout()
{

global $db;
session_start();

$sess_user_id = strip_tags(mysql_real_escape_string($_SESSION['user_id']));
$cook_user_id = strip_tags(mysql_real_escape_string($_COOKIE['user_id']));

if(isset($sess_user_id) || isset($cook_user_id)) {
mysql_query("update `users`
            set `ckey`= '', `ctime`= ''
            where `id`='$sess_user_id' OR  `id` = '$cook_user_id'"
) or die(mysql_error());
}
        

/************ Delete the sessions****************/
unset($_SESSION['user_id']);
unset($_SESSION['user_name']);
unset($_SESSION['user_level']);
unset($_SESSION['HTTP_USER_AGENT']);
session_unset();
session_destroy();

/* Delete the cookies*******************/
setcookie("user_id", '', time()-60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_name", '', time()-60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_key", '', time()-60*60*24*COOKIE_TIME_OUT, "/");

header("Location: login.php");
}


// Password and salt generation
function PwdHash($pwd, $salt = null)
{

    if ($salt === null)     {
        $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
    }

    else     {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return $salt . sha1($pwd . $salt);
}

function
checkAdmin() {

if($_SESSION['user_level'] == ADMIN_LEVEL) {
return 1;
}
else { return 0 ;
}

}


?>
 
PHP hulp

PHP hulp

29/03/2024 01:35:50
 
- Ariën  -
Beheerder

- Ariën -

25/05/2016 20:20:30
Quote Anchor link
Op welke manier voeg je die queries dan toe?
 
Obelix Idefix

Obelix Idefix

25/05/2016 20:49:06
Quote Anchor link
Je weet dat mysql is achterhaald? Gebruik mysqli (of pdo).

Verder lijkt de methode van beveiliging van wachtwoord ook achterhaald / niet veilig.

Misschien verstandig om niet alleen te zoeken naar scripts maar ook te weten wat er gebeurt?
 
Jan van der Veeken

Jan van der Veeken

30/05/2016 23:19:24
Quote Anchor link
Het enige wat ik graag wil is hoe ik een regel in mijn database moet maken die bij ieder bezoek van een koorlid wordt ge-update en de code die in de php pagina moet zetten om dit voor elkaar moet krijgen.
Dit is voor jullie een eitje en ik struin al 2 weken het internet af.

Groeten jan
 
- Ariën  -
Beheerder

- Ariën -

30/05/2016 23:27:33
Quote Anchor link
Ik ben benieuwd waar je dan in die twee weken naar zoekt?
Want ik heb al verteld dat je een INSERT / UPDATE query moet draaien, en daar is ontzettend veel over te vinden.
 
Marco Eilander

Marco Eilander

30/05/2016 23:31:10
Quote Anchor link
Jan van der Veeken op 30/05/2016 23:19:24:
Het enige wat ik graag wil is hoe ik een regel in mijn database moet maken die bij ieder bezoek van een koorlid wordt ge-update en de code die in de php pagina moet zetten om dit voor elkaar moet krijgen.
Dit is voor jullie een eitje en ik struin al 2 weken het internet af.

Groeten jan


Als je gebruik maakt van phpmyadmin, ga naar het desbetreffende tabel in je database, klik op structuur.

Dan zie je dit onderaan het tabel staan :
Afbeelding Klik op starten, noem die kolom bijv. "laatst_ingelogd". vervolgens maak je in het login een query en maak je gebruik van bijv time(). Elke keer als diegene dan inlogt wordt het veranderd.
 
- Ariën  -
Beheerder

- Ariën -

30/05/2016 23:32:04
Quote Anchor link
Vergeet ook niet het userID van diegene op te slaan :-)
 
Jan van der Veeken

Jan van der Veeken

31/05/2016 20:30:32
Quote Anchor link
Beste Mensen

In mijn loginbestand heb ik onderstaande regel toegevoegd, maar nu worden bij alle actieve gebruikers de datum veranderd en de tijd blijft op nul staan.

Jan
 
- Ariën  -
Beheerder

- Ariën -

31/05/2016 20:45:56
Quote Anchor link
En op welke manier pas je het steeds aan per bezoek?
 
Jan van der Veeken

Jan van der Veeken

31/05/2016 21:12:02
Quote Anchor link
Sorry Ariën
Ben vergeten in het vorige bericht de regel in te plakken.
Hieronder de regel.

$sql = "UPDATE FROM 'ambicius' WHERE time = 'time()' ";

In de tabel heb ik een kolom time aangemaakt timestamp en update current timestamp

Jan
 
- Ariën  -
Beheerder

- Ariën -

31/05/2016 21:13:56
Quote Anchor link
Die query kan niet kloppen.

Zie ook: http://www.w3schools.com/sql/sql_update.asp
Gewijzigd op 31/05/2016 21:22:59 door - Ariën -
 
Jan van der Veeken

Jan van der Veeken

31/05/2016 21:45:27
Quote Anchor link
UPDATE ambicius
SET time = time()
WHERE time = time();

?????????????????????
 
Obelix Idefix

Obelix Idefix

31/05/2016 21:50:27
Quote Anchor link
Heb je enig idee waar je mee bezig bent?
Wat je wilt is redelijk basic, kijk eens naar een basistut op bv phptuts.nl of plaats een vacature.
 
- Ariën  -
Beheerder

- Ariën -

31/05/2016 21:52:24
Quote Anchor link
Wat is 'ambicius' precies voor een tabel?
Ik zou bij de WHERE eerder kijken naar een userID.
 
Jan van der Veeken

Jan van der Veeken

31/05/2016 23:02:25
Quote Anchor link
Id
Email
Password
Time
 
- Ariën  -
Beheerder

- Ariën -

31/05/2016 23:07:47
Quote Anchor link
De tabel met gebruikers dus? Want eerder in je code heette de tabel nog 'users'.
Enlight me?

Vrder wil je natuurlijk een rijd aanpassen aan de hand van een (WHERE) userID, dus moet je als WHERE voorwaarde naar het id-veld kijken, en de ID waarmee de gebruiker op dat moment op je site mee bekend is.
$_SESSION['user_id'] dus.
 
Jan van der Veeken

Jan van der Veeken

01/06/2016 07:30:02
Quote Anchor link
Users was een test table ,maar bedankt voor je uitleg, ga dit vanmiddag uitproberen.

Fijne dag,
Jan
 
- Ariën  -
Beheerder

- Ariën -

01/06/2016 09:06:32
Quote Anchor link
Ik vind 'users' overigens een duidelijke naam, beter dan ambicious (ambitieus).
Zorg gewoon voor duidelijke naamgevingen in je applicatie. Dat voorkomt later de nodige onduidelijkheid.
 
Jan van der Veeken

Jan van der Veeken

01/06/2016 10:43:21
Quote Anchor link
Ambicius is de naam van ons koor.

Toevoeging op 01/06/2016 11:18:43:

$sql = "UPDATE * FROM 'ambicius' WHERE 'id' = $_SESSION['user_id']";

Heb bovenstaande regel toegevoegd niet tussen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
en het werkt niet er wordt geen datum geupdate.
 
- Ariën  -
Beheerder

- Ariën -

01/06/2016 11:36:31
Quote Anchor link
Jan van der Veeken op 01/06/2016 10:43:21:
Ambicius is de naam van ons koor.

Totdat er een nieuwe naam bijkomt. Users omschrijft alles. Namen moet je nooit als velden of tabellen omschrijven.
Quote:
Toevoeging op 01/06/2016 11:18:43:

$sql = "UPDATE * FROM 'ambicius' WHERE 'id' = $_SESSION['user_id']";

Heb bovenstaande regel toegevoegd niet tussen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
en het werkt niet er wordt geen datum geupdate.

Je bent toch niet mysqli_query() vergeten?

En je UPDATE-query klopt nog steeds nergens naar. Zie mijn vorige link.
Gewijzigd op 01/06/2016 12:06:38 door - Ariën -
 

Pagina: « vorige 1 2 3 volgende »



Overzicht Reageren

 
 

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.