Menü

  Login

  Shoutbox

  Forum » Fragen zu Ilch » Andere Dinge » Trialmember durch 2 Leader aufnehmen


Trialmember durch 2 Leader aufnehmen
MiBo73
Jungspund

User Pic

Posts: 45
# 25.01.2010 - 09:41:25
    zitieren



Hallo,

ich habe Versucht, dass man ein Trialmember nur aufnehmen kann, wenn zuvor ein Siteadmin sein einverständniss gegeben hat.

Dazu habe ich in der Table User_Chek das Feld Freigabe eingefügt.
Die Freigabe ansich klappt auch hervorragen. Was mit aber Probleme macht, ist die User danach als Trial aufzunehmen.
Es sollen 2 Bedingungen erfüllt sein.
1. Es mus ein anderer Siteadmin bereits die Freigabe durchgeführt haben
2. Es mus den User ein anderer Siteadmin wie den Freigeber aufnehmen.

Ich habe den Code dafür wie folgt geändert:
 Code
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
   # als trial aufnehmen 
  if ($menu->getA(2) == 'a' AND is_numeric($menu->getE(2)) AND $menu->getE(2) <> 0 AND $r['freigabe'] <> 0 ) {
    $check = escape($menu->get(3), 'string');
    $id    = escape($menu->getE(2), 'integer');
    if ($menu->get(4) == 'addtoteam' AND $r['freigabe']<>$_SESSION['authid']) {
      $gid = db_count_query("SELECT groupid FROM `prefix_usercheck` WHERE `check` = '$check'");
      db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (8,$id,3)");
      db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (5,$id,3)");
      $msg = 'Er wurde als Trial in das Team eingetragen.';
    }


Leider kann ich damit weiterhin die User freigeben, aber ein anderer nicht mehr Aufnehmen.
Die 2. Bedingung soll das Script anhand der der eigenen ID und der eingetragenen ID prüfen.

Wo habe ich mein Denkfehler?


verwendete ilchClan Version: 1.1 M

betroffene Homepage: http://www.spirits-of-anaria.de
Mairu
Administrator

User Pic

Posts: 1908
# 26.01.2010 - 20:03:15
    zitieren



Ich sehe in dem Codestück keinen Fehler, es könnte sein, dass du den Wert nicht aus der Datenbank ausliest, und deshalb keine Freigabe überhaupt nicht möglich ist, da $r['freigabe'] nicht vergeben.
MiBo73
Jungspund

User Pic

Posts: 45
# 26.01.2010 - 21:25:16
    zitieren



hm, dann mal den gesamten Trial-Berecih:

 Code
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
   # User Freigeben
    if ($menu->getA(2) == 'p' AND is_numeric($menu->getE(2))) {
    $check = escape($menu->get(3), 'string');
    $id    = escape($menu->getE(2), 'integer');
    if ($menu->get(4) == 'pruefen') {
      db_query("UPDATE prefix_usercheck SET freigabe = {$_SESSION['authid']} WHERE `check` = '".$check."'");
      $msg = 'Erfolgreich geändert';
  }
  }
 
  # als trial aufnehmen 
  if ($menu->getA(2) == 'a' AND is_numeric($menu->getE(2)) AND $menu->getE(2) <> 0 AND $r['freigabe'] <> '0') {
    $check = escape($menu->get(3), 'string');
    $id    = escape($menu->getE(2), 'integer');
    if ($menu->get(4) == 'addtoteam' AND $r['freigabe']<>$_SESSION['authid']) {
      $gid = db_count_query("SELECT groupid FROM `prefix_usercheck` WHERE `check` = '$check'");
      db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (8,$id,3)");
      db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (5,$id,3)");
      $msg = 'Er wurde als Trial in das Team eingetragen.';
    } else {
      $msg = 'Jetzt muss er noch in ein Team aufgenommen werden.';
    }
    db_query("DELETE FROM prefix_usercheck WHERE ak = 4 AND `check` = '".$check."'");
    db_query("UPDATE prefix_user SET recht = -4 WHERE id = ".$id." AND recht > -3");
    sendpm ($_SESSION['authid'], $id, 'Herzlich Willkommen, Jüngster Spirit!', 'Herzlich Willkommen, Jüngster Spirit!\n\nDu hast einen wagemutigen Schritt getan, junger Novize. Der Weg, den Du gewählt hast, wird steinig und mit Kampf und Blut gesäumt. Licht und Schatten werden Deine Begleiter sein.\n\nDoch sei gewahr: Du bist nun ein Spirit of Ancaria und somit Teil einer mächtigen Gemeinschaft.\n\nDein Heldenmut wird geehrt werden, doch mehr noch werden Freundschaft und Hilfsbereitschaft Dir die Anerkennung der Gilde versichern.\n\nErweist Du Dich als würdiger Spirit, so wird stets ein Platz in den Hohen Hallen der Gilde für Dich reserviert sein.\n\nGehab dich wohl\nHoher Rat der Gilde Spirits of Ancaria\nwww: http://www.spirits-of-ancaria.de\nMail: hoher.rat@spirits-of-ancaria.de');
    $msg = 'erfolgreich als Trial markiert, der User wurde darueber informiert. '.$msg;
  }

  # aus check tabelle loeschen (nicht aufnehmen)
  if ($menu->getA(2) == 'd' AND is_numeric($menu->getE(2))) {
    $check = escape($menu->get(3), 'string');
    $id    = escape($menu->getE(2), 'integer');
    db_query("DELETE FROM prefix_usercheck WHERE ak = 4 AND `check` = '".$check."'");
    if ($id <> 0) {
      sendpm ($_SESSION['authid'], $id, 'Deine Joinus Anfrage', 'Deine Joinus Anfrage wurde leider abgelehnt');
    }
    $msg = 'erfolgreich gel&ouml;scht ..., wenn er schon registriert war wurde ihm eine Nachricht geschickt.';
  }
 
  $tpl = new tpl ( 'groups/joinus', 1);
  $tpl->set('msg',(empty($msg)?'':'<table width="50%" cellpadding="2" cellspacing="1" border="0" class="border"><tr><td class="Cnorm"><b>Nachricht:</b>&nbsp;'.$msg.'</td></tr></table>'));
  $tpl->out(0);

  if ($_SESSION['authright'] <= -8 OR $allgAr['groups_forall'] == 0) {
    $where = '';
  } else {
    $where = " AND prefix_usercheck.groupid IN (SELECT id FROM `prefix_groups` WHERE mod1 = {$_SESSION['authid']} OR mod2 = {$_SESSION['authid']} OR mod4 = {$_SESSION['authid']})";
  }

  $class = 'Cnorm';
  $erg = db_query("SELECT `check`, prefix_usercheck.name, prefix_usercheck.gebdatum, prefix_usercheck.freigabe, prefix_user.id, prefix_user.email, prefix_groups.name as groupname FROM prefix_usercheck LEFT JOIN prefix_user ON prefix_user.name = BINARY prefix_usercheck.name LEFT JOIN prefix_groups ON prefix_groups.id = prefix_usercheck.groupid WHERE ak = 4".$where);
  while ($r = db_fetch_assoc($erg)) {
    if ($r['id'] < 1) {
      $r['email'] = db_count_query("SELECT email FROM `prefix_usercheck` WHERE name = '{$r['name']}' AND ak");
    }
      $class = ($class == 'Cnorm' ? 'Cmite' : 'Cnorm' );
      $r['class'] = $class;
      $r['status'] = (empty($r['id'])?'Registrierung noch nicht abgeschlossen' : 'bereits Registriert');
    if (empty($r['id'])) { $r['id'] = 0; }
#Prüfen der Freigabe   
      if ($r['freigabe'] != '0') {
      $frei = db_fetch_assoc(db_query("SELECT name FROM prefix_user WHERE id = '".$r['freigabe']."'"));
    $r['freigabedurch'] = $frei['name'];
    } else {
    $r['freigabedurch'] = '<a href="admin.php?groups-joinus-p'.$r[id].'-'.$r[check].'-pruefen">Bisher Keiner</a>';
    }


Den Namen des "Freigebers" kann ich ohne Probleme lesen und er ist auch korrekt.

Das Freigeben ansich klappt auch, nur ebend, wenn der user Registriert ist und ein 2. Siteadmin ihn aufnehmen möchte, klappt es nicht.
Mairu
Administrator

User Pic

Posts: 1908
# 27.01.2010 - 10:39:30
    zitieren



 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
    # als trial aufnehmen 
  
if ($menu->getA(2) == 'a' AND is_numeric($menu->getE(2)) AND $menu->getE(2) <> 0) {
    
$check escape($menu->get(3), 'string');
    
$id    escape($menu->getE(2), 'integer');
    
$freigabe db_result(db_query('SELECT freigabe FROM prefix_usercheck WHERE `check` = "'.$check.'"'));
    
    if (
$menu->get(4) == 'addtoteam' AND $freigabe != '0' AND $freigabe != $_SESSION['authid'] ) {
      
$gid db_count_query("SELECT groupid FROM `prefix_usercheck` WHERE `check` = '$check'");
      
db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (8,$id,3)");
      
db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (5,$id,3)");
      
$msg 'Er wurde als Trial in das Team eingetragen.';
    } else {
      
$msg 'Jetzt muss er noch in ein Team aufgenommen werden.';
    }
    
db_query("DELETE FROM prefix_usercheck WHERE ak = 4 AND `check` = '".$check."'");
    
db_query("UPDATE prefix_user SET recht = -4 WHERE id = ".$id." AND recht > -3");
    
sendpm ($_SESSION['authid'], $id'Herzlich Willkommen, Jüngster Spirit!''Herzlich Willkommen, Jüngster Spirit!\n\nDu hast einen wagemutigen Schritt getan, junger Novize. Der Weg, den Du gewählt hast, wird steinig und mit Kampf und Blut gesäumt. Licht und Schatten werden Deine Begleiter sein.\n\nDoch sei gewahr: Du bist nun ein Spirit of Ancaria und somit Teil einer mächtigen Gemeinschaft.\n\nDein Heldenmut wird geehrt werden, doch mehr noch werden Freundschaft und Hilfsbereitschaft Dir die Anerkennung der Gilde versichern.\n\nErweist Du Dich als würdiger Spirit, so wird stets ein Platz in den Hohen Hallen der Gilde für Dich reserviert sein.\n\nGehab dich wohl\nHoher Rat der Gilde Spirits of Ancaria\nwww: http://www.spirits-of-ancaria.de\nMail: hoher.rat@spirits-of-ancaria.de');
    
$msg 'erfolgreich als Trial markiert, der User wurde darueber informiert. '.$msg;
  }


Du musst aber jetzt darauf achten, dass die Logik verändert wurde, und so eigentlich nicht einsetzbar ist, aber du musst halt erst den Wert aus der Datenbank auslesen, wozu du wiederum den check Wert benötigst.
MiBo73
Jungspund

User Pic

Posts: 45
# 27.01.2010 - 11:32:09
    zitieren



Danke für den tipp, dass die Variable "Übergeben werdenmuss".

Habe es nun so gemacht:
 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
    # als trial aufnehmen  
  
if ($menu->getA(2) == 'a' AND is_numeric($menu->getE(2)) AND $menu->getE(2) <> ) {
    
$check escape($menu->get(3), 'string');
    
$id    escape($menu->getE(2), 'integer');
    
$freigabe escape($menu->get(5), 'integer');
    
    if (
$menu->get(4) == 'addtoteam' AND $freigabe != AND $freigabe <>$_SESSION['authid']) {
      
$gid db_count_query("SELECT groupid FROM `prefix_usercheck` WHERE `check` = '$check'");
      
db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (8,$id,3)");
      
db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES (5,$id,3)");
      
$msg 'Er wurde als Trial in das Team eingetragen.';
    } else {
      
$msg 'Jetzt muss er noch in ein Team aufgenommen werden.';
    }
    
db_query("DELETE FROM prefix_usercheck WHERE ak = 4 AND `check` = '".$check."'");
    
db_query("UPDATE prefix_user SET recht = -4 WHERE id = ".$id." AND recht > -3");
    
sendpm ($_SESSION['authid'], $id'Herzlich Willkommen, Jüngster Spirit!''Herzlich Willkommen, Jüngster Spirit!\n\nDu hast einen wagemutigen Schritt getan, junger Novize. Der Weg, den Du gewählt hast, wird steinig und mit Kampf und Blut gesäumt. Licht und Schatten werden Deine Begleiter sein.\n\nDoch sei gewahr: Du bist nun ein Spirit of Ancaria und somit Teil einer mächtigen Gemeinschaft.\n\nDein Heldenmut wird geehrt werden, doch mehr noch werden Freundschaft und Hilfsbereitschaft Dir die Anerkennung der Gilde versichern.\n\nErweist Du Dich als würdiger Spirit, so wird stets ein Platz in den Hohen Hallen der Gilde für Dich reserviert sein.\n\nGehab dich wohl\nHoher Rat der Gilde Spirits of Ancaria\nwww: http://www.spirits-of-ancaria.de\nMail: hoher.rat@spirits-of-ancaria.de');
    
$msg 'erfolgreich als Trial markiert, der User wurde darueber informiert. '.$msg;
  }


In der htm habe ich an den Link noch um die Variable Freigabe erweitert. heute abend schaue ich, ob es geklappt hat.
MiBo73
Jungspund

User Pic

Posts: 45
# 27.01.2010 - 18:57:17
    zitieren



So, habe nunbeide Versionen probiert, leider wird der user auch als Trialmember aufgenommen, wenn keiner vorher zugestimmt hat.
Ist das auch noch möglich zu aktivieren?
Mairu
Administrator

User Pic

Posts: 1908
# 28.01.2010 - 02:03:04
    zitieren



Sicher du musst nur die Abfragen in den If Pfad schieben, das meinte ich ja eigentlich auch mit der Logik, die so dann nicht wirklich stimmt.
MiBo73
Jungspund

User Pic

Posts: 45
# 01.02.2010 - 07:30:14
    zitieren



sobald ich die Abfrage in den oberen IF-Pfad schiebe, kann den user wieder keiner als Trial aufnehmen. Wenn ich die prüfung unten belasse, kann der User auch aufgenommen werden, wenn er noch nicht freigegeben wurde.

 Php
1:
  AND $freigabe != 0
?>
Mairu
Administrator

User Pic

Posts: 1908
# 04.02.2010 - 08:55:33
    zitieren



Wenn du es nicht aus der Datenbank ausliest, sondern übergibst, kannst du es doch genauso machen, wie du es am Anfang hattest, nur das du $r['freigabe'] durch $menu->get(5) ersetzt.
MiBo73
Jungspund

User Pic

Posts: 45
# 06.02.2010 - 08:01:50
    zitieren



danke, da scheint geholfen zu haben.