» Forum » Clanscript » Kritik und Verbesserungen » Doppelposts unterbinden
  Mitglieder   |   Gallery   |   FAQ's   |   Regeln

[ Anmelden zum schreiben ]

Doppelposts unterbinden
Anarchy 90210
Mitglied
0 Beitragspunkte
Posts: 519

User Pic

0 Mitglieder finden den Beitrag gut.

19.06.2008 - 20:06:05     Zitieren

Huhu =)

Ich suche nach einer möglichkeit Doppelposts der User mittels Code zu Unterbinden. Ich stelle es mir so vor, dass anstatt von "Dein Beitrag wurde erfolgreich erstellt" halt dasteht, "Du kannst nicht 2mal hintereinander einen Beitrag schreiben"


verwendete ilchClan Version: 1.1
Mairu
Coder
9 Beitragspunkte
Posts: 11969

User Pic

0 Mitglieder finden den Beitrag gut.

20.06.2008 - 09:12:39     Zitieren

contents/forum/new_post.php
Code: Zeilennummern entfernen
  1. if ( !loggedin() ) {
  2.     $name  = '<tr><td class="Cmite"0><b>'.$lang['name'].'</b></td>';
  3.     $name .= '<td class="Cnorm"><input type="text" value="'.unescape($xnn).'" maxlength="15" name="Gname"></td></tr>';
  4.   } elseif (!is_siteadmin() and db_result($qry = db_query("SELECT erstid, id FROM prefix_posts WHERE tid = '$tid' ORDER BY id DESC LIMIT 1"),0 , 0) == $_SESSION['authid']) {
  5.     $wdlinks = array('Zur&uuml;ck zum Thema' => 'index.php?forum-showposts-'.$tid,
  6.                      'Letzten Beitrag editieren' => 'index.php?forum-editpost-'.$tid.'-'.db_result($qry,0,1),
  7.                      'Foren&uuml;bersicht' => 'index.php?forum');
  8.     echo wd($wdlinks, 'Du hast bereits den letzten Post in diesem Thema gemacht und dies ist eine Doppelpostsperre ;).<br />
  9.     An dieser Steller der Tipp: du kannst deine Beitr&auml;ge auch editieren.', 15);
  10.     $design->footer(1);
  11.   }
Ab dem elseif ist neu, so um die Zeile 49.

Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
rubberduck2006
Mitglied
0 Beitragspunkte
Posts: 433

0 Mitglieder finden den Beitrag gut.

20.06.2008 - 12:52:34     Zitieren

brauche das auch aber geht irgendwie bei mir net hier mal meine datei wo ich es eingetragen habe:

Code: Zeilennummern entfernen
  1. <?php
  2. #   Copyright by: Manuel
  3. #   Support: www.ilch.de
  4.  
  5.  
  6. defined ('main') or die ( 'no direct access' );
  7.  
  8.  
  9. if ($aktTopicRow['stat'] == 0 OR $forum_rights['reply'] == FALSE ) {
  10.   if ( $aktTopicRow['stat'] == 0 AND $_SESSION['authright'] > '-7') {
  11.      if($forum_rights['mods'] == FALSE)
  12.       $forum_failure[] = $lang['topicclosed'];
  13.     } elseif ($aktTopicRow['stat'] != 0 AND $_SESSION['authright'] > '-7') {
  14.      if($forum_rights['mods'] == FALSE)
  15.       $forum_failure[] = $lang['nopermission'];
  16.     }
  17.     check_forum_failure($forum_failure);
  18. }
  19.  
  20. $title = $allgAr['title'].' :: Forum :: '.aktForumCats($aktForumRow['kat'],'title').' :: '.$aktForumRow['name'].' :: neuer Beitrag';
  21. $hmenu  = $extented_forum_menu.'<a class="smalfont" href="index.php?forum">Forum</a><b> &raquo; </b>'.aktForumCats($aktForumRow['kat']).'<b> &raquo; </b><a class="smalfont" href="index.php?forum-showtopics-'.$fid.'">'.$aktForumRow['name'].'</a><b> &raquo; </b>';
  22. $hmenu .= '<a class="smalfont" href="index.php?forum-showposts-'.$tid.'">'.$aktTopicRow['name'].'</a>'.$extented_forum_menu_sufix;
  23.  
  24.  
  25. $dppk_time = time();
  26. $time = time();
  27. if (!isset($_SESSION['klicktime'])) { $_SESSION['klicktime'] = 0; }
  28.  
  29. $topic = '';
  30. $txt   = '';
  31. $xnn   = '';
  32.  
  33. if (isset($_POST['txt'])) {
  34.   $txt = trim(escape($_POST['txt'], 'textarea'));
  35. }
  36. if (isset($_POST['Gname'])) {
  37.   $xnn = trim(escape_nickname($_POST['Gname']));
  38. }
  39.  
  40. if (($_SESSION['klicktime'] + 15) > $dppk_time OR empty($txt) OR !empty($_POST['priview']) OR (empty($_POST['Gname']) AND !loggedin()) OR !chk_antispam ('newpost')) {
  41.  
  42.   $design = new design ( $title , $hmenu, 1);
  43.   $design->header();
  44.  
  45.   $name = '';
  46.   if ( !loggedin() ) {
  47.     $name  = '<tr><td class="Cmite"0><b>'.$lang['name'].'</b></td>';
  48.     $name .= '<td class="Cnorm"><input type="text" value="'.unescape($xnn).'" maxlength="15" name="Gname"></td></tr>';
  49.   }if ( !loggedin() ) {
  50.     $name  = '<tr><td class="Cmite"0><b>'.$lang['name'].'</b></td>';
  51.     $name .= '<td class="Cnorm"><input type="text" value="'.unescape($xnn).'" maxlength="15" name="Gname"></td></tr>';
  52.   } elseif (!is_siteadmin() and db_result($qry = db_query("SELECT erstid, id FROM prefix_posts WHERE tid = '$tid' ORDER BY id DESC LIMIT 1"),0 , 0) == $_SESSION['authid']) {
  53.     $wdlinks = array('Zur&uuml;ck zum Thema' => 'index.php?forum-showposts-'.$tid,
  54.                      'Letzten Beitrag editieren' => 'index.php?forum-editpost-'.$tid.'-'.db_result($qry,0,1),
  55.                      'Foren&uuml;bersicht' => 'index.php?forum');
  56.     echo wd($wdlinks, 'Du hast bereits den letzten Post in diesem Thema gemacht und dies ist eine Doppelpostsperre ;).<br />
  57.    An dieser Steller der Tipp: du kannst deine Beitr&auml;ge auch editieren.', 15);
  58.     $design->footer(1);
  59.   }
  60.  
  61.  
  62.   $tpl = new tpl ('forum/newpost');
  63.  
  64.   $xtext = '';
  65.   if ( $menu->getA(3) == 'z' ) {
  66.     $row = db_fetch_object(db_query("SELECT txt,erst FROM prefix_posts WHERE id = ".$menu->getE(3)));
  67.       $xtext = '[quote='.escape_nickname($row->erst).']'."\n".$row->txt."\n[/quote]";
  68.   }
  69.  
  70.   if ( $menu->getA(3) == 'f' ) {
  71.     $r = db_fetch_assoc(db_query("SELECT id,text,title FROM prefix_faqs WHERE id = ".$menu->getE(3)));
  72.       $xtext = 'FAQ Artikel: [url=index.php?faqs-s'.$r['id'].'#FAQ'.$r['id'].']'.$r['title'].'[/url]'."\n".unescape($r['text']);
  73.   }
  74.  
  75.   if (isset($_POST['priview'])) {
  76.     $tpl->set_out('txt', bbcode(unescape($txt)), 0);
  77.   }
  78.   if (empty($txt)) {
  79.     $txt = $xtext;
  80.   }
  81.  
  82.   $tpl = new tpl ('forum/newpost');
  83.  
  84.   $ar = array (
  85.     'txt'    => escape_for_fields(unescape($txt)),
  86.     'tid'    => $tid,
  87.     'name'   => $name,
  88.     'SMILIES'  => getsmilies(),
  89.     'antispam'=> get_antispam('newpost',1)
  90.   );
  91.  
  92.   $tpl->set_ar_out($ar,1);
  93.  
  94.   $erg = db_query('SELECT erst, txt FROM `prefix_posts` WHERE tid = "'.$tid.'" ORDER BY time DESC LIMIT 0,5');
  95.   while ($row = db_fetch_assoc($erg)) {
  96.     $row['txt'] = bbcode($row['txt']);
  97.     $tpl->set_ar_out($row, 2);
  98.   }
  99.   $tpl->out(3);
  100.  
  101.  
  102. } else {
  103.  
  104.   # save post
  105.  $_SESSION['klicktime'] = $dppk_time;
  106.  
  107.   $design = new design ( $title , $hmenu, 1);
  108.   $design->header();
  109.  
  110.   if (loggedin()) {
  111.     $uid = $_SESSION['authid'];
  112.         $erst = escape($_SESSION['authname'],'string');
  113.       db_query("UPDATE `prefix_user` set posts = posts+1 WHERE id = ".$uid);
  114.   } else  {
  115.       $erst = $xnn;
  116.         $uid = 0;
  117.   }
  118.  
  119.   # topic alert ausfuehren.
  120.  $topic_alerts_abf = "SELECT
  121.      prefix_topics.name as topic,
  122.      prefix_user.email as email,
  123.      prefix_user.name as user,
  124.      prefix_user.id as uid
  125.    FROM prefix_topic_alerts
  126.      LEFT JOIN prefix_topics ON prefix_topics.id = prefix_topic_alerts.tid
  127.      LEFT JOIN prefix_user   ON prefix_user.id   = prefix_topic_alerts.uid
  128.    WHERE prefix_topic_alerts.tid = ".$tid;
  129.  
  130.   $topic_alerts_erg = db_query($topic_alerts_abf);
  131.   while ($topic_alerts_row = db_fetch_assoc($topic_alerts_erg)) {
  132.     if ($uid == $topic_alerts_row['uid']) continue;
  133.     $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
  134.     $text = sprintf ($lang['topicalertmessage'], $topic_alerts_row['user'], $topic_alerts_row['topic'], $page, $tid);
  135.     icmail ($topic_alerts_row['email'], 'neue Antwort im Thema: "'.$topic_alerts_row['topic'].'"', $text);
  136.     debug ($topic_alerts_row['email']);
  137.   }
  138.   db_query("DELETE FROM prefix_topic_alerts WHERE tid = ".$tid);
  139.  
  140.   # topic alert insert wenn gewaehlt.
  141.  if (!empty($_POST['topic_alert']) AND $_POST['topic_alert'] == 'yes' AND loggedin()) {
  142.     if (0 == db_result(db_query("SELECT COUNT(*) FROM prefix_topic_alerts WHERE uid = ".$_SESSION['authid']." AND tid = ".$tid),0)) {
  143.       db_query("INSERT INTO prefix_topic_alerts (tid,uid) VALUES (".$tid.", ".$_SESSION['authid'].")");
  144.     }
  145.   }
  146.   # topic alert ende
  147.  
  148.   db_query ("INSERT INTO `prefix_posts` (tid,fid,erst,erstid,time,txt) VALUES ( ".$tid.", ".$fid.", '".$erst."', ".$uid.", ".$time.", '".$txt."')");
  149.   $pid = db_last_id();
  150.  
  151.     db_query("UPDATE `prefix_topics` SET last_post_id = ".$pid.", rep = rep + 1 WHERE id = ".$tid);
  152.     db_query("UPDATE `prefix_forums` SET posts = posts + 1, last_post_id = ".$pid." WHERE id = ".$fid );
  153.  
  154.     $page = ceil ( ($aktTopicRow['rep']+1)  / $allgAr['Fpanz'] );
  155.  
  156.   # toipc als gelesen markieren
  157.  $_SESSION['forumSEE'][$fid][$tid] = time();
  158.  
  159.     wd ( array (
  160.       $lang['backtotopic'] => 'index.php?forum-showposts-'.$tid.'-p'.$page.'#'.$pid,
  161.         $lang['backtotopicoverview'] => 'index.php?forum-showtopics-'.$fid
  162.     ) , $lang['createpostsuccessful'] , 3 );
  163. }
  164.  
  165. $design->footer();
  166. ?>



Mairu
Coder
9 Beitragspunkte
Posts: 11969

User Pic

0 Mitglieder finden den Beitrag gut.

20.06.2008 - 14:55:44     Zitieren

Also ich habs getestet und bei mir gings, ich muss dazu natürlich sagen, dass ich es extra so geschrieben hab, dass Admins natürlich doppelposten dürfen und ich nehme mal stark an, dass du es als Admin getestet hast Zwinker

Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
Anarchy 90210
Mitglied
0 Beitragspunkte
Posts: 519

User Pic

0 Mitglieder finden den Beitrag gut.

20.06.2008 - 15:10:58     Zitieren

Bei mir geht es auch, DANKE Mairu =)


P.S. Diese Funktion ist wichtig
rubberduck2006
Mitglied
0 Beitragspunkte
Posts: 433

0 Mitglieder finden den Beitrag gut.

20.06.2008 - 15:16:52     Zitieren

Zitat geschrieben von Mairu

Also ich habs getestet und bei mir gings, ich muss dazu natürlich sagen, dass ich es extra so geschrieben hab, dass Admins natürlich doppelposten dürfen und ich nehme mal stark an, dass du es als Admin getestet hast Zwinker



aso stimmt hehehe ja ok dann danke


mobi
Mitglied
0 Beitragspunkte
Posts: 35

0 Mitglieder finden den Beitrag gut.

09.04.2010 - 20:14:07     Zitieren

kann man das auch so schreiben das Leader doppelpostings machen dürfen
Chapter
Moderator
35 Beitragspunkte
Posts: 3887

User Pic

0 Mitglieder finden den Beitrag gut.

09.04.2010 - 20:14:53     Zitieren

warum soll das gut sein. es gibt die edit-funktion wodurch er weitere infos hinzufügen kann.

www.sepp-tattoo.de | Wie poste ich Falsch
Blog, Bilder, Downloads, Module
Schreibfehler sind lediglich Specialeffects meine
mobi
Mitglied
0 Beitragspunkte
Posts: 35

0 Mitglieder finden den Beitrag gut.

09.04.2010 - 23:22:43     Zitieren

Zitat geschrieben von Chapter

warum soll das gut sein. es gibt die edit-funktion wodurch er weitere infos hinzufügen kann.

Manchmal bräuchte das auch ein Leader z.B. wenn ein War sich verändert etc.
Dadurch rutscht der Thread sofort wieder nach oben(LastForumsbox etc.)

Fände das nicht schlecht


Zuletzt modifiziert von mobi am 09.04.2010 - 23:27:51
Mairu
Coder
9 Beitragspunkte
Posts: 11969

User Pic

0 Mitglieder finden den Beitrag gut.

10.04.2010 - 00:39:11     Zitieren

Da steht ja irgendwo is_siteadmin(), wenn du da has_right(-6) draus machst, sollte es auch für Leader gelten.

Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
mobi
Mitglied
0 Beitragspunkte
Posts: 35

0 Mitglieder finden den Beitrag gut.

10.04.2010 - 09:21:55     Zitieren

Danke dir Mairu
Funzt einwandfrei Smilie


Zuletzt modifiziert von mobi am 10.04.2010 - 12:10:58

[ Anmelden zum schreiben ]