Thread Author: jan
Thread ID: 2092
Thread Info
Es gibt 21 Beiträge zu diesem Thema, und es wurde 3574 mal angesehen.  Es gibt auch Dateianhänge.
Wer ist hier? 1 Gäste

 Thema drucken
shoutbox nur für freunde
jan
Hallo alle,
ich sitze nun schon sehr lange dadran die shoutbox umzubauen!
und zwar möchte ich eigendlich nur das nur die freunde das lesen können was in der shoutbox steht

also
xy1 ist freund von xy2
xy 3 ist freund von xy 2

wenn xy1 was schreibt kann es nur xy2 lesen
wenn xy2 was schreibt können xy1 und xy3 das lesen.

kann mir jemand sagen was ich falsch mache?

LG Jan

hier mein bisherriger code
das unterstrichene habe ich geändert !

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: shoutbox_panel.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

$link = FUSION_SELF.(FUSION_QUERY ? "?".FUSION_QUERY : "");
$link = preg_replace("^(&amp;|\?)s_action=(edit|delete)&amp;shout_id=\d*^", "", $link);
$sep = stristr($link, "?") ? "&amp;" : "?";

if (iMEMBER && (isset($_GET['s_action']) && $_GET['s_action'] == "delete") && (isset($_GET['shout_id']) && isnum($_GET['shout_id']))) {
   if ((iADMIN && checkrights("S")) || (iMEMBER && dbcount("(shout_id)", DB_SHOUTBOX, "shout_id='".$_GET['shout_id']."' AND shout_name='".$userdata['user_id']."'"))) {
      $result = dbquery("DELETE FROM ".DB_SHOUTBOX." WHERE shout_id='".$_GET['shout_id']."'".(iADMIN ? "" : " AND shout_name='".$userdata['user_id']."'"));
   }
   redirect($link);
}

function sbwrap($text) {
   
   $i = 0; $tags = 0; $chars = 0; $res = "";
   
   $str_len = strlen($text);
   
   for ($i = 0; $i < $str_len; $i++) {
      $chr = substr($text, $i, 1);
      if ($chr == "<") {
         if (substr($text, ($i + 1), 6) == "a href" || substr($text, ($i + 1), 3) == "img") {
            $chr = " ".$chr;
            $chars = 0;
         }
         $tags++;
      } elseif ($chr == "&") {
         if (substr($text, ($i + 1), 5) == "quot;") {
            $chars = $chars - 5;
         } elseif (substr($text, ($i + 1), 4) == "amp;" || substr($text, ($i + 1), 4) == "#39;" || substr($text, ($i + 1), 4) == "#92;") {
            $chars = $chars - 4;
         } elseif (substr($text, ($i + 1), 3) == "lt;" || substr($text, ($i + 1), 3) == "gt;") {
            $chars = $chars - 3;
         }
      } elseif ($chr == ">") {
         $tags--;
      } elseif ($chr == " ") {
         $chars = 0;
      } elseif (!$tags) {
         $chars++;
      }
      
      if (!$tags && $chars == 18) {
         $chr .= "<br />";
         $chars = 0;
      }
      $res .= $chr;
   }
   
   return $res;
}

