Durckversion Private Nachrichten

Begonnen von wolli, 06 Juli 2003, 01:56:13

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

wolli

ich habe mir eine druckversion für die privaten nachrichten gebastelt... soweit so gut .... nu nun fällt mir aber auf, dass ich durch eingabe der msg_id in der adresszeile auch nachrichten ausdrucken (und somit auch lesen) könnte, die nicht für mich sind.... gibts eine möglichkeit, dieses zu verhindern ??? ich habe an eine art verschlüsselung gedacht, vieleicht so...

die id ist z.B. 123 und in der adresszeile steht dann .....&print&id=14578937768364768663.... oder so ähnlich...  

wer könnte mir da helfen ????

der hintergrund ist, dass einige mitglieder private adressen, tel nr usw. austauschen, ich aber gerne hin und wieder die Datenbank erleichtern möchte.... drum sollen sich die Mitglieder Ihre eigenen PM ausdrucken (können)....(als printversion)


gruß wolli

 webmastr@bluter-info.de

Micro

Auf Grund der gesetzten Cookies, die im System verglichen werden, mit der Berechtigung diese Message zu lesen, kann es nicht passieren, das andere die Mitteileungen anderer lesen können.

tequila

*schmunzel* ... schon richtig Micro, aber wer weis, was er da für eine Druck-Version gebastelt hat und ob die geanu so "clever" ist wie das PM-Modul ;)

Bau doch einfach in Deine Druck-Versioon die Abfrage nach der "to_userid" mit ein. Denn die muss ja mit dem User überein stimmen, der drucken möchte, wurde ja zu ihm geschickt (also "to" seiner "userid").

Die User-ID bekommst Du über die getuserinfo-Funktion (glaube ich, bin mir gerade aber nicht 100% sicher).
Und dann checkst Du eben beim aufrufen der PMs, ob die beiden IDs überein stimmten, wenn ja, dann läßt Du sie anzeigen, wenn nicht, dann gibt es einen netten Text "vertippt" oder so :)

wolli

ich habe die Print version der news umgebaut....

