[PHP] Bezoekersteller + Login systeem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een scriptje(goed betaald ;) ), nou zit ik met een paar kleine probleempjes.

Land van herkomst:
Ik moet het land van herkomst achterhalen op een of andere manier, dit voor het mooi berekenen van de stats.
De website wordt een wereldwijde website dus ik moet op een of andere manier kunnen bekijken waarvandaan ze komen.

Ik heb een aantal keuzes:
• $HTTP_ACCEPT_LANGUAGE:
Voordeel:
Dit heeft als groot voordeel dat het geen groot script is, geen database vereist, geen moeite.

Nadeel:
Als de gebruiker een engelstalig besturingsysteem heeft dan ziet mijn script hem als engels. Hierdoor worden mijn stats (en taalkeuze) redelijk misvormd.

• IP Tabellen per land:
Ik heb een tijdje gezocht, ik heb het ook gevonden.
Meer info, zie Het [rml][ php/mysql] landen van bezoekers achterhalen[/rml]

Voordeel:
99,9% kans dat het land van herkomst klopt

Nadeel:
Je moet een script + database van 5mb aan ipranges hebben, dit is wel leuk enzo, maar niet geweldig.

Wat kan ik het beste gebruiken? Aan de ene kant ga ik voor de database, de andere kant helemaal niet.

Gebruikersloginscript:
Ik moet ook een scriptje maken dat een gebruiker inlogt met een sessie(zie GoT), deze sessie moet over te sluiten zijn.

Ik dacht aan ongeveer het volgende:

Gebruiker komt op de site, hij is nog niet ingelogged dus er wordt een sessie aangemaakt met een userid( = 0 ) en het ip van de gebruiker.
Nou wil ik kunnen zien waar deze gebruiker zich bevind op mijn website dus er moet een mysql database achter komen te hangen(niet zoon probleem).
Het uitloggen is ook niet een groot probleem, gewoon kijken of de sessie ook nog in MySQL staat, zoja dan ben je ingelogged, zonee dan ben je uitgelogged.

Het probleem zit hem in een klein vaag foutje.
Ik schrijf een sessie weg en maak een koekie aan die 1 jaar mag leven. De session lifetime staat ook op 1 jaar.
Hij wil ook leuk blijven ingelogged als je b.v. 5 minuten actief bent op de website en daarna het venster sluit en weer vedder gaat, maar als je langer dan 10 minuten bent ingelogged dan logt hij vanzelf uit :?

Stukjes script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (isset($_COOKIE["koek_userid"])) {
  $koeksesid = $_COOKIE["koek_userid"];
  $koeksesuserid = $_COOKIE["koek_sessionid"];
  $sql_temp = mysql_num_rows(mysql_query("SELECT * FROM 
{$sql_voor}sessions WHERE 
session_id='$koeksesid' AND user_id='$koeksesuserid' LIMIT 1"));
}

if ($zitsesidintable==1){ 
    session_id( $_COOKIE["koek_userid"] );
} else {
    setcookie ("koek_userid", "", time()-3600); 
    setcookie ("koek_sessionid", "", time()-3600);
}
session_start();
if (session_is_registered("sessiontje")) {
//..
} else {
//..
}


inloggen:
PHP:
1
2
3
4
5
6
7
8
9
10
//de koekies koek_userid en koek_sessionid worden gezet

//updaten wordt dus een timestamp gedaan(zodat je ook kan zien hoeveel
//gebruikers online zijn etc), ook een ip en request_uri stuur ik mee.

//hier het starten van de sessie
$koekdagen = 60*60*24*100; //secs*mins*uur*dagen
$sessiontje = array('Id' => $UserID, 'Username' => $UserName);
session_set_cookie_params ( time()+$koekdagen , "" , ".url.com" ); 
session_register("sessiontje");


Waarom logt hij dan uit na 10 minuten als je actief blijft? of werk ik gewoon stom met sessies?

[ Voor 6% gewijzigd door Verwijderd op 20-03-2003 20:23 . Reden: foutje @ scritp ]


Acties:
  • 0 Henk 'm!

Verwijderd

tja, voor het ip kan je gewoon de users ip pakken, daar een dns overeen gooien, en heb je al een redelijke kans dat je een domein naam terug krijgt, niet altijd, maar wel vaak, geeft je een land code van de gebruiker zijn verbinding, daarom zie je vaak ook bij netstat, com -> Commerciel, .net, .org etc.. apart staan, en ook een zooi onbekend.

voor je sessies... session life time van een jaar? ik denk dat je systeem dit niet leuk gaat vinden, maar ok...

Acties:
  • 0 Henk 'm!

Verwijderd

Je kan Whois gebruiken om ip adressen aan landen te koppelen. Dit is wel langzaam, misschien kan een cache dat oplossen.

Acties:
  • 0 Henk 'm!

Verwijderd

ik denk dat een dns sneller is, zeker als je een caching dns lokaal hebt draaien, maar ja, denk dat de 5mb database ook niet veel sneller is, ook niet met een index... hangt ook af van het aantal bezoekers...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 20 March 2003 @ 23:47:
tja, voor het ip kan je gewoon de users ip pakken, daar een dns overeen gooien, en heb je al een redelijke kans dat je een domein naam terug krijgt, niet altijd, maar wel vaak, geeft je een land code van de gebruiker zijn verbinding, daarom zie je vaak ook bij netstat, com -> Commerciel, .net, .org etc.. apart staan, en ook een zooi onbekend.

voor je sessies... session life time van een jaar? ik denk dat je systeem dit niet leuk gaat vinden, maar ok...
ja het is maar dat het even draait, ik denk dat ik het uiteinderlijk ook maar op 2 a 4 weken zet oid, lang zat.

hoe krijg je de dns informatie van een ip?
gethostbyaddr gethostbyname gethostbynamel etc is allemaal niet zinnig, ik kan wel de .com enzo ophalen, maar dan heb je .com en .net enzo.
20% van isp's heeft een .com als hostname, 20% een .net, dan nog maar 60% over, dat is niet echt veel.
hangt ook af van het aantal bezoekers...
als de site goed draait, verwacht ik er minimaal 5000 per dag(hele ruwe schatting, ik hoop dat het zoiets zit, gezien soortgelijke(lelijkere) sites)

[ Voor 11% gewijzigd door Verwijderd op 21-03-2003 00:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Iemand een idee voor het achterhalen cq inlogprobleem?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
^

beetje stomme schop, maar ik heb geen idee vedder

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

Ik weet niet aan wat voor een site je bezig bent maar die domeinen kloppen toch wel aardig hor:
1. Nederland 110455 92.1 %
2. België 7858 6.5 %
3. Verenigde Staten 410 0.3 %
4. Duitsland 191 0.2 %
5. Zweden 161 0.1 %
6. Spanje 129 0.1 %
7. Verenigd Koninkrijk 117 0.1 %
8. Frankrijk 68 0.1 %
9. Oostenrijk 29 0.0 %
10. Singapore 14 0.0 %
Onbekend 431 0.4 %
De rest 121 0.1 %

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
LauPro schreef op 23 March 2003 @ 15:46:
Ik weet niet aan wat voor een site je bezig bent maar die domeinen kloppen toch wel aardig hor:

[...]
via gethostbyaddr ofzo? hoe ander verkrijgen? dns opvragen oid.

gethostbyaddr krijg je iets als cpnr.dnsch1.nb.nl.home.com bij @home, dan ben ik opeens onbekend :?
Volgends mij kan ik dan net zo makkelijk via taal gaal(van de browser)
Pagina: 1