PM´s können u.U. von Dritten gelesen werden!!

Begonnen von MikePapa, 06 April 2003, 20:27:31

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

MikePapa

Ist eigentlich schon jemandem aufgefallen, daß die Funktion "User löschen" nicht ausgereift ist? Löscht man den zuletzt registrierten User, bleiben seine PM´s in der Datenbank (wie bei allen User-Löschungen), was erstmal nicht so tragisch ist. Registriert sich nun ein neuer User erhält dieser jedoch sämtliche PM´s seines "Vorgängers"!!!! Wie kann man dies am einfachsten und schnellsten verhindern, da dies in meinen Augen nicht gerade das größte Vertrauen für eine HP bringt.

Gruß

"MikePapa"


jubilee

Hallo !
Die Funktion ist eigentlich in der datei /modules/Your_Account/index.php
enthalten (ca. Zeile 104)
 
Zitatsql_query("DELETE FROM ".$prefix."_priv_msgs WHERE to_userid='$uid'", $dbi);
Ich check mal, on die auch funktioniert.
MfG
jubilee

jubilee

Hallo !
Kleines missverständnis vorhin....
Also, wenn sich der User selber löscht, dann geht es.
Müsstest nur einmal schauen welche Funktionen in YA-Modul drinne sind, und im Admin-User-Modul fehlen.
Bräuchte man eigentlich nur nachtragen.
MfG
jubilee

jubilee

So....
Das ist ganz schön verzwackelt, weil da nur der User-Name an die Funktion übermittelt wird. da muss man nch eine datenbankabfrage reinhauen, damit auch die UID zur Verfügung steht.
Ich probier mal ein wenig....
MfG
jubilee

jubilee

So, nun haben wirs.
Die Funktion hat sich schon etwas verändert.
Also :
in Datei /admin/modules/users.php ab ca. Zeile 232
alt :
 
Zitatcase "delUserConf":
    sql_query("delete from ".$user_prefix."_users where uid='$del_uid' or uname='$del_uid'", $dbi);
    Header("Location: admin.php?op=adminMain");
    break;
So, und jetzt das ganze NEU :
 
Zitatcase "delUserConf":
    global $prefix, $dbi;
    include("header.php");
    $result = sql_query("select uid, uname from ".$user_prefix."_users where uname='$del_uid'", $dbi);
    if(sql_num_rows($result, $dbi) > 0) {
        list($del_uid, $del_uname) = sql_fetch_row($result, $dbi);
    sql_query("delete from ".$prefix."_users where uid='$del_uid'", $dbi);
    sql_query("DELETE FROM ".$prefix."_userpoints WHERE uid='$del_uid'", $dbi);
    sql_query("DELETE FROM ".$prefix."_session WHERE username='$del_uname'", $dbi);
    sql_query("DELETE FROM ".$prefix."_userguest WHERE touser='$del_uname'", $dbi);
    sql_query("DELETE FROM ".$prefix."_priv_msgs WHERE to_userid='$del_uid'", $dbi);
    Header("Location: admin.php?op=adminMain");
    }
    else
    {
   OpenTable();
   echo "<center><b>"._USERNOEXIST."</b>"
       .""._GOBACK."</center>";
   CloseTable();
    }
    break;
Damit werden jetzt alleHinterlassenschaften des Users gelöscht.
Wieder meine bitte an die anderen Admins :
Bitte abschließend überprüfen und evt. mit in das SP 2 packen.
MfG
jubilee

[Editiert am 7/4/2003 von SiteAdmin jubilee]

Andi

@ jubilee

joo, kommt rein  ;)  
dachte, das wäre schon drin..... :cry  
schön´s Grüssle, Andi

jubilee

Hmmmm .....
Ich hab bis SP 1, Bugfix 17 alles eingespielt.
Da war es noch nicht drinne. (Evt bei einer längst vergangenen
CVS - Panne verschollen gegangen ???  ;)  )
MfG
jubilee

[Editiert am 7/4/2003 von SiteAdmin jubilee]

Andi

 :D  ne, glaube im Adminmodul wurde es einfach vergessen  :redhead:  
schön´s Grüssle, Andi

NeMeSiSX2LC

Boah zum glück sind bei mir die User so PM faul:)
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

MikePapa

Vielen Dank für die schnelle Lösung. Das Prob ist mir auch eher durch Zufall aufgefallen, als ich die Funktionen eines neuen Projekts testen wollte. Auf meiner aktuellen Seite hat sich bisher noch niemand zu diesem Problem geäußert... was auch gut so ist ;-)

Gruß

"MikePapa"

MikePapa

Hallo!

Ich habe die users.php wie oben beschrieben geändert. Nach dem Löschen eines Users erscheint nun allerdings folgende Meldung:

Warning: Cannot add header information - headers already sent by (output started at /home/sites/site11/web/header.php:52) in /home/sites/site11/web/admin/modules/users.php on line 243

User und PM´s sind aber zumindest gelöscht! ;-)

(BTW: Sollten nicht auch die Daten in der LastSeen-Tabelle gelöscht werden?)

Gruß

"MikePapa"

[Editiert am 7/4/2003 von MikePapa]

Andi

Hi MikePapa,
habe es gerade folgendermassen in VKP-Mxxx II reingepackt:


case "delUserConf":
$result = sql_query("select uid, uname from ".$user_prefix."_users where uname='$del_uid'", $dbi);
list($del_uid, $del_uname) = sql_fetch_row($result, $dbi);
if (!empty($del_uid)) {
sql_query("DELETE FROM ".$user_prefix."_users WHERE uid='$del_uid'", $dbi);
sql_query("DELETE FROM ".$prefix."_userpoints WHERE uid='$del_uid'", $dbi);
sql_query("DELETE FROM ".$prefix."_session WHERE username='$del_uname'", $dbi);
sql_query("DELETE FROM ".$prefix."_userguest WHERE touser='$del_uname'", $dbi);
sql_query("DELETE FROM ".$prefix."_priv_msgs WHERE to_userid='$del_uid'", $dbi);
sql_query("DELETE FROM ".$prefix."_lastseen WHERE username='$del_uname'", $dbi);
Header("Location: admin.php?op=adminMain");
}
else {
include("header.php");
GraphicAdmin();
OpenTable();
echo "<center><font class=\"title\"><b>"._USERNOEXIST."</b></font><br><br><a href=\"admin.php?op=mod_users\">"._USERADMIN."</a></center>";
CloseTable();
include("footer.php");
}
break;
 

Es waren 3 kleine Fehlerchen drin.
-Die header.php wurde an falscher Stelle includet, das verursacht den header-send Fehler.
-Der Link _GOBACK funktioniert nicht richtig, weil man nur zur Bestätigungsseite zurückkommt.
-beim Löschen in der user-Tabelle muss $user_prefix verwendet werden.

Die Lastseen Daten werden jetzt auch gelöscht.
Normalerweise müsste man jetzt noch alle User-abhängigen Tabellen durchgehen und die Daten dort auf Anonymous stellen....
schön´s Grüssle, Andi

eMKay

Wenn ihr dann grade schon dabei seid, dann koennt ihr in die naechste YA version auch einbauen, dass beim benutzerloeschen dieser auch gleich aus der eBoard Datenbank geloescht wird. Habe naemlich bisher immernoch keinen tipp gefunden, wie man das userloeschen zwischen eBoard DB und nuke DB sznchronosieren kann. Ist ein bissel umstaendlich, wenn der admin immer die Userleichen aus dem Board entfernen muss, besonders wenn es mal mehr als 100 user sind...

Future

Weiss net genau ob dus mit gekriegt hast. Aber es gibt ein neues wesentlich besseres VKP ;) Dort ist auch ein neues Y_A Modul dabei ... ob dein anliegen da mit drinen ist weissi ch aber nicht

Liu-Kang

Ich habe leider immer noch das Problem.
Dadurch das ich noch das Your_Account Modul des alten VKP 5.5 benutze können sich User löschen und ich kann auch User löschen.
Nur wird bei der Löschung, egal welcher Art, nur der Name aus der Datenbank gelöscht. Die PMs, Userpunkte, Gästebucheinträge im GBook des Users, usw. bleiben erhalten.
Ich hab mal im Code nachgesehen. Aber dadurch das ich mich mit PHP und MySQL nicht so dolle auskenne lass ich lieber mal nachsehen ;).
Hier die Funktion:
function delete($uname) {
    global $adminmail, $user, $userinfo, $cookie, $prefix, $user_prefix, $dbi;
    cookiedecode($user);
    $check = $cookie[1];
    $result = sql_query("SELECT uid, uname, pass FROM $prefix"._users." WHERE uname='$check'", $dbi);
    list($uid, $uname, $pass) = sql_fetch_row($result, $dbi);
    include("header.php");
    Opentable();
    echo "<center><font class=\"option\">"._SUREDELETE."<br><a href=\"modules.php?name=Your_Account&op=delconfirm&uid=$uid&code=$pass\"><b>"._YES."</b></a> "._OR." <a href=\"modules.php?name=Your_Account\"><b>"._NO."</b></a></font></center>";
    CloseTable();
    include("footer.php");
}


function delconfirm($uid, $code) {
    global $senddeletemail, $adminmail, $prefix, $user_prefix, $dbi, $uid;
   setcookie("user");
    $result = sql_query("SELECT email, url, uname, pass FROM $prefix"._users." WHERE uid='$uid'", $dbi);
    list($email, $url, $uname, $pass) = sql_fetch_row($result, $dbi);
    if ($code == $pass) {
if ($senddeletemail == 1) {
$to = $adminmail;
$from = $email;
$subject = "$sitename - Member Deleted";
$message = "
$uname has been deleted from $sitename.\n
-----------------------------------------------------------\n
Do not reply to this message!!";
mail($to,$subject,$message, "From: $from\nX-Mailer: PHP/" . phpversion());
}
   sql_query("DELETE FROM $prefix"._users." WHERE uid='$uid'", $dbi);
   include("header.php");
   Opentable();
   echo "<center><font class=\"option\"><b>"._ACCTDELETED."</b></font></center>";
   CloseTable();
   include("footer.php");
    } else {
   include("header.php");
   OpenTable();
   echo "<center><font class=\"option\">Error!</font><br><br>";
   echo "<font class=\"option\">"._YOUBAD."</font></center>";
   CloseTable();
   include("footer.php");
    }
}

Nun meine Frage, wie kann man in dieses alte Modul diese Funktion einbauen das von dem User alles gelöscht wird?
Ich kann das Modul auch gerne an einen Profi verschicken wenn es nötig ist. Ich wäre nur froh wenn das funktionieren würde...
Viele Grüße