ich habe derzeit ein kleines Problem und weis nicht wie ich das lösen kann. Und zwar handelt es sich hierbei um ein Votepingback System.
Unter anderem speichert er in einer SQL Datenbank die IP des Voters ab. Jedoch speichert er die IPv4 und manchmal die IPv6. Das Problem hierbei ist, dass ich die IPv4 abgespeichert brauche und nicht die IPv6.
Weiß jemand wie ich das hinbekomme, dass immer die IPv4 abgespeichert wird (auch wenn eine IPv6 verfügbar ist)?
Garnicht, außer du deaktivierst IPv6 bei dir im Webserver (oder den AAAA Record im DNS), wozu ich aber nicht rate. In dem Moment wo ein Nutzer über das IPv6 Netz auf deine Website zugreift besitzt er keine IPv4 Adresse für den Zugriff, da es technisch zwei verschiedene Netze sind.
Ok hmm es geht halt darum das wenn mit einer ipv4 gevotet wurde erkennt er das und der vote Button wird grau mit der schrift "nächster vote ..."
Sobald mit einer ipv6 gevotet wird bekommt man zwar die vote punkte gutgeschrieben aber der Vote button wird nicht grau hinterlegt
Dann wirst du einen Fehler in deinem Code haben. Ob er nun eine IPv4 mit einer IPv4 oder eine IPv6 mit einer IPv6 vergleicht, macht keinen Unterschied.
Ist der Datentyp zum Abspeichern der IP-Adresse in deiner Datenbank groß genug für eine IPv6 Adresse? Ich denke mal, dass die IPv6 Adresse nur teilweise abgespeichert wird und so der Vergleich immer false zurückgibt. Alles andere macht keinen Sinn, wenn es mit der IPv4 Adresse funktioniert.
Edit: Zeig uns am besten deinen Code und die Strukturierung deiner Tabelle.
Ok hmm es geht halt darum das wenn mit einer ipv4 gevotet wurde erkennt er das und der vote Button wird grau mit der schrift "nächster vote ..."
Sobald mit einer ipv6 gevotet wird bekommt man zwar die vote punkte gutgeschrieben aber der Vote button wird nicht grau hinterlegt
Es wäre klüger wenn man die Datenbankstruktur bzw. Code anpassen würde
Nachdem IPv4 eigentlich für lange überholt gilt, kannst du nicht erwarten einfach alle Nutzer die zu IPv6 gezwungen werden auszuschließen
btw. wo es mir einfällt
das speichern von IP Adressen unterliegt strengen Datenschutz-Richtlinien in Deutschland
vielleicht erkundigst du dich um Alternativen, einen Benutzer eindeutig an eine IP zu binden ist jetzt nämlich auch nicht das aller klügste
Es wäre klüger wenn man die Datenbankstruktur bzw. Code anpassen würde
Nachdem IPv4 eigentlich für lange überholt gilt, kannst du nicht erwarten einfach alle Nutzer die zu IPv6 gezwungen werden auszuschließen
btw. wo es mir einfällt
das speichern von IP Adressen unterliegt strengen Datenschutz-Richtlinien in Deutschland
vielleicht erkundigst du dich um Alternativen, einen Benutzer eindeutig an eine IP zu binden ist jetzt nämlich auch nicht das aller klügste
Vom zweiten Teil gesprochen könnte man auf Canvas Fingerprinting verweisen. Vorteil daran ist, dass du keine IP Adresse speichern musst und den Nutzer selbst identifizieren kannst, wenn er eine andere IP Adresse hat.
Nachteil: Funktioniert nicht ohne Javascript und es könnte einige Probleme auf älteren Browsern verursachen.
Falls über die gleiche Idee noch andere Besucher stolpern, hier ein möglicher technischer Grund warum die Idee sich "jetzt" noch ausschließich auf IPv4 zu verlassen nicht so gut ist.
Wenn du dich nur auf die IP(v4)-Adressen verlässt musst du eines bedenken: Einige Haushalte haben inzwischen keine eigene IPv4 Adresse mehr sondern "nur" noch eine IPv6 Adresse. Damit diese trotzdem noch mit dem IPv4-Teil des Internets kommunizieren können, gibt es dafür Proxies beim jeweiligen Internetprovider. Diese Proxies werden von unterschiedlichen Internetnutzern verwendet, daher kannst du nicht davon ausgehen das die Proxy-IP nur zu einem Benutzer gehört.
<?php if (!defined('access')) {die("Die gesuchte Ressource wurde entfernt oder umbenannt, oder sie steht vorübergehend nicht zur Verfügung.");} ?>
<?php
if ($_CONFIG['vote_enabled'] AND count($_CONFIG['vote_toplists']) > 0) {
foreach ($_CONFIG['vote_toplists'] as $intTopListID => $mixedTopListArray) {
if(isset($_POST['submitVote'.$intTopListID])) {
$strVoteErrorArray = array();
$intRecheckIPVotingTime = time() - $mixedTopListArray['timeLimit'];
$intTimestampOfLastVoteBeforeVote = @odbc_exec($odbc_connect, 'SELECT TOP 1 [timestamp] FROM [' . $_CONFIG['db_databases']['web'] . '].[dbo].[LOG_VOTE] WHERE [ip] = \'' . $_SERVER['REMOTE_ADDR'] . '\' AND [account] = \'' . cleanSqlInput($_SESSION['user']) . '\' AND [toplist] = ' . $intTopListID . ' AND [timestamp] > ' . $intRecheckIPVotingTime . ' ORDER BY [id] DESC');
$intRecheckIP = @odbc_num_rows($intTimestampOfLastVoteBeforeVote);
<?php if (!defined('access')) {die("Die gesuchte Ressource wurde entfernt oder umbenannt, oder sie steht vorübergehend nicht zur Verfügung.");} ?>
<?php
if ($_CONFIG['vote_enabled'] AND count($_CONFIG['vote_toplists']) > 0) {
foreach ($_CONFIG['vote_toplists'] as $intTopListID => $mixedTopListArray) {
if(isset($_POST['submitVote'.$intTopListID])) {
$strVoteErrorArray = array();
$intRecheckIPVotingTime = time() - $mixedTopListArray['timeLimit'];
$intTimestampOfLastVoteBeforeVote = @odbc_exec($odbc_connect, 'SELECT TOP 1 [timestamp] FROM [' . $_CONFIG['db_databases']['web'] . '].[dbo].[LOG_VOTE] WHERE [ip] = \'' . $_SERVER['REMOTE_ADDR'] . '\' AND [account] = \'' . cleanSqlInput($_SESSION['user']) . '\' AND [toplist] = ' . $intTopListID . ' AND [timestamp] > ' . $intRecheckIPVotingTime . ' ORDER BY [id] DESC');
$intRecheckIP = @odbc_num_rows($intTimestampOfLastVoteBeforeVote);
Ich klinke mich hierbei mal ein. Bin ein guter Kollege von bloody und kämpfe auch mit dem Problem.
Quote:
Originally Posted by Serraniel
Welche ErrorMessage bekommst du denn an welcher Quellcodestelle? Bekommst du die IPv6 Adresse über den Post Wert auch richtig übertragen?
Es entsteht keine Fehlermeldung. Die IPv6 wird sogar akkurat in die Datenbank eingetragen. Das funktioniert soweit.
Quote:
Originally Posted by iMostLiked
Und du hast auch revoted damit die IP neu eingetragen wird?
Vergleich mal den eingetragenen Wert mit der IP-Adresse. (Print/Echo sie mit PHP)
Es wurde komplett revoted nach mehr als 12 Stunden (diese Zeit schreibt die Votingseite vor). Eintrag der IPv6 klappt auch.
Wenn ich allerdings von meinem Rechner aus (IPv6 mit DS Lite Tunneling) die Funktion "($_SERVER["REMOTE_ADDR"]" aufrufe erhalte ich nur die im DS Lite Tunnel enthaltene "IPv4" Adresse in der Ausgabe.
Da stellt sich für mich die Frage, ob der Webserver richtig konfiguriert ist?
Ich bin zusätzlich hergegangen und habe jetzt noch einen AAAA Record für die Domain auf die IPv6 unseres Webservers zeigen lassen. Vielleicht hilft uns das schon weiter.
Wir haben etwas neues herausgefunden.
Sobald ich auf meinem PC lokal IPv6 deaktiviert habe, anschließend gevotet habe, wird die IPv4 Adresse in die Datenbank eingetragen und ebenfalls der Votebutton grau hinterlegt. Siehe Bild:
Genauso sollte es ablaufen, wenn die IPv6 aktiviert ist.
IPv4 / IPv6 Problem 03/19/2013 - Technical Support - 0 Replies Heyho Leute,
ich bin seit einer Woche bei Unitymedia Kunde und habe nun meine 50.000er Leitung. Soweit alles super nur habe ich da ein Problem.
Ich habe von Unitymedia ein Cisco-Modem bekommen, was aktuell ein Problem mit der Firmware hat. Dieses wird jedoch erst gegen Sommer diesen Jahres von denen gefixt (sehr schlechte Programmierer laut Techniker). Da das ganze über einen Server von Unity mit der Firmware läuft (Macadresse Whitelisted) kann ich da selbst nichts machen, weil die sich...
von ipv6 auf ipv4 umstellen... HILFE!!! 01/08/2013 - Technical Support - 2 Replies Haben vor kurzem zu KabelBW gewecheselt und wir haben ein Modem mit integriertem Router bekommen Name: cisco EPC3208G
und dieses Model hat nur IPv6 und jetzt kann ich nicht mehr Auf Server zugreifen oder xbox spielen ..
jetzt wollte ich fragen wenn sich jemand auskennt wenn mann das umstellen kann auf ipv4? Bitte um Hilfe