anpera.net
https://anpera.homeip.net/phpbb3/

loganalyse . Multiaccounst und Rlpaare
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=2684
Seite 1 von 1

Autor:  azraeldemon [ Fr 14 Jul, 2006 23:10 ]
Betreff des Beitrags:  loganalyse . Multiaccounst und Rlpaare

Salve,

habe folgendes problem !

mit hilfe von loganalyse erfasse ich die uniqueid acctid laston name lastip dragonkills und level!

mit einem zusatz tool kann ich RLpaare eintragen damit ich bestätigt habe das es sich bei einer IP/ID/cookie um 2 personen und nicht um einen MULIACCOUNT handelt!

meine frage ist nun wie bekomme ich es hin das die bestätigten nicht mehr in der multi analyse auftauchen?

[php]}else if ($HTTP_GET_VARS[op]=="multi"){


$ip = $idlist = $users = array();
$sql = 'SELECT uniqueid FROM accounts WHERE uniqueid!="" GROUP BY uniqueid HAVING COUNT(*) > 1';
$result = db_query($sql) or die(db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$idlist[] = $row['uniqueid'];
}

output("`n`bCheat-Schlümpfe ab dem $abdatum (MoTD)`b`n`n`0");

foreach ($idlist AS $id) {
$sql = "SELECT acctid,name,lastip,uniqueid,dragonkills,level,laston FROM accounts
WHERE uniqueid = '$id' AND locked='0'
ORDER BY dragonkills ASC, level ASC";
$result = db_query($sql) or die(db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$userlist[] = $row;
}
$usergroup[] = $userlist;
unset($userlist);
}

foreach ($usergroup AS $group) {
$in_acctid = '';
$i = count($group);
$cookie = $group[0]['uniqueid'];
output("`n`n`Q$i Characters mit Cookie: $cookie`0`n");
output("<table border=0 cellpadding=2 cellspacing=1 >",true);
output("<tr class='input'><td>Spieler/in</td><td>letzte IP</td><td>Drachen</td><td>Level</td><td>Last On</td><td>RL-Partner</td>",true);
foreach ($group AS $member) {
output("<tr class='trmain'>",true);
output("<td>".$member['name']."</td><td>".$member['lastip']."</td><td align='center'>"
.$member['dragonkills']."</td><td align='center'>".$member['level']."</td>",true);
$in_acctid .= ','.$member['acctid'];
$laston=round((strtotime("0 days")-strtotime($member[laston])) / 86400,0)." Tage";
if (substr($laston,0,2)=="1 ") $laston="1 Tag";
if (date("Y-m-d",strtotime($member[laston])) == date("Y-m-d")) $laston="Heute";
if (date("Y-m-d",strtotime($member[laston])) == date("Y-m-d",strtotime("-1 day"))) $laston="Gestern";
if ($loggedin) $laston="Jetzt";
output("<td>".$laston."</td>",true);
$sqlrl1 = "SELECT * FROM rlpaare WHERE acctid1='".$member['acctid']."'";
$resultrl1 = db_query($sqlrl1) or die(db_error(LINK));
$rowrl1 = db_fetch_assoc($resultrl1);
$sqlname1 = "SELECT name FROM accounts WHERE acctid='".$rowrl1['acctid2']."'";
$resultname1 = db_query($sqlname1) or die(db_error(LINK));
$rowname1 = db_fetch_assoc($resultname1);
if (db_num_rows($resultrl1) > 0) {
output("<td>".$rowname1[name]."</td>",true);
}else{
$sqlrl2 = "SELECT * FROM rlpaare WHERE acctid2='".$member['acctid']."'";
$resultrl2 = db_query($sqlrl2) or die(db_error(LINK));
$rowrl2 = db_fetch_assoc($resultrl2);
$sqlname2 = "SELECT name FROM accounts WHERE acctid='".$rowrl2['acctid1']."'";
$resultname2 = db_query($sqlname2) or die(db_error(LINK));
$rowname2 = db_fetch_assoc($resultname2);
output("<td>".$rowname2[name]."</td>",true);
}
output("</tr>",true);
}
output("</table>",true);
// -> debuglog
$sql = 'SELECT debuglog.*,date,actor,target,a1.name as actorname,a2.name as targetname
FROM debuglog LEFT JOIN accounts as a1 ON a1.acctid=debuglog.actor
LEFT JOIN accounts as a2 ON a2.acctid=debuglog.target
WHERE actor IN (-1'.$in_acctid.')
AND target IN (-1'.$in_acctid.')
AND date > "'.date("Y-m-d H:i:s",strtotime($abdatum)).'"
ORDER BY date DESC, actor ASC';
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result) == 0) {
output("`^Debuglog:`0`n Keine Interaktion. `@Guuuuuut.`0`n");
}
else {
output("`^Debuglog:`0`n Die folgenden Interaktionen wurden gefunden:`n");
while ($row = db_fetch_assoc($result)) {
output("`$ Log:`0 ".$row['date']." - ".$row['actorname']." ".$row['message'].
" ".$row['targetname']."`n" );
}
}
// -> houses Eigentümer
$comarray = array();
$vergehen=0;
$owner=0;
$sql = 'SELECT houseid,owner,status,housename,a1.name as hausholder
FROM houses
LEFT JOIN accounts as a1 ON a1.acctid=houses.owner
WHERE owner IN (-1'.$in_acctid.')
ORDER BY owner ASC';
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result) == 0) {
output("`^Häuser:`0 Keine Hauseingentümer!`0`n");
}
else {
$i = 1;
output("`^Häuser:`0`n");
while ($row = db_fetch_assoc($result)) {
$sql2 = 'SELECT houses.houseid, houses.status, a1.name as hausholder, a2.name as keyholder,
items.owner as keyowner
FROM houses, items
LEFT JOIN accounts as a1 ON a1.acctid=houses.owner
LEFT JOIN accounts as a2 ON a2.acctid=items.owner
WHERE houses.owner = '.$row[owner].'
AND items.value1 = houses.houseid
AND items.owner IN (-1'.$in_acctid.')
AND items.owner != '.$row[owner].'
ORDER BY keyholder ASC';
$result2 = db_query($sql2) or die(db_error(LINK));
if (db_num_rows($result2) == 0) {
output("Hauseingentümer ".$row['hausholder']." `@ohne Schlüssel-Vergehen!`0`n");
}
else {
while ($row2 = db_fetch_assoc($result2)) {
output("`$ Vergehen $i:`0 Hausbesitzer ist ".$row2['hausholder'].",
Schüssel hat ".$row2['keyholder']." `n");
//status als zaehler brauchen
$row2['status']= $i;
$comarray[] = $row2;
$vergehen++;
//commentary hauseigentümer über folgenden trickauslesen
//if ( $owner == 0 || $owner == $row['owner'] ) {
if ( $owner != $row['owner'] ) {
$row2['keyowner']=$row['owner'];
$comarray[] = $row2;
$owner=$row['owner'];
}
//
$i++;
}
}
}
}
// -> Houses Eigentümer commentary
$flag = 0;
if ( $vergehen > 0 ) {
$i=1;
$hoch = 0;
foreach ($comarray AS $com) {
if ( $flag == 0 ) {
output("`6Comment Summary:`0`n");
$flag++;
}
$i = $com['status'];

$section = "house-".$com['houseid'];
$author = $com['keyowner'];
$hausnr = $com['houseid'];

$sql = 'SELECT *, a1.name as actorname
FROM commentary LEFT JOIN accounts as a1 ON a1.acctid=commentary.author
WHERE author ='.$author.'
AND section ="'.$section.'"
ORDER BY commentid ASC';
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result) == 0) {
output("`6($i)`0 Keine Einträge`n");
}
else {
$dg = $ng = $de = $ne = 0;
while ($row = db_fetch_assoc($result)) {
$text = $row['comment'];
$wer = $row['actorname'];
$text2 = str_replace("/me ", " ", $row['comment']);
//output($row['actorname']."`0 ".$text2."`0`n" );

if ( !strpos( $text, "Edelsteine") ) {
if ( !strpos( $text, "nimmt") ) {
$tmp = str_replace("/me `@deponiert `^", "", $text);
$tmp = str_replace("`@ Gold.", "", $tmp);
$dg += $tmp;
}
else {
$tmp = str_replace("/me `\$nimmt `^", "", $text);
$tmp = str_replace("`$ Gold.", "", $tmp);
$ng += $tmp;
}
}
else {
if ( !strpos( $text, "nimmt") ) {
$tmp = str_replace("/me `@deponiert `#", "", $text);
$tmp = str_replace("`@ Edelsteine.", "", $tmp);
$de += $tmp;
}
else {
$tmp = str_replace("/me `\$nimmt `#", "", $text);
$tmp = str_replace("`$ Edelsteine.", "", $tmp);
$ne += $tmp;
}
}
}
output("`0`6($i) Haus $hausnr:`0 $wer `$ deponiert $dg Gold und $de Gems,
nimmt $ng Gold und $ne Gems.`0`n" );
}
if ( $hoch == 0 ) {
$hoch = 1;
} else {
$i++;
$hoch = 0;
}
}
}
unset($comarray);


// -> houses Bewohner
$comarray = array();
$id_alt=0;
$sql = 'SELECT items.value1, items.owner AS keyowner, houses.owner AS houseowner
FROM items
LEFT JOIN houses ON houses.houseid=items.value1
WHERE items.owner!=houses.owner AND
items.class="Schlüssel" AND
items.owner IN (-1'.$in_acctid.')
ORDER BY houses.owner ASC';
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result) == 0) {
output("`^Schlüssel:`0 Kein Schlüsselbesitz!`0`n");
}
else {
$i = 1;
output("`^Schlüssel:`0`n");
while ($row = db_fetch_assoc($result)) {
if ( $id_alt != $row['houseowner'] ) {
$id_alt = $row['houseowner'];
$sql2 = 'SELECT items.value1, items.owner AS keyowner, houses.owner AS houseowner,
a1.name as hausholder, a2.name as keyholder
FROM items
LEFT JOIN houses ON houses.houseid=items.value1
LEFT JOIN accounts as a1 ON a1.acctid=houses.owner
LEFT JOIN accounts as a2 ON a2.acctid=items.owner
WHERE items.owner!=houses.owner AND
items.class="Schlüssel" AND
items.owner IN (-1'.$in_acctid.')
and houses.owner = '.$id_alt.'
ORDER BY houses.owner ASC';
$result2 = db_query($sql2) or die(db_error(LINK));
if (db_num_rows($result2) == 0) {
output("Hauseingentümer ".$row['hausholder']." `@ohne Schlüssel-Vergehen!`0`n");
}
else if (db_num_rows($result2) == 1) {
$row2 = db_fetch_assoc($result2);
output("Hausbesitzer Nr. ".$row2['value1']." ist ".$row2['hausholder'].",
Schüssel hat ".$row2['keyholder']." `@Ok.`0`n");
}
else {
while ($row2 = db_fetch_assoc($result2)) {
output("`$ Vergehen $i:`0 Hausbesitzer Nr. ".$row2['value1']." ist ".$row2['hausholder'].",
Schüssel hat ".$row2['keyholder']." `n");
$comarray[] = $row2;
$i++;
}
}
}
}
}