openside($locale['global_150']);
if (iMEMBER || $settings['guestposts'] == "1") {
   include_once INCLUDES."bbcode_include.php";
   if (isset($_POST['post_shout'])) {
      $flood = false;
      if (iMEMBER) {
         $shout_name = $userdata['user_id'];
      } elseif ($settings['guestposts'] == "1") {
         $shout_name = trim(stripinput($_POST['shout_name']));
         $shout_name = preg_replace("(^[0-9]*)", "", $shout_name);
         if (isnum($shout_name)) { $shout_name = ""; }
         include_once INCLUDES."securimage/securimage.php";
         $securimage = new Securimage();
         if (!isset($_POST['sb_captcha_code']) || $securimage->check($_POST['sb_captcha_code']) == false) { redirect($link); }
      }
      $shout_message = str_replace("\n", " ", $_POST['shout_message']);
      $shout_message = preg_replace("/^(.{255}).*$/", "$1", $shout_message);
      $shout_message = trim(stripinput(censorwords($shout_message)));
      if (iMEMBER && (isset($_GET['s_action']) && $_GET['s_action'] == "edit") && (isset($_GET['shout_id']) && isnum($_GET['shout_id']))) {
         $comment_updated = false;
         if ((iADMIN && checkrights("S")) || (iMEMBER && dbcount("(shout_id)", DB_SHOUTBOX, "shout_id='".$_GET['shout_id']."' AND shout_name='".$userdata['user_id']."'"))) {
            if ($shout_message) {
               $result = dbquery("UPDATE ".DB_SHOUTBOX." SET shout_message='$shout_message' WHERE shout_id='".$_GET['shout_id']."'".(iADMIN ? "" : " AND shout_name='".$userdata['user_id']."'"));
            }
         }
         redirect($link);
      } elseif ($shout_name && $shout_message) {
         require_once INCLUDES."flood_include.php";
         if (!flood_control("shout_datestamp", DB_SHOUTBOX, "shout_ip='".USER_IP."'")) {
            $result = dbquery("INSERT INTO ".DB_SHOUTBOX." (shout_name, shout_message, shout_datestamp, shout_ip) VALUES ('$shout_name', '$shout_message', '".time()."', '".USER_IP."')");
         }
      }
      redirect($link);
   }
   if (iMEMBER && (isset($_GET['s_action']) && $_GET['s_action'] == "edit") && (isset($_GET['shout_id']) && isnum($_GET['shout_id']))) {
      $esresult = dbquery(
         "SELECT ts.*, tu.user_id, tu.user_name FROM ".DB_SHOUTBOX." ts
         LEFT JOIN ".DB_USERS." tu ON ts.shout_name=tu.user_id
         WHERE ts.shout_id='".$_GET['shout_id']."'"
      );
      if (dbrows($esresult)) {
         $esdata = dbarray($esresult);
         if ((iADMIN && checkrights("S")) || (iMEMBER && $esdata['shout_name'] == $userdata['user_id'] && isset($esdata['user_name']))) {
            if ((isset($_GET['s_action']) && $_GET['s_action'] == "edit") && (isset($_GET['shout_id']) && isnum($_GET['shout_id']))) {
               $edit_url = $sep."s_action=edit&amp;shout_id=".$esdata['shout_id'];
            } else {
               $edit_url = "";
            }
            $shout_link = $link.$edit_url;
            $shout_message = $esdata['shout_message'];
         }
      } else {
         $shout_link = $link;
         $shout_message = "";
      }
   } else {
      $shout_link = $link;
      $shout_message = "";
   }
   
   echo "<a id='edit_shout' name='edit_shout'></a>\n";
   echo "<form name='shout_form' method='post' action='".$shout_link."'>\n";
   if (iGUEST) {
      echo $locale['global_151']."<br />\n";
      echo "<input type='text' name='shout_name' value='' class='textbox' maxlength='30' style='width:140px' /><br />\n";
      echo $locale['global_152']."<br />\n";
   }
   echo "<textarea name='shout_message' rows='4' cols='20' class='textbox' style='width:140px'>".$shout_message."</textarea><br />\n";
   echo display_bbcodes("150px;", "shout_message", "shout_form", "smiley|b|u|url|color")."\n";
   if (iGUEST) {
      echo $locale['global_158']."<br />\n";
      echo "<img id='sb_captcha' src='".INCLUDES."securimage/securimage_show.php' alt='' /><br />\n";
    echo "<a href='".INCLUDES."securimage/securimage_play.php'><img src='".INCLUDES."securimage/images/audio_icon.gif' alt='' class='tbl-border' style='margin-bottom:1px' /></a>\n";
    echo "<a href='#' onclick=\"document.getElementById('sb_captcha').src = '".INCLUDES."securimage/securimage_show.php?sid=' + Math.random(); return false\"><img src='".INCLUDES."securimage/images/refresh.gif' alt='' class='tbl-border' /></a><br />\n";
      echo $locale['global_159']."<br />\n<input type='text' name='sb_captcha_code' class='textbox' style='width:100px' /><br />\n";
   }
   echo "<br /><input type='submit' name='post_shout' value='".$locale['global_153']."' class='button' />\n";
   echo "</form>\n<br />\n";
} else {
   echo "<div style='text-align:center'>".$locale['global_154']."</div><br />\n";
}
$numrows = dbcount("(shout_id)", DB_SHOUTBOX);
$result = dbquery(
   "SELECT ts.*, tu.user_id, tu.user_name FROM ".DB_SHOUTBOX." ts
   LEFT JOIN ".DB_USERS." tu ON ts.shout_name=tu.user_id
   ORDER BY ts.shout_datestamp DESC LIMIT 0,".$settings['numofshouts']
);
if (dbrows($result)) {
   $i = 0;
   while ($data = dbarray($result)) {
   
      echo "<div class='shoutboxname'>";
$result = dbquery("SELECT * FROM ".DB_MYBUDDY_ACCOUNT." WHERE acc_user1='".$userdata['user_id']."' OR acc_user2='".$userdata['user_id']."' AND acc_status='2' ");

      if (dbrows($result)) {
         while($acc1 = dbarray($result)) {

if ( ($data['user_id']== $acc1['acc_user1'] OR $data['user_id']== $acc1['acc_user2'])) {

      if ($data['user_name']) {
         echo "<a href='".BASEDIR."profile.php?lookup=".$data['shout_name']."' class='side'>".$data['user_name']."</a>\n";
      } else {
         echo $data['shout_name']."\n";
      }
      echo "</div>\n";
      echo "<div class='shoutboxdate'>".showdate("shortdate", $data['shout_datestamp'])."</div>";
      echo "<div class='shoutbox'>".sbwrap(parseubb(parsesmileys($data['shout_message']), "b|i|u|url|color"))."</div>\n";
      if ((iADMIN && checkrights("S")) || (iMEMBER && $data['shout_name'] == $userdata['user_id'] && isset($data['user_name']))) {
         echo "[<a href='".$link.$sep."s_action=edit&amp;shout_id=".$data['shout_id']."#edit_shout"."' class='side'>".$locale['global_076']."</a>]\n";
         echo "[<a href='".$link.$sep."s_action=delete&amp;shout_id=".$data['shout_id']."' class='side'>".$locale['global_157']."</a>]<br />\n";
      }}}}

      $i++;
      if ($i != $numrows) { echo "<br />\n"; }
   }
   if ($numrows > $settings['numofshouts']) {
      echo "<div style='text-align:center'>\n<a href='".INFUSIONS."shoutbox_panel/shoutbox_archive.php' class='side'>".$locale['global_155']."</a>\n</div>\n";
   }
} else {
   echo "<div>".$locale['global_156']."</div>\n";
}
closeside();
?>


