Toon posts:

[PHP] Online script in twee delen

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

Verwijderd

Topicstarter
Hallo,,

Ik zocht een goed online-script waarmee ik kon zien welke sessies er lopen op welke sites. Nu heb ik op internet het volgende gevonden:

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
72
73
74
75
76
77
78
<?php
if ($oConn = @mysql_connect('localhost','root','')) {
    if (!@mysql_select_db('test',$oConn)) {
        exit('<p /><b>Mysql Fout: </b> kon database niet selecteren.');
    }
} else {
    exit('<p /><b>Mysql Fout: </b> kon geen verbinding maken met de mysql server.');
}

/*****************
Mysql:
CREATE TABLE `online` (
`session_id` varchar(32) NOT NULL default '0',
`plaats` varchar(100) NOT NULL default '/index.php',
`start` int(11) NOT NULL default '0',
`update` int(11) NOT NULL default '0'
) TYPE=MyISAM

*****************/

// include het mysql verbindingsbestand
include('mysql.connection.php');
// start de sessies
session_start();

$iTime             = time(); // zet $iTime nar time() hoeven we time() later niet meer te gebruiken
$iTimeOnline     = 30; // hoeveel tijd moet een gebruiker hebben totdat hij moet refreshen?


// als en een oude bekende is updaten we, anders maken we een nieuwe rij aan
if (isset($_SESSION['online']) AND $_SESSION['online'] > $iTime){
    $sUpdateQuery = 'UPDATE online SET plaats = "'.$_SERVER['REQUEST_URI'].'", `update` = '.($iTime+$iTimeOnline).' WHERE session_id = "'.session_id().'"';
} else {
    $sUpdateQuery = 'INSERT INTO online (plaats,session_id,start,`update`) VALUES ("'.$_SERVER['REQUEST_URI'].'","'.session_id().'",'.$iTime.','.($iTime+$iTimeOnline).')';
}
// update/maak de online sessie
$_SESSION['online'] = $iTime+$iTimeOnline;
// delete de mensen die niet meer online zijn
$sDeleteQuery = 'DELETE FROM online WHERE `update` < '.$iTime;

// als de query's fout gaan dan vertrekken we, anders zoeken we het aantal mensen online even op
if (@mysql_query($sDeleteQuery,$oConn) AND @mysql_query($sUpdateQuery,$oConn)) {
    $sQuery = 'SELECT COUNT(1) FROM online';
    if ($oOnline = @mysql_query($sQuery)) {
        $iMensenOnline = @mysql_result($oOnline,0);
    }
} else {
    echo '<p /><b>Mysql error: </b>'.@mysql_error($oConn); exit;
}

// voorbeeld 1: aantal mensen online weer geven
echo 'Er zijn '.$iMensenOnline.' mensen online.';

// voorbeeld 2: lijst met mensen en tijd neer zetten
$sQuery = 'SELECT (`update`-`start`-30) as tijd, plaats, session_id FROM online';
if ($oOnline = @mysql_query($sQuery,$oConn)) {
    if (@mysql_num_rows($oOnline) > 0){
        echo '<p /><table style="border: 1px solid black; width: 80%;" cellspacing=0 cellpadding=3>
        <tr style="background-color: yellow; font-weigth: bold;">
            <td>Session id</td>
            <td>Tijd</td>
            <td>Locatie</td>
        </tr>';
        while ($aOnline = @mysql_fetch_assoc($oOnline)) {
            echo '<tr>
                <td>'.$aOnline['session_id'].'</td>
                <td>'.$aOnline['tijd'].' sec.</td>
                <td><a href="'.$aOnline['plaats'].'">'.$aOnline['plaats'].'</a></td>
            </tr>';
        }
        echo '</table>';
    } else {
        echo 'Er zijn geen mensen online.';
    }
} else {
    echo '<p /><b>Mysql error: </b>'.@mysql_error($oConn); exit;
}
?> 


Het werkt goed, hij laat zien welke sessies er lopen, maar natuurlijk alleen de sessies die lopen met ditzelfde bestand, dus heb ik er eigenlijk nog niets aan. Nu heb ik al geprobeerd hem in tweeen te splitsen, maar dit wil niet lukken. Ik plaatste het deel vóór 'voorbeeld1' op de pagina's waar de bezoekers op komen, en het onderste deel (ná 'voorbeeld1') liet ik op 1 pagina staan, maar dan werden niet de juiste sessies weergegeven, maar ik kreeg ook geen error. Natuurlijk had ik MySQL connection er wel op, en die andere twee variablen, maar ik kreeg niet de juiste sessies te zien.

Heeft iemand enig idee hoe ik dit script in twee delen zou kunnen splitsen? Zodat ik één deel op elke pagina kan zetten, en één pagina krijg waarop ik de lopende sessies kan zien??

Bij voorbaat dank, SAplayer ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

Je kan een script natuurlijk niet zomaar in tweeën splitsen. Je kan een fiets toch ook niet doormidden breken, en daarna verwachten dat je met allebei de losse delen nog steeds kunt fietsen? ;)

Als je wil weten wat je moet aanpassen, dan zul je PHP moeten leren. Wij gaan niet je gedownloade code voor je fixen, dat zul je toch echt zelf moeten doen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ik kan vrij aardig PHP, tenminste, de meest gebruikte commando's kan ik wel, maar in dit script zijn hele geavanceerde niet-vaak gebruike comamndo's gebruikt (tenminste, zo vindt ik het eruit zien). Dus ik dacht, misschien is er iemand die mij kan helpen, ik heb al uitgelegd hoe ik het heb staan, misschien dat iemand ziet wat ik er nog aan moe toevoegen...

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 25-03 10:55

XangadiX

trepanatie is zóó kinderachtig

en dit is nu wat men noemt een scriptrequest, zoals uitgelegd in de faq en da mag dus niet :p

-NMe- zat met te buggen op msn :X met
Ik zie wel wat je kan toevoegen, maar zo werkt het hier gewoon niet, we zijn hier geen quickfix, en ook geen afhaalbalie voor kant en klare code. Maar ik kan je wel in de goede richting wijzen om het zelf te kunnen fixen: als je dit al gelezen hebt en/of kent, dan hoef je daarna alleen nog maar hier en hier de functies op te zoeken die je niet begrijpt.

Overigens zou ik die @'s voor al die functies weghalen. Als er wat fout gaat, onderdrukt een @ die fout, en dat wil je tijdens het programmeren nooit.

[ Voor 77% gewijzigd door XangadiX op 28-01-2006 23:56 ]

Stoer; Marduq


Dit topic is gesloten.