// -> Houses Bewohner commentary
$flag = 0;
$i = 1;
foreach ($comarray AS $com) {
if ( $flag == 0 ) {
output("`6Comment Summary:`0`n");
$flag++;
}

$section = "house-".$com['value1'];
$author = $com['keyowner'];
$hausnr = $com['value1'];

$sql = 'SELECT *, a1.name as actorname
FROM commentary LEFT JOIN accounts as a1 ON a1.acctid=commentary.author
WHERE author ='.$author.'
AND section ="'.$section.'"
ORDER BY commentid ASC';
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result) == 0) {
output("`6($i)`0 Keine Einträge`n");
}
else {
$dg = $ng = $de = $ne = 0;
while ($row = db_fetch_assoc($result)) {
$text = $row['comment'];
$wer = $row['actorname'];
$text2 = str_replace("/me ", " ", $row['comment']);
//output($row['actorname']."`0 ".$text2."`0`n" );

if ( !strpos( $text, "Edelsteine") ) {
if ( !strpos( $text, "nimmt") ) {
$tmp = str_replace("/me `@deponiert `^", "", $text);
$tmp = str_replace("`@ Gold.", "", $tmp);
$dg += $tmp;
}
else {
$tmp = str_replace("/me `\$nimmt `^", "", $text);
$tmp = str_replace("`$ Gold.", "", $tmp);
$ng += $tmp;
}
}
else {
if ( !strpos( $text, "nimmt") ) {
$tmp = str_replace("/me `@deponiert `#", "", $text);
$tmp = str_replace("`@ Edelsteine.", "", $tmp);
$de += $tmp;
}
else {
$tmp = str_replace("/me `\$nimmt `#", "", $text);
$tmp = str_replace("`$ Edelsteine.", "", $tmp);
$ne += $tmp;
}
}
}
output("`0`6($i) Haus $hausnr:`0 $wer `$ deponiert $dg Gold und $de Gems,
nimmt $ng Gold und $ne Gems.`0`n" );
}
$i++;
}
unset($comarray);