www.agitelo.de/sig.png
 
SC-Ad-Bot
 
ritmi
sehr interesantDickeslachen nice job
Bearbeitet von ritmi am 04.12.2009 um 14:53
 
jan
nur das es noch nicht funktioniert :S
www.agitelo.de/sig.png
 
jan
$acc1 ist eine ganz normale variable und soweit ich weiß muss da nur ein =
eine fehler meldung kommt auch nicht nur das problem ist das anstatt die freundes shouts da steht steht da garnichts :S

das das problem!

LG Jan
www.agitelo.de/sig.png
 
Hasi98
na ich weiß schon, dass des eine normale variable is aber was soll die bewirken?

Code 

$result = dbquery("SELECT * FROM ".DB_MYBUDDY_ACCOUNT." WHERE acc_user1='".$userdata['user_id']."' OR acc_user2='".$userdata['user_id']."' AND acc_status='2' ");

      if (dbrows($result)) {
         while($acc1 = dbarray($result)) {

if ( ($data['user_id']== $acc1['acc_user1'] OR $data['user_id']== $acc1['acc_user2'])) {

      if ($data['user_name']) {
         echo "<a href='".BASEDIR."profile.php?lookup=".$data['shout_name']."' class='side'>".$data['user_name']."</a>\n";
      } else {
         echo $data['shout_name']."\n";
      }
      echo "</div>\n";
      echo "<div class='shoutboxdate'>".showdate("shortdate", $data['shout_datestamp'])."</div>";
      echo "<div class='shoutbox'>".sbwrap(parseubb(parsesmileys($data['shout_message']), "b|i|u|url|color"))."</div>\n";
      if ((iADMIN && checkrights("S")) || (iMEMBER && $data['shout_name'] == $userdata['user_id'] && isset($data['user_name']))) {
         echo "[<a href='".$link.$sep."s_action=edit&amp;shout_id=".$data['shout_id']."#edit_shout"."' class='side'>".$locale['global_076']."</a>]\n";
         echo "[<a href='".$link.$sep."s_action=delete&amp;shout_id=".$data['shout_id']."' class='side'>".$locale['global_157']."</a>]<br />\n";
      }}}}



