ip-adres bezoeker via jquery

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 14-09 16:42
Hallo,

voor een gastenboek waarvan de bijdrages worden opgeslaan in een database via jquery, wil ik o.a. ook de ip-adressen van de bezoekers die iets posten in de database opslaan.

Dit heb ik reeds verschillende malen geprobeerd via (deelcode):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
... 
 var ipadres = "";
 $.getJSON("http://jsonip.appspot.com?callback=?",
    function(data){
       alert( "ipadres: " + data.ip);
       ipadres = "" + data.ip;
  });

 ...
 var dataString = "naam=" + naam + "&emailadres=" + emailadres + "&bericht=" + bericht + " &ipadres=" + ipadres;

 $.ajax({type: "POST", url: "ajax.php", data: dataString, complete: function(msg){
        $("div#berichten").html("" + msg.responseText);         
         }                                              
        });


Ook heb al geprobeerd het ip-adres in de database te krijgen via php zelf (in het php-bestand waarnaar jquery bij de $.ajax -functie naar verwijst) met $_SERVER['REMOTE_ADDR']. Ook dit lukt helemaal niet. In de database komt er telkens helemaal niets als ip-adres te staan.

Ik heb al veel geprobeerd via zoeken op internet, maar ik krijg het niet in orde.
Iemand die mij in de goede richting kan verder helpen, dank U.

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

jQuery is javascript == clientside

Het IP adres is daar dus niet beschikbaar, dit moet je dan ook aan de PHP kant doen. Je zegt dat je dat al hebt geprobeerd, maar wat heb je dan precies gedaan?

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Waarom zou je je gastenboek met javascript willen aansturen, terwijl dit gewoon met PHP kan.

Mensen zonder javascript, of die het uithebben staan met bijvoorbeeld een noscript-addon, kunnen dan niet eens posten.

De toename van NoScript begint te groeien, vanwege de ads die meestal via javascript worden getoont. Vind ik dus niet een verstandige keuze.

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 12-09 08:54

apNia

Schreeuwen en Nibbits eten!

Kan je je PHP code posten? Dit is wel de beste oplossing namelijk. Maar zo te zien returned die jquery functie ook een correct IP. Dus PHP is niet per definitie nodig daarvoor. Maar, tenzij ik het erg fout heb, een must om te schrijven naar de dbase.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

apNia schreef op donderdag 13 januari 2011 @ 23:33:
Kan je je PHP code posten? Dit is wel de beste oplossing namelijk. Maar zo te zien returned die jquery functie ook een correct IP. Dus PHP is niet per definitie nodig daarvoor. Maar, tenzij ik het erg fout heb, een must om te schrijven naar de dbase.
Die jQuery functie returned geen geldige JSON. Als je deze URL aanroept wel: http://jsonip.appspot.com/
Maar dan nog hoor je dit niet via javascript af te handelen.

RainerSGF: weet je wel het verschil tussen client- en serverside?

Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 14-09 16:42
ja, ik weet inderdaad dat javascript clientside is (code die op ieders computer zelf wordt uitgevoerd) terwijl php serverside is (en code/data is die door een server verzonden wordt naar een client).

In het php-bestand (die jquery aanroept) waarin ik de opslag van de data in de database behandel, heb ik de volgende belangrijke code-regel:

code:
1
2
3
4
5
...
$ipadres = $_SERVER['REMOTE_ADDR'];

mysqli_query(Connect_DB(), "INSERT INTO messages(datum, uur, ipadres, naam, emailadres, berichttekst, status) VALUES(CURDATE(), CURTIME(), '" . $ipadres . "','" . $_POST["naam"] . "','" . $_POST["emailadres"] . "','" . $_POST['bericht'] . "', 1)");
...


Alle data wordt probleemloos in de database opgeslaan, behalve het ip-adres niet

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als eens gewoon gedebugged? (Debuggen: Hoe doe ik dat?)

* Inhoud van $ipadres checken
* Query afdrukken en checken
* MySQL(i) foutmeldingen vangen en tonen / error_reporting

Verder: Lees eens wat over SQL Injection ;) Een beetje kwaadwillend gebruiker gooit nu met groot gemak je hele gastenboek leeg, of erger (dump van de users, droppen van je hele zooi tabellen of zelfs DB of...). Kijk dan eens naar (bijv) Parametrized Queries

[ Voor 36% gewijzigd door RobIII op 14-01-2011 00:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 12-09 08:54

apNia

Schreeuwen en Nibbits eten!

Erkens schreef op donderdag 13 januari 2011 @ 23:35:
[...]

Die jQuery functie returned geen geldige JSON. Als je deze URL aanroept wel: http://jsonip.appspot.com/
Maar dan nog hoor je dit niet via javascript af te handelen.

RainerSGF: weet je wel het verschil tussen client- en serverside?
Ah JSON heb ik nog niet zo veel kaas van gegeten. Doelde er meer op dat het dus wel gewoon kan met Javascript. Maar volgens mij blijft PHP onvermijdelijk, en is tevens de beste oplossing (zoals iemand zegt, Javascript kan je uitschakelen, de data is bijv te modificeren).

TS: Debug je PHP inderdaad goed, je ziet gewoon iets over het hoofd lijkt me :)

Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 14-09 16:42
tjsien, nu is het met dezelfde code toch plots gelukt.

