PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IP-gesteuerte Anzeige der Sprachen um Kleinanzeigen


Calvados
16.09.2009, 16:10:57
Hallo,

ich habe einen Kleinanzeigenmarkt programmiert, in dem die verwendete
Sprache sowie die Anzeige der Kleinanzeigen über die IP des Besuchers
gesteuert wird.

Es gibt 2 Auswahlmöglichkeiten in Form von Länderflaggen, einmal für
die Sprache und einmal für das Herkunftsland der eingetragenen Kleinanzeigen.

So kann z. B. ein in Deutschland lebender Engländer deutsche Anzeigen durchsuchen
und erhält die Menüführung, Infotexte etc. in Englisch angezeigt.
Die Kleinanzeigen selbst werden natürlich nicht übersetzt.

Die IP und die Sprachdaten bzw. Daten für das Herkunftsland für die Anzeigen
werden in einer Tabelle gespeichert. Solange der Besucher mit der selben IP
online ist, sind die gewünschten Einstellungen gültig.

Die IP hole ich mit $_SERVER['REMOTE_ADDR']

Das Ganze ist mit einer Statistik verbunden. Daraus kann ich ersehen, dass das
System bei bisher ca. 20.000 Besuchern eigentlich bestens funktioniert hat.

Nun das Problem:

Einige Besucher teilten mir mit, dass sie die Einstellungen nicht ändern / benutzen können.
Ein Blick in die Tabellen zeigte mir, dass vereinzelt Datensatz (von ca. 500 ) vorhanden sind, in denen die gewünschten Einstellungen vorhanden waren, das Feld für die IP-Nummer allerdings als einziges leer war.

Woran kann das liegen?
Ist es möglich die IP Nummer zu unterdrücken?

Wie gesagt, bei ca. 500 Einträgen waren alle notwendigen Daten vorhanden,
nur bei 19 gefundenen Einträgen fehlte als einziges die IP, wodurch das
System für den entsprechenden Besucher nicht genutzt werden konnte.

Grüsse,
Calvados

DokuLeseHemmung
17.09.2009, 12:45:47
Nein, die IP kann man nicht unterdrücken.

Wenn du von IP sprichst, meinst du sicherlich IPV4, oder?
Aber evtl. ist dein System nicht in der Lage IPV6 Adressen zu erkennen/verarbeiten.

Die IP ist sowiso für solche Spässchen schlecht geeignet. Wg. Proxies usw.

Die Browser senden (fast) alle die Sprache mit, in der der Besucher die Seite sehen möchte.
Beispiel:
Ein Franzose sitzt mit seinem Laptop in einem griechischen Internetkaffee. Warum willst du ihm alles in griechisch zeigen?

Calvados
19.09.2009, 14:05:15
...Ein Franzose sitzt mit seinem Laptop in einem griechischen Internetkaffee. Warum willst du ihm alles in griechisch zeigen?

Eben deshalb kann der Besucher über einen Klick auf die Länderfahne aussuchen,
welche Spache das Menü, die Infotexte etc. haben sollen.

Solange er mit der selben IP online ist, bleibt diese Einstellung erhalten.
Das dürfte auch mit Proxis kein Problem sein.

Was sind IPV6 oder IPV4 - wo ist der Unterschied ?

Grüsse,
Calvados

DokuLeseHemmung
19.09.2009, 15:20:29
Eben deshalb kann der Besucher über einen Klick auf die Länderfahne aussuchen,
welche Spache das Menü, die Infotexte etc. haben sollen.

Darum solltest du ja auch die Browsersprache beauskunften, damit er nicht erst klicken muß. Viele sind damit überfordert. Auch kann man sich die Einstellung (wenn er denn geklickt hat) in einem Cookie merken.
Das mit der IP ist eine dumme Idee. Als Zusatz, OK, aber als Entscheidungsbasis, fehl am Platze.



