probleempje
Hier is de code:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$sql = "SELECT lastactive FROM '".$db_tbl."' WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$vorigeactief = ($row->lastactive);
$sql = "UPDATE `".$db_tbl."` SET vorigeactief = '".$vorigeactief."', lastactive = NOW() WHERE id = '".$_SESSION['user_id']."'";
mysql_query($sql);
?>
$sql = "SELECT lastactive FROM '".$db_tbl."' WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$vorigeactief = ($row->lastactive);
$sql = "UPDATE `".$db_tbl."` SET vorigeactief = '".$vorigeactief."', lastactive = NOW() WHERE id = '".$_SESSION['user_id']."'";
mysql_query($sql);
?>
wie weet waar ik de fout in ga?
Gewijzigd op 01/01/1970 01:00:00 door Arno
Als je nou eerst die NOW() opslaat, en dan die ophaalt en in dat andere veld opslaat. Dan heb je altijd twee keer dezelfde datum ;-).
De eerste voer je alleen uit bij het inloggen, de andere tijdens elke pagina load. Toch?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$sql = "UPDATE tabel SET vorigeactief = laatste_login WHERE id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql);
if(mysql_affected_rows()==1){
// sql gelukt
}
elseif(mysql_affected_rows() > 1) {
// fout datamodel
}
else {
// iets fout gegaan mail naar beheerder oid
}
?>
$sql = "UPDATE tabel SET vorigeactief = laatste_login WHERE id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql);
if(mysql_affected_rows()==1){
// sql gelukt
}
elseif(mysql_affected_rows() > 1) {
// fout datamodel
}
else {
// iets fout gegaan mail naar beheerder oid
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Ik werk met phpMyLogon van Jorik Berkepas. Hierin wordt de inlogdatum/tijd weggeschreven als lastactive.
Nu wil ik op de persoonlijke pagina van elk lid de datum en tijd laten zien wanneer zij voor het laatst hebben ingelogd. Die gegevens moeten dus uit de kolom 'lastactive' worden gehaald voordat (direct na het inloggen) die gereset wordt naar de actuele datum en tijd. Hier is het gehele script:
Code (php)
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
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
<?php
###################################
## PHPMYLOGON: A LOGIN SYSTEM ##
## (c) 2006 Jorik Berkepas ##
## Under the GNU GPL license ##
## [email protected] ##
###################################
// Inlucde this file (safe.php) to let a page only access by members/admins
include_once("config.php");
include_once("lang/lang_".$lang.".php");
include_once("connect.php");
if(isset($_SESSION['user_id']))
{
// Login ok, get lastactive, then update last active and ip
$sql = "SELECT lastactive FROM '".$db_tbl."' WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$vorigeactief = ($row->lastactive);
$sql = "UPDATE `".$db_tbl."` SET vorigeactief = '".$vorigeactief."', lastactive = NOW() WHERE id = '".$_SESSION['user_id']."'";
mysql_query($sql);
}
else
{
if(isset($_COOKIE['cookie_id']))
{
$sql = "SELECT cookie_pass,state FROM `".$db_tbl."` WHERE id = '".$_COOKIE['cookie_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$dbpass = htmlspecialchars($row->cookie_pass);
$dbstatus = htmlspecialchars($row->state);
if($dbpass == $_COOKIE['cookie_pass'])
{
$_SESSION['user_id'] = $_COOKIE['cookie_id'];
$_SESSION['user_status'] = $dbstatus;
}
else
{
setcookie("cookie_id", "", time() - 3600);
setcookie("cookie_pass", "", time() - 3600);
header("Location:index.php?goto=login");
}
}
else
{
header("Location:index.php?goto=login");
}
}
?>
###################################
## PHPMYLOGON: A LOGIN SYSTEM ##
## (c) 2006 Jorik Berkepas ##
## Under the GNU GPL license ##
## [email protected] ##
###################################
// Inlucde this file (safe.php) to let a page only access by members/admins
include_once("config.php");
include_once("lang/lang_".$lang.".php");
include_once("connect.php");
if(isset($_SESSION['user_id']))
{
// Login ok, get lastactive, then update last active and ip
$sql = "SELECT lastactive FROM '".$db_tbl."' WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$vorigeactief = ($row->lastactive);
$sql = "UPDATE `".$db_tbl."` SET vorigeactief = '".$vorigeactief."', lastactive = NOW() WHERE id = '".$_SESSION['user_id']."'";
mysql_query($sql);
}
else
{
if(isset($_COOKIE['cookie_id']))
{
$sql = "SELECT cookie_pass,state FROM `".$db_tbl."` WHERE id = '".$_COOKIE['cookie_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$dbpass = htmlspecialchars($row->cookie_pass);
$dbstatus = htmlspecialchars($row->state);
if($dbpass == $_COOKIE['cookie_pass'])
{
$_SESSION['user_id'] = $_COOKIE['cookie_id'];
$_SESSION['user_status'] = $dbstatus;
}
else
{
setcookie("cookie_id", "", time() - 3600);
setcookie("cookie_pass", "", time() - 3600);
header("Location:index.php?goto=login");
}
}
else
{
header("Location:index.php?goto=login");
}
}
?>
Het probleem is dat hij de kolom 'vorigeactief' niet bijwerkt, terwijl de kolom 'lastactive' wel gewoon wordt bijgewerkt. Ik heb geprobeerd om beide acties te splitsen:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$sql1 = "UPDATE `".$db_tbl."` SET vorigeactief='".$vorigeactief."' WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql1);
$sql2 = "UPDATE `".$db_tbl."` SET lastactive=NOW() WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql2);
?>
$sql1 = "UPDATE `".$db_tbl."` SET vorigeactief='".$vorigeactief."' WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql1);
$sql2 = "UPDATE `".$db_tbl."` SET lastactive=NOW() WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql2);
?>
maar dat werkte ook niet......
Waarom kan je niet gewoon al deze acties laten inserten. Daarna haal je de laaste op als actief, en de een na laaste als laatste actief... Dit scheelt weer een query volgens mij...
Code (php)
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
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
<?php
$sql = "UPDATE ".
$db_tbl.
" SET
vorigeactief = lastactive,
lastactive=NOW()
WHERE
id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql);
if(mysql_affected_rows()==1){
// sql gelukt
}
elseif(mysql_affected_rows() > 1) {
// fout datamodel
}
else {
// iets fout gegaan mail naar beheerder oid
}
?>
$sql = "UPDATE ".
$db_tbl.
" SET
vorigeactief = lastactive,
lastactive=NOW()
WHERE
id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql);
if(mysql_affected_rows()==1){
// sql gelukt
}
elseif(mysql_affected_rows() > 1) {
// fout datamodel
}
else {
// iets fout gegaan mail naar beheerder oid
}
?>
Code (php)
1
2
3
4
2
3
4
<?
$sql1 = "INSERT INTO `".$db_tbl."` (vorigeactief, lastactive) VALUES ('".$vorigeactief.", NOW()') WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql1);
?>
$sql1 = "INSERT INTO `".$db_tbl."` (vorigeactief, lastactive) VALUES ('".$vorigeactief.", NOW()') WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql1);
?>
Vreemd genoeg doet hij het dan nog niet???
en doe eens echo van $query
Code (php)
1
2
3
4
2
3
4
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in safe.php on line 15
Notice: Trying to get property of non-object in safe.php on line 16
INSERT INTO gebruikers (vorigeactief, lastactive) VALUES ('', NOW())
Notice: Trying to get property of non-object in safe.php on line 16
INSERT INTO gebruikers (vorigeactief, lastactive) VALUES ('', NOW())
Gewijzigd op 01/01/1970 01:00:00 door Arno
Hoe wil je overigens een INSERT doen met een WHERE?
Code (php)
1
2
3
4
2
3
4
<?php
$sql1 = "INSERT INTO `".$db_tbl."` (vorigeactief, lastactive) VALUES ('".$vorigeactief.", NOW()') WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql1);
?>
$sql1 = "INSERT INTO `".$db_tbl."` (vorigeactief, lastactive) VALUES ('".$vorigeactief.", NOW()') WHERE id='".$_SESSION['user_id']."'";
mysql_query($sql1);
?>
Heb je enig idee wat je aan het doen bent?
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Code (php)
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
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
<?php
###################################
## PHPMYLOGON: A LOGIN SYSTEM ##
## (c) 2006 Jorik Berkepas ##
## Under the GNU GPL license ##
## [email protected] ##
###################################
// Inlucde this file (safe.php) to let a page only access by members/admins
error_reporting(E_ALL);
ini_set('display_errors',1);
include_once("config.php");
include_once("lang/lang_".$lang.".php");
include_once("connect.php");
if(isset($_SESSION['user_id']))
{
// Login ok, get lastactive, then update last active and ip
// we gaan laats online setten
$sql = "UPDATE ".
$db_tbl.
" SET
vorigeactief = lastactive,
lastactive=NOW()
WHERE
id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql) or die(mysql_error());
// kijken of de sql gelukt is
if(!mysql_affected_rows()==1){
// bijvoorbeeld mail aan de beheerder
}
}
elseif(isset($_COOKIE['cookie_id'])) { // blijkbaar is de user aan het inloggen
// codehieronder vind ik eng overigens
$sql = "SELECT cookie_pass,state FROM `".$db_tbl."` WHERE id = '".$_COOKIE['cookie_id']."'";
$result = mysql_query($sql);
while($gegevens = mysql_fetch_array($result)){
$dbpass = htmlspecialchars($gegevens['cookie_pass']);
$dbstatus = htmlspecialchars($gegevens['state']);
if($dbpass == $_COOKIE['cookie_pass']){
$_SESSION['user_id'] = $_COOKIE['cookie_id'];
$_SESSION['user_status'] = $dbstatus;
}
else {
setcookie("cookie_id", "", time() - 3600);
setcookie("cookie_pass", "", time() - 3600);
header("Location:index.php?goto=login");
}
}// while afsluiten
}
else
{
header("Location:index.php?goto=login");
}
?>
###################################
## PHPMYLOGON: A LOGIN SYSTEM ##
## (c) 2006 Jorik Berkepas ##
## Under the GNU GPL license ##
## [email protected] ##
###################################
// Inlucde this file (safe.php) to let a page only access by members/admins
error_reporting(E_ALL);
ini_set('display_errors',1);
include_once("config.php");
include_once("lang/lang_".$lang.".php");
include_once("connect.php");
if(isset($_SESSION['user_id']))
{
// Login ok, get lastactive, then update last active and ip
// we gaan laats online setten
$sql = "UPDATE ".
$db_tbl.
" SET
vorigeactief = lastactive,
lastactive=NOW()
WHERE
id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql) or die(mysql_error());
// kijken of de sql gelukt is
if(!mysql_affected_rows()==1){
// bijvoorbeeld mail aan de beheerder
}
}
elseif(isset($_COOKIE['cookie_id'])) { // blijkbaar is de user aan het inloggen
// codehieronder vind ik eng overigens
$sql = "SELECT cookie_pass,state FROM `".$db_tbl."` WHERE id = '".$_COOKIE['cookie_id']."'";
$result = mysql_query($sql);
while($gegevens = mysql_fetch_array($result)){
$dbpass = htmlspecialchars($gegevens['cookie_pass']);
$dbstatus = htmlspecialchars($gegevens['state']);
if($dbpass == $_COOKIE['cookie_pass']){
$_SESSION['user_id'] = $_COOKIE['cookie_id'];
$_SESSION['user_status'] = $dbstatus;
}
else {
setcookie("cookie_id", "", time() - 3600);
setcookie("cookie_pass", "", time() - 3600);
header("Location:index.php?goto=login");
}
}// while afsluiten
}
else
{
header("Location:index.php?goto=login");
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Code (php)
1
2
3
4
2
3
4
<?php
$sql1 = "INSERT INTO '".$db_tbl."' (lastactive, vorigeactief) VALUES (NOW(), '".$vorigeactief."')";
mysql_query($sql1);
?>
$sql1 = "INSERT INTO '".$db_tbl."' (lastactive, vorigeactief) VALUES (NOW(), '".$vorigeactief."')";
mysql_query($sql1);
?>
zo lukte het bij mij toch...
let ook op je quotes! die stonden niet helemaal goed...maar zo zou hij moeten lukken geloof ik....
maw als je dan kijkt wanneer je voor het laatst hebt ingelogd, zie je dat dat een halve minuut geleden is..?
goede vraag maar aangezien het hier om insert gaat en je de variabele lastactive al gefetched hebt geloof ik niet dat dit een probleem zal geven...testen is de boodschap ;)
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in safe.php on line 15
blijft terugkomen. Hij schrijft nog steeds niets in de db :(
waar komt je $db_tabel eigenlijk vandaan?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
[code]<?php
session_start();
ob_start();
// MySQL settings
$db_user = "root"; // MySQL username
$db_pass = "****"; // MySQL password
$db_host = "localhost"; // MySQL host, mostly localhost
$db_db = "login"; // MySQL database
$db_tbl = "gebruikers"; // MySQL table
// Settings
$site_url = "http://www.mijnsite.nl/"; // URL to PhpMyLogon, / at end
$site_mail = "[email protected]"; // Mail address website
$site_name = "mijnsite.nl"; // Website name
$activate = "TRUE"; // E-mail validation at registration, TRUE or FALSE
$afterlogin = "index.php"; // Page to go to after login
$lang = "nl"; // Language of PhpMyLogon
?>
?>
[code]<?php
session_start();
ob_start();
// MySQL settings
$db_user = "root"; // MySQL username
$db_pass = "****"; // MySQL password
$db_host = "localhost"; // MySQL host, mostly localhost
$db_db = "login"; // MySQL database
$db_tbl = "gebruikers"; // MySQL table
// Settings
$site_url = "http://www.mijnsite.nl/"; // URL to PhpMyLogon, / at end
$site_mail = "[email protected]"; // Mail address website
$site_name = "mijnsite.nl"; // Website name
$activate = "TRUE"; // E-mail validation at registration, TRUE or FALSE
$afterlogin = "index.php"; // Page to go to after login
$lang = "nl"; // Language of PhpMyLogon
?>
?>
Config.php wordt aan het begin ge-include
Gewijzigd op 01/01/1970 01:00:00 door Arno
He Arno heb je mijn scriptje geprobeerd. Ik ben namelijk niet voor Jan l.l bezig geweest en je reageert er niet eens op.