output("`n`n");
}
addnav("Zurück zur Grotte","superuser.php");
addnav("Zurück zur Stadt","village.php");
addnav("Analyse");
addnav("Faillogs & Mails","logs.php");
addnav("MultiAccs und Vergehen","loganalysis1.php?op=multi");
addnav("Zugriffe per Usereditor","loganalysis1.php?op=userz");
addnav("Hausverkäufe","loganalysis1.php?op=haus");
addnav("Aktualisieren","loganalysis1.php?op=multi");
}[/php]

Autor:  Auric [ Sa 15 Jul, 2006 14:37 ]
Betreff des Beitrags: 

1. Neues Feld in die accounts-Tabell "Paare" oder so
2. In allen Querys, bei denen der Multiaccount-Sucher Userdaten liest anhand des "Paare" Feldes ausschließen.
3. Script schreiben, mit dem man solche Paare in die DB eintragen kann...

Autor:  Eliwood [ Sa 15 Jul, 2006 15:17 ]
Betreff des Beitrags: 

Auric hat geschrieben:
1. Neues Feld in die accounts-Tabell "Paare" oder sokann...


Wobei "Paare" die Accountid des RL-Partners/Partnerin beinhalten müsste...

Autor:  azraeldemon [ Sa 15 Jul, 2006 20:52 ]
Betreff des Beitrags: 