Solange er mit der selben IP online ist, bleibt diese Einstellung erhalten.
Das dürfte auch mit Proxis kein Problem sein.
Blödsinn!
z.B AOL Besucher können bei JEDEM Zugriff eine andere IP haben
Und die großen DSL Provider wechseln min, 1 mal in 24 H
Triffst du so einen Punkt ist der User abgehangen.



Was sind IPV6 oder IPV4 - wo ist der Unterschied ?
Das ist doch jetzt nicht dein Ernst, oder?
Wenn du die IP verwenden willst, dann solltest du doch schon in der Lage sein, dich aus eigener Kraft über solche "kleinigkeiten" kundig zu machen.

Calvados
20.09.2009, 00:23:57
Hallo,

ok ok... hab mich bei Wikipedia über IP,s informiert ;-)

habs jetzt so geregelt - funktioniert prima...

if(isset($_GET['la']))
{
if($la != 'RESET')
{
$_la = "AND land = '".NoI($_GET['la'])."' ";
setcookie('land',$_GET['la'],time()+(3600*24));
}
elseif($la == 'RESET')
{
$_la = '';
setcookie('land','',time() - 3600);
}
}
elseif(isset($_COOKIE['land']))
{
$_la = "AND land = '".NoI($_COOKIE['land'])."' ";
}
else
{
$_la = '';
}

NoI() ist eine Funktion gegen SQL-Injection.

ist doch in Ordnung so oder ?

Grüsse,
Calvados

rarios
20.09.2009, 02:24:03
Man hätte auch einfach auf die Tipps der Experten hören können.
Aber muss man ja auch nicht...

Calvados
21.09.2009, 13:09:18
Man hätte auch einfach auf die Tipps der Experten hören können.
Aber muss man ja auch nicht...

Wieso ?
Hab ich doch?
Die Steuerung erfolgt jetzt über Cookies.

Wenn Du den Tipp mit der Browsersprache meinst...

Was macht der Türke, der seinen deutschen Freund besucht und lieber
Das Script in türkisch sehen will?

Ich denke, dass Niemand damit überfordert sein wird auf eine
Landesflagge zu klicken.

Grüsse
Calvados

Estefano
21.09.2009, 15:14:37
ich denke auch nicht das man überfordert sein kann seine landesflagge anzuklicken. jedoch würde ich nochmal überlegen ob ich ihm eventuell wirklich schon zu beginn aufgrund der ip adresse die entsprechende sprache anzeige.

da kann man auch zuerst eine englisch sprachige seite anzeigen. nach der auswahl des entsprechendes landes dann halt den cookie setzten.

rein aus interesse, da ich mich derzeit mit dem thema SQL Injection etc pp auseinander setze würde ich erne mal deine function zur SQL Injection sehen.

liebe grüße

cortex
22.09.2009, 17:13:30
Was macht der Türke, der seinen deutschen Freund besucht und lieber
Das Script in türkisch sehen will?

da er einen deutschsprachigen browser - möglicherweise gar ein deutschsprachiges betriebssystem - bedienen kann, findet er sich höchstwahrscheinlich gut zurecht .-

darüber hinaus:

1. wird das problem durch deinen ansatz auch nicht gelöst. oder besucht der türke seinen deutschen freund, der (ebenfalls) in der türkei lebt...?

2. musst du nicht eine liste von ip-adressbereichen pflegen? das ist doch wahnsinn für solch einen - sorry - schnulli.

nochmal zur problematik:

Das mit der IP ist eine dumme Idee. Als Zusatz, OK, aber als Entscheidungsbasis, fehl am Platze.

ich würde an deiner stellen nochmal gründlich darüber nachdenken... viele ansätze, die die ip auswerten, um (irgend-)etwas zu individualisieren, sind unbrauchbar / unzuverlässig.

cx

Calvados
26.09.2009, 13:57:16
...
rein aus interesse, da ich mich derzeit mit dem thema SQL Injection etc pp auseinander setze würde ich erne mal deine function zur SQL Injection sehen.

liebe grüße

function NoI($value)
{
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
if (!is_numeric($value))
{
$value = mysql_real_escape_string($value);
}
return $value;
}

Grüsse
Calvados