erklär den code mal schritt für schrit, pls.. also welche zeile was bewirken soll.
Mfg
Hasi
--------------------------------------------------

Swiftgaming - LianTu2 (MMORP Game Metin2 P-Server) Forum
 
jan

Code 

$result = dbquery("SELECT * FROM ".DB_MYBUDDY_ACCOUNT." WHERE acc_user1='".$userdata['user_id']."' OR acc_user2='".$userdata['user_id']."' AND acc_status='2' ");



einfach das auslesen der datenbank!

Code 

      if (dbrows($result)) {
         while($acc1 = dbarray($result)) {



umwandeln so das $acc1 die variable für das ausgelesene ist!

Code 

if ( ($data['user_id']== $acc1['acc_user1'] OR $data['user_id']== $acc1['acc_user2'])) {



die if abfrage die filtern soll was ich sehen kann!

Code 

    if ($data['user_name']) {
         echo "<a href='".BASEDIR."profile.php?lookup=".$data['shout_name']."' class='side'>".$data['user_name']."</a>\n";
      } else {
         echo $data['shout_name']."\n";
      }
      echo "</div>\n";
      echo "<div class='shoutboxdate'>".showdate("shortdate", $data['shout_datestamp'])."</div>";
      echo "<div class='shoutbox'>".sbwrap(parseubb(parsesmileys($data['shout_message']), "b|i|u|url|color"))."</div>\n";
      if ((iADMIN && checkrights("S")) || (iMEMBER && $data['shout_name'] == $userdata['user_id'] && isset($data['user_name']))) {
         echo "[<a href='".$link.$sep."s_action=edit&amp;shout_id=".$data['shout_id']."#edit_shout"."' class='side'>".$locale['global_076']."</a>]\n";
         echo "[<a href='".$link.$sep."s_action=delete&amp;shout_id=".$data['shout_id']."' class='side'>".$locale['global_157']."</a>]<br />\n";
      }



der normale shoutbox output !


Code 

}}}



alles geöfnete wieder schliessen!

www.agitelo.de/sig.png
 
Hasi98

Code 