also so in der art wie das marriedto column feld ?

habe nun eine rlpartner in der account tabelle mit drin!
und im usereditor kann ich auch manuelle die id des partners eingeben!

und wie komme ich weiter? sorry bin was db abfragen angeht noch nicht so bewandert!

das ist der code wo die paare in der DB in der tabelle rlpaare eingetragen werden!

$sql1 = "SELECT acctid,name FROM accounts WHERE name='".addslashes(rawurldecode(stripslashes($_POST['ziel1'])))."' AND locked=0";
$result1 = db_query($sql1);
$row1 = db_fetch_assoc($result1);
$sql2 = "SELECT acctid,name FROM accounts WHERE name='".addslashes(rawurldecode(stripslashes($_POST['ziel2'])))."' AND locked=0";
$result2 = db_query($sql2);
$row2 = db_fetch_assoc($result2);

$sql = "INSERT INTO rlpaare (name1,acctid1,name2,acctid2,bestaetigt,vonwem,anmerkung) VALUES ('".$row1[name]."','".$row1[acctid]."','".$row2[name]."','".$row2[acctid]."','".$_POST[best]."','".$session[user][name]."','".$_POST[anmerkung]."')";
db_query($sql);

Autor:  azraeldemon [ Sa 15 Jul, 2006 23:55 ]
Betreff des Beitrags: 

