Ik wil dat als je je aanmeld dat dan je IP adres word opgeslagen.
Want dan kan ik het makkelijker bannen.
Ik ahd al iets geprobeerd maar dat doet het niet
Hier is de code:
Hmm, je registreerd hem wanneer iemand zich aanmeld?
Want de query is goed, en een update is helemaal niet nodig hier zoals sommige dat zeggen.
Je moet hem wel in dezelfde query doen waar je de rest insert, anders krijg je een 2e rij ja.
K vraag me eigenlijk af, en nog geen antwoord op.
Iemand registreerd zich, dandoe je INSERT en niet update lijkt me.
Dan voeg je toch METEEN zijn IP ermee in.
Dus waarom moet je dan updaten?
Bij het registreren kun je meteen zijn IP erinz etten?
Denk er wel aan, IP's veranderen nog weleens.
Dus als iemand inlogd controleer als zijn IP hetzelfde is als wat ind e DB staat, zoniet, dan WEL updaten.
Je kan er eventueel ook voor kiezen om nog een extra veld toe te voegen waarin je de hostname opslaat die op dat moment tot het ip adres behoorde. Met providers als de mijne (@Home) veranderd namelijk soms wel mijn ip adres maar nooit mijn hostname.
Om het ip adres in een integer veld te laten passen moet je gebruik maken van de functies INET_ATON() en INET_NTOA(). Dit zijn dus MySQL functies en geen php functies.
Wat veel mensen nu doen is het volgende:
1) Wanneer de gebruiker de pagina binnenkomt wordt er gecontroleerd of hij/zij ingelogd is.
2) Als de gebruiker is ingelogd controleren we met een COUNT() query of dit ip adres al opgeslagen is voor deze gebruiker
3) Als dat niet zo is dan voeren we het ip in, anders updaten we het ip.
Dit is een proces wat je heel simpel kan terugbrengen van 2 queries naar 1 (in meeste gevallen).
1) Je controleert nog altijd of de gebruiker is ingelogd omdat we met dit systeem alleen ingelogde gebruikers willen registreren.
2) We updaten de tabel met de volgende query:
UPDATE iplog
SET lastused = NOW()
WHERE ipaddress = INET_ATON('[ip-hier]')
AND userid = [userid-hier]
UPDATE iplog
SET lastused = NOW()
WHERE ipaddress = INET_ATON('[ip-hier]')
AND userid =[userid-hier]
3) Controleer met PHP.net: mysql_affected_rows of de tabel is geupdate (dan was de combinatie userid/ip dus al bekend). Is dat niet zo dan voeren we dus nu het ip adres in. Zo dus:
INSERT INTO iplog (ipaddress, userid, firstused, lastused)
VALUES (INET_ATON('[ip-hier]'),
[userid-hier],
NOW(),
NOW())
Wanneer je bovenstaande methode hanteert kan je mooi een lijstje bijhouden welke ip adressen bij een gebruiker horen en of een ip adres bijvoorbeeld gedeeld wordt met meerdere gebruikers. Als je bij het moment van opslaan ook nog eens de hostname opslaat kan je in de geschiedenis gelijk zien of de gebruiker niet gewoon telkens een nieuw ip krijgt maar dezelfde hostname houdt, dan zou je daar namelijk op kunnen bannen oid.
Succes in ieder geval en ik hoop dat je iets aan mijn post hebt gehad.
Denk eens even heel logisch na, wat heb ik net uitgelegd. In mijn voorbeeld wil ik de gegevens registreren wanneer de gebruiker is ingelogd. Dus ik zet die check bovenaan elke pagina en controleer ik of de gebruiker is ingelogd.
Als je initieel bij de registratie ook al het ip wil koppelen aan de net nieuw aangemaakte gebruiker dan dien je dat inderdaad daar te doen.
Dit zijn geen technische vragen gozer, dit is gewoon logisch nadenken.