if ( ($data['user_id']== $acc1['acc_user1'] OR $data['user_id']== $acc1['acc_user2'])) {


Da so glaub ich net aber der fehler liegt wo anders.
da wird ja in acc_user1 das gleiche wie in acc_user2 eingelesen:

Code 

$result = dbquery("SELECT * FROM ".DB_MYBUDDY_ACCOUNT." WHERE acc_user1='".$userdata['user_id']."' OR acc_user2='".$userdata['user_id']."' AND acc_status='2' ");


und ich kenn mih net so gut aus mit mySQL aber da is glaub ich auch noch ein fehler drin aba frag mich net wieso :P
Bearbeitet von Hasi98 am 04.12.2009 um 15:49
Mfg
Hasi
--------------------------------------------------

Swiftgaming - LianTu2 (MMORP Game Metin2 P-Server) Forum
 
jan
ok trosdem danke Dickeslachen hihi

ich habe warscheinlich schon 50 verschiedene möglichkeiten versucht aber immer kamm nichts dabei raus :S

naja weiß jemand anderes sonst einen rat ?

LG Jan
www.agitelo.de/sig.png
 
ritmi
Wurde gerne helfen aba soweit bin ich noch net mit meinen kendnissen Sad
 
christlive
Was für ein freunschaftssystem benutzt du?


MFG CHRISTLIVE
 
Hasi98
er benutzt mybuddysystem:

Code 


$result = dbquery("SELECT * FROM ".DB_MYBUDDY_ACCOUNT." WHERE acc_user1='".$userdata['user_id']."' OR acc_user2='".$userdata['user_id']."' AND acc_status='2' ");


Bearbeitet von Hasi98 am 05.12.2009 um 13:23
Mfg
Hasi
--------------------------------------------------

Swiftgaming - LianTu2 (MMORP Game Metin2 P-Server) Forum
 
jan
ja genau das mybuddysystem.

fals ich es selber hin bekomme sage ich euch bescheid Dickeslachen dann gebe ich es auch als download an !

Lg Jan
www.agitelo.de/sig.png
 
christlive
frag mal Gr@n@dE vieleicht hat der ja eine idee
 
Hasi98
Wenn einer eine Idee hätte von den Admins würde er es ja hier schreiben.
Sin ja schließlich Admins.
Und wie kommst du auf Gr@n@de ?
er könnte doch auch bespielsweiße MarcusG, emlinux oder Datalus fragen.
Mfg
Hasi
--------------------------------------------------

Swiftgaming - LianTu2 (MMORP Game Metin2 P-Server) Forum
 
jan
weil Gr@n@de der coder ist vom mybuddysystem denke ich mal!

naja ich werde mal sehen was ich mache Dickeslachen^^

LG jan
www.agitelo.de/sig.png
 
christlive
Also ich komme auf Gr@n@dE weil wenn das in der Mysol abfrage ist kann er dir das am besten sagen der hat ja das infusion geschrieben!
Bearbeitet von christlive am 05.12.2009 um 18:41
 
jan
ich habe es geschaft !
muss nur noch 2 kleine sicherheits lücken schließen hahaDickeslachen
danach werde ich denn code veröfentlichen (nur im forum) und das per edit funktion! in dieser nachricht!

LG Jan

EDIT: ich habe es mal hoch geladen !
es ist jetzt so das man nur die shouts sehen kann die freunde sind ! (mybuddysystem)

die shouts sind für 24 stunden in dem shoutbox panel zu sehen! nach 24 stunden gehen sie ins arive.
und können da nach gelesen werden!
viel spaß damit und vergnügen !^^

LG Jan
jan hat folgende Datei angehängt:

shoutbox-freunde.rar [8.55kB / 261 mal Heruntergeladen]


Downloaded by:

Bearbeitet von jan am 13.12.2009 um 17:22
www.agitelo.de/sig.png
 
christlive
Und wie siehts aus?
 
ritmi
is es schon fertigrazz
 
emblinux
1. reicht es nciht, wenn einer Fragt?
2. was hat Jan in seinem letzten Beitrag geschrieben? es ist noch kein Anhang da, also wird es noch nicht fertig sein.

Seit mal etwas geduldiger, denn Gut Ding will Weile haben.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 

Springe ins Forum:

 Ähnliche Themen 

TEST
Thema Forum Antworten Letzter Beitrag
shoutbox schriftfarbe Allgemeine Support Fragen 4 10.01.2020 um 07:11
Shoutbox problem Infusionen 1 22.06.2016 um 23:16
Shoutbox v2.2 PHP & MySql 4 12.05.2013 um 20:41
shoutbox und pd stats PHP & MySql 4 10.03.2013 um 19:18
MyBuddySystem mehr freunde Infusionen 4 05.02.2012 um 10:54
HarlekinPower