$sql = "INSERT INTO accounts (rlpartner) ('".$row1[acctid]."','".$row2[acctid]."')";

das würde ich jetzt versuchen da einzubaun ob es klappt weiss ich aber nicht!

Autor:  Montekar [ Mo 17 Jul, 2006 16:09 ]
Betreff des Beitrags: 

azraeldemon hat geschrieben:
$sql = "INSERT INTO accounts (rlpartner) ('".$row1[acctid]."','".$row2[acctid]."')";

das würde ich jetzt versuchen da einzubaun ob es klappt weiss ich aber nicht!


Also so klappt es eher nicht. Dann würdest du einen (fast) 'leeren Account' erstellen (ach ne, das würd warscheinlich auch nicht klappen, weil du es wenn dann immer so machen musst:
$this->bbcode_second_pass_code('', 'INSERT INTO `accounts` (1.Wert,2.Wert) VALUES (1.Value,2.value)')
)

So musst du es machen (dafür brauchst du das Feld Partner)

$this->bbcode_second_pass_code('', 'UPDATE `accounts` SET `partner` =' '.$row['acctid'].' ' WHERE `acctid` =
' '.$row2['acctid'].' '')

Und dann eben nochmal für den (bzw. die :D zweite)

$this->bbcode_second_pass_code('', 'UPDATE `accounts` SET `partner` =' '.$row2['acctid'].' ' WHERE `acctid` =
' '.$row['acctid'].' '')

Autor:  Kevz [ Mo 17 Jul, 2006 16:23 ]
Betreff des Beitrags: 

Erstelle doch einen weiteren Wert in einer neuen Tabelle. Dort erstellst dann noch halt weitere dinge was die Analyse angeht etc. und fertig ist.

Autor:  azraeldemon [ So 30 Jul, 2006 21:20 ]
Betreff des Beitrags: 

muss ich mal ausprobieren!

Autor:  azraeldemon [ Di 01 Aug, 2006 15:21 ]
Betreff des Beitrags: 

macht er leider nicht! wirft keinen fehler aus also der code scheint richtig zu sein aber das partner feld in der accounts bleibt bei 0

Autor:  Sano [ Di 01 Aug, 2006 16:21 ]
Betreff des Beitrags: 

mach es dir leicht und verbiete multis... dann is sowas doch von vornerein ausgeschlossen... ich kenne server bei denen multis verboten sind... dann solln se sich meinetwegen den acc teilen..

Autor:  Kevz [ Di 01 Aug, 2006 16:27 ]
Betreff des Beitrags: 

Verboten ist gut, ob sie es durchsetzen können ist eine andere frage*sfg*, Ich habs direkt bei der Erstellung eines Charakters gemacht und da bin ich mehr als zuversichtlich, das es garantiert keine Multis gibt ;)

Autor:  azraeldemon [ Di 01 Aug, 2006 21:07 ]
Betreff des Beitrags: 

es ist verboten mehr als einen account zu haben!

pro account nur eine email diese email darf es nur einmal geben

des weiteren wird die IP erfasst!

um aber paaren die nur einen rechner haben es zu ermöglichen unterschiedliche chars zu spielen haben wir das RLpaare system drin!

denn kann ja nicht jeder nen rechner haben , sie müssen uns nur den beweiss liefern das es sich wirklich um 2 personen handelt!

so und um die zu entdecken die meinen sich einfach mehr als einen account zu machen und sich nicht zu melden dafür ist die loganalyse aber dort werden auch die rlpaare angezeigt , des wollt ich das die dort ausgespart werden wenn sie eingetragen sind!

Autor:  dunkler Lord Artus [ Mi 27 Dez, 2006 18:11 ]
Betreff des Beitrags: 

kann mir bitte einer verraten in welchem tread die loganalysis1.php zu finden ist ich finde sie einfach nicht aber will sie doch ein bauen ^^ danke schon mal im vorraus

Edit: hat sich erledigt hab was gefunden was dem entspricht ^^

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/