Iedereen echt bedankt voor de nuttige en leerrijke bijdrages. Ik moet inderdaad echt eens serieus de materie 'sql injection' gaan lezen (zal zelf eens trachten een sql-injection te doen om m'n website).

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 14-09 16:42
is het gebruik van 'htmlentities', ism met de data die ingevuld is, een bescherming tegen sql-injection? Dit heb ik voordien gebruikt voor het gastenboek-formulier net vóór $_SERVER['PHP_SELF'].

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

RobIII heeft je daar een nette link naar wikipedia geplaatst, over uitleg. Er staan ook een lading links onderin om je te verdiepen in de materie. Begin daar eerst maar eens.

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

RainerSGF schreef op vrijdag 14 januari 2011 @ 00:36:
is het gebruik van 'htmlentities', ism met de data die ingevuld is, een bescherming tegen sql-injection? Dit heb ik voordien gebruikt voor het gastenboek-formulier net vóór $_SERVER['PHP_SELF'].
Nee, "htmlentities" is bedoeld voor output naar HTML, niet naar je database. Als je er niet uit komt met parametrized queries, gebruik dan op zijn minst "mysql_real_escape_string" oid (iig niet addslashes gebruiken hiervoor)

Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-09 09:47

dj_vibri

int(e^x) = f(u)^n

RaZ schreef op donderdag 13 januari 2011 @ 23:30:

De toename van NoScript begint te groeien, vanwege de ads die meestal via javascript worden getoont. Vind ik dus niet een verstandige keuze.
Dus jou redenering volgend wil dit zeggen dat binnen dit en x aantal tijd (niet al te lang, want Noscript begint te groeien) dat Jquery en aanverwanten zullen uitsterven? Dit terwijl Jquery/Json (ken niets van Json dus kan volledig de mist ingaan :) ) toch aan een opmars bezig zijn en "hot" zijn op dit moment?

Of loop ik achter... ?

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Mensen die "NoScript" gebruiken weten wat ze bepaalde dingen kunnen missen, echter je moet er altijd voor zorgen dat de basis dingen zonder javascript blijven werken. Echter rekening houden met de mensen die NoScript gebruiken doe ik niet, die kiezen er zelf voor.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Het is gewoon heel simpel: als je een IP wil loggen doe je dat serverside met de daarvoor bedoelde tools; Javascript hiervoor (willen) gebruiken is gewoon onzin.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Het is helemaal raar om een externe site te gebruiken om het IP op te halen en die clientside weer door te sturen naar je eigen script, dan kun je net zo goed geen IP loggen want de betrouwbaarheid is ver te zoeken. In PHP hoort $_SERVER['REMOTE_ADDR']; gewoon te werken overigens, wat gaat daar niet goed mee?

Acties:
  • 0 Henk 'm!

  • dwilmer
  • Registratie: Oktober 2008
  • Laatst online: 25-01 09:50
Afgezien van het feit dat het onlogisch, onhandig en onpraktisch is om een IP-adres via javascript uit te lezen, denk ik dat
code:
1
$.getJSON("http://jsonip.appspot.com?callback=?",[...])
niet gaat werken. XmlHttpRequest is namelijk behoorlijk dichtgetimmerd qua beveiliging; je kan geen requests sturen voor pagina's die op een ander domein staan.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 14-09 14:15
Er wordt in dit geval gebruik gemaakt van JSONP en dan is het wel mogelijk. Zie ook: Wikipedia: JSON

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

dwilmer schreef op vrijdag 14 januari 2011 @ 10:31:
Afgezien van het feit dat het onlogisch, onhandig en onpraktisch is om een IP-adres via javascript uit te lezen, denk ik dat
code:
1
$.getJSON("http://jsonip.appspot.com?callback=?",[...])
niet gaat werken. XmlHttpRequest is namelijk behoorlijk dichtgetimmerd qua beveiliging; je kan geen requests sturen voor pagina's die op een ander domein staan.
Gaat wel werken, omdat jQuery daar automagisch JSONP voor gebruikt. Echter de manier waarop RainerSGF het vervolgens verwerkt ging fout.

edit:
/laat

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
dwilmer schreef op vrijdag 14 januari 2011 @ 10:31:
Afgezien van het feit dat het onlogisch, onhandig en onpraktisch is om een IP-adres via javascript uit te lezen, denk ik dat
code:
1
$.getJSON("http://jsonip.appspot.com?callback=?",[...])
niet gaat werken. XmlHttpRequest is namelijk behoorlijk dichtgetimmerd qua beveiliging; je kan geen requests sturen voor pagina's die op een ander domein staan.
Je doelt op SOP en dat gaat niet op voor JSONP ;)

/spuit 11 :X

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • dwilmer
  • Registratie: Oktober 2008
  • Laatst online: 25-01 09:50
JSONP werkt toch anders? Als in:
code:
1
<script type="text/javascript" src="http://jsonip.appspot.com?callback=..."></script>


Als je het ophaalt op de manier van RainerSGF dan gaat het alsnog fout, omdat jQuery het probeert op te halen als JSON in plaats van JSONP. Dacht ik...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
dwilmer schreef op vrijdag 14 januari 2011 @ 14:43:
Als je het ophaalt op de manier van RainerSGF dan gaat het alsnog fout
Wat denk je dat jQuery intern doet in de getJSON method? Die maakt gewoon een script element en hangt die in de DOM.

[ Voor 20% gewijzigd door RobIII op 14-01-2011 15:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1