-
Addon Refschleife
Ich hatte zwar ein Addon zur Prüfung von Refschleifen, aber das zeigte nur eine Ebene an und nicht den Verlauf der Schleife. Nun hab ich aus der Refvergütung eine Refschleifenprüfung gebastelt. Also für drei Ebenen mit der Anzeige über welche User die Schleife geht..
Habe ich bei mir im System geprüft und lief. Gebe aber keine Garantie, dass es bei euch ebenfalls läuft.
In "/adminforce/content" Datei refschleifen.php erstellen mit folgendem Inhalt:
PHP-Code:
<?
head("Refschleifen");
$i=0;
$refliste = db_query ("SELECT `uid`,`werber` FROM ".$db_prefix."_werberdaten");
while ($refliste_1 = mysql_fetch_array($refliste)) {
// Ebene 1
$refebene_1 = db_query ("SELECT `uid`,`werber` FROM ".$db_prefix."_werberdaten WHERE werber='".$refliste_1['uid']."'");
while ($anzeigen_1 = mysql_fetch_array($refebene_1)) {
if ($anzeigen_1['uid'] == $refliste_1['werber']) {
echo "User ".$refliste_1['uid']." -> ".$anzeigen_1['uid']."<br>";
$i++;
}
// Ebene 2
$refebene_2 = db_query ("SELECT `uid`,`werber` FROM ".$db_prefix."_werberdaten WHERE werber='".$anzeigen_1['uid']."'");
while ($anzeigen_2 = mysql_fetch_array($refebene_2)) {
if ($anzeigen_2['uid'] == $refliste_1['uid']) {
echo "User ".$refliste_1['uid']." -> ".$anzeigen_2['werber']." -> ".$anzeigen_2['uid']."<br>";
$i++;
}
// Ebene 3
$refebene_3 = db_query ("SELECT `uid`,`werber` FROM ".$db_prefix."_werberdaten WHERE werber='".$anzeigen_2['uid']."'");
while ($anzeigen_3 = mysql_fetch_array($refebene_3)) {
if ($anzeigen_3['uid'] == $refliste_1['uid']) {
echo "User ".$refliste_1['uid']." -> ".$anzeigen_2['werber']." -> ".$anzeigen_3['werber']." -> ".$anzeigen_3['uid']."<br>";
$i++;
}
}
}
}
}
if ($i==0){
echo "So ein Glück, keine Refschleifen vorhanden.";
}
foot();
?>
Danach in der "/adminforce/lib/menue_links.php" oder "/adminforce/lib/menue_links.php" folgendes einfügen:
HTML-Code:
» <a href="?content=/refschleifen">Ref-Schleifen</a><br>
Ich denk das ist ganz gut für die, die bisher keine Refschleifenprüfung in ihren Addons haben oder denen nicht vertrauen. :P
-
danke..
super schnipzel..
funktioniert bei mir tadellos....
-
um erst gar keine Refschleifen entstehen zu lassen kann man vor dem ändern des Werbers folgende Funktion einsetzten.
die Funktion in die /lib/functions.lib.php einfügen
PHP-Code:
function refcheck($ref, $werber, $ebenen){
$ref=(int)$ref;
$werber=(int)$werber;
if($ebenen==0)return true;
if($ref==$werber)return false;
if($ref!=$werber){
$query=db_query("SELECT werber FROM vms_werberdaten WHERE uid='".$werber."' LIMIT 1");
if(mysql_num_rows($query)==1){
$w=mysql_fetch_assoc($query);
if($w['werber']!=$ref){
return refcheck($ref, $w['werber'], $ebenen-1);
}else{
return false;
}
}
return true;
}
}
in der /adminforce/usersystem/userbearbeiten.php die Zeile
PHP-Code:
if ($_POST['werber'] != $_POST['alt_werber'] && $_POST['werber'] != $_POST['uid']) db_query ('UPDATE '.$db_prefix.'_werberdaten SET werber = "'.$_POST['werber'].'", umsatz = 0, zuordnungszeit = 0, reset = 0, resetzeit = 0, gesamt = 0, refback = 0, aktivzeit = 0 WHERE uid = '.$_POST['uid']);
in
PHP-Code:
if ($_POST['werber'] != $_POST['alt_werber'] && $_POST['werber'] != $_POST['uid']){
if(refcheck($_POST['uid'], $_POST['werber'], 3)){
db_query ('UPDATE '.$db_prefix.'_werberdaten SET werber = "'.$_POST['werber'].'", umsatz = 0, zuordnungszeit = 0, reset = 0, resetzeit = 0, gesamt = 0, refback = 0, aktivzeit = 0 WHERE uid = '.$_POST['uid']);
}else{
head("Fehler");
echo "Werber konnte nicht eingetragen werden. Eine Refschleife würde entstehen.";
foot();
}
}
ändern
mfg
Aradiv