if (!eregi("modules.php", $PHP_SELF)) {
   die ("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
get_lang($module_name);


function PrintPage($msg_id) {
    global $site_logo, $nukeurl, $sitename, $datetime, $prefix,$Default_Theme, $dbi;
   

$result = sql_query(" SELECT msg_id, subject, from_userid, msg_time , msg_text from ".$prefix."_priv_msgs  where msg_id=$msg_id", $dbi);
    list($msg_id, $subject, $from_userid, $msg_time , $msg_text) = sql_fetch_row($result, $dbi);
    $result2 = sql_query("select uname  from ".$prefix."_users where uid=$from_userid", $dbi);
    list($uname) = sql_fetch_row($result2, $dbi);
   formatTimestamp($time);
   


    echo "
    <html>
    <head><title>$sitename - $title</title>
<LINK REL=\"StyleSheet\" HREF=\"themes/$Default_Theme/style/style.css\" TYPE=\"text/css\">\n</head>
    <body bgcolor=\"#ffffff\" text=\"#000000\">
    <table border=\"0\" align=\"center\"><tr><td>

    <table border=\"0\" width=\"640\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#000000\"><tr><td>
    <table border=\"0\" width=\"640\" cellpadding=\"20\" cellspacing=\"1\" bgcolor=\"#ffffff\"><tr><td>
    <center>
   <br><br>
    <font class=\"content\">
    <b>"._PMSPRIVATEMESSAGE."</b></font><br>
    <font class=tiny><BR>$uname "._PMSWROTE." am $msg_time<br><b></font><br><br>
    </center>
    <font class=\"content\">
    $subject<br><br>
    $msg_text<br><br>
    $notes<br><br>
    </font>
    </td></tr></table></td></tr></table>
    <br><br><center>
    <font class=\"content\">
    "._COMESFROM." $sitename<br>
    <a href=\"$nukeurl\">$nukeurl</a><br><br>
    "._THEURL."<br>
    <a href=\"$nukeurl/modules.php?name=News&file=article&sid=$sid\">$nukeurl/modules.php?name=News&file=article&sid=$sid</a>
    </font>
    </td></tr></table>
    </body>
    </html>
    ";
}

PrintPage($msg_id);



nun setht dann aber im Browesrfenser


http://www.bluter-info.de/modules.php?name=Private_Messages&file=print&msg_id=1760000


wenn ich nun als angemeldeter user die 1760000 auf z.b. 1760002 ändere wird mir die nachrcht 1760002 angezeigt, obwohl ich nicht der empfänger der nachricht 1760002 bin.... dies möchte ich verhindern....


leider schaff ich es nicht, noch ne abfrage einzubauen, die vor der ausgabe  prüft, ob die nachricht (to_userid) mit dem user (uid) übereinstimmt, sodass mann auch nur seine eigenen pm´s drucken kann....


könnte mir vielleicht jemand eine solche abfrage einbauen ???


hoffend und dankend

wolli,    webmaster@bluter-info.de

tequila

Trallala ... da:

globals $user;

$cookie = cookiedecode($user); // ist der User, der Drucken will
$uid = $cookie[0];

Jetzt hast Du mal die User-ID des "Druckers", und der darf dann eben nur PMs holen, die ihm gehören (kann ja auch sein, das ich in Deiner Abfrage es übersehen habe, wo da eine User-ID in´s Spiel kommt ?!? Du ließt ja die User-ID des PM-Eigentümers aus ... und danach holst Du den User, das kann nciht gehen)

Und dann sieht die Query eben so aus:

$result = sql_query(" SELECT msg_id, subject, from_userid, msg_time , msg_text from ".$prefix."_priv_msgs where msg_id=$msg_id AND to_userid='$uid'", $dbi);

Bin mir gerade zwar nicht 100% sicher (aber doch ziemlich), das die "to_userid" für Dich interessanter ist als die "from_userid", denn was interessiert es denn den "Druckenden", wem er welche Nachricht geschickt hat? Er will doch die Drucken, die er zu seiner User-ID bekommen hat (also to_userid = der Drucker).

Völlig ungetestet dahin getippert der Kram, probieren mußt Du alleine :)


[Editiert am 8/7/2003 von SiteAdmin Tequila]

wolli

Supppiiii  Tequila

dafür dass du das nur so hingetippert hast, läuft es auf anhieb, wie ich mir das gedacht habe, und wie es laufen soll....

ich danke dir recht herzlich

tequila

Na freut mich doch.

Und falls Du willst, das der User sowohl all seine empfangenen Nachrichten WIE AUCH die gesendeten Nachrichten ausdrucken können soll, dann eben erweitern auf:

$result = sql_query(" SELECT msg_id, subject, from_userid, msg_time , msg_text from ".$prefix."_priv_msgs where msg_id=$msg_id AND (to_userid='$uid' OR from_userid='$uid')", $dbi);

wolli

nochmals recht herzlichen dank.... ihr seid hier nicht zu schlagen, wenns um support geht... danke...

danke auch für den tipp, dass man seine geschriebenen drucken kann... aber ich möchte eher, dass meine mitglieder die db sauber (klein) halten und dann ihre pm´s nach dem ausdruck löschen....


mal sehen ob´s hilft....

auf jeden fall noch mal recht herzlichen dank

gruß wolli

webmaster@bluter-info.de


tequila

*oberfrechgrins* .... hi, hi, hi, da kommt einem doch gleich wieder eine fiese Idee:

Bau doch auf Deine Seite einfach einen Druck-Button ein, der die Druck-Funktion vom Browser aktiviert (frag mich jetzt nciht wie, google ein bischen und such Dir die Infos bzw. warte bis jemand vorbei kommt, der weis wie, ich gerade nicht, zugegeben).

Und wenn der Browser dann gedruckt hat löscht Dein Print-Script einfach die gerade gedruckte PM vom User ... weil ist ja gedruckt *prust*

Ganz schön blöde gucken werden die, aber Deine Datenbank bleibt sauber ... nur so eine (zugegeben freche) Idee ;)

Future