31. October 2020 - Zeit
31
Guten Tag
10
GAST
2020
Gebt gut acht, heute ist Halloween
Thread Verfasser: Septron
Thread ID: 590
Thread Info
Es gibt 9 Beiträge zu diesem Thema, und es wurde 4496 Mal angesehen.
 Thema drucken
Profilfield ts3register
Septron
Hallo zusammen,

derzeit Versuche ich ein neues Profilfeld zu basteln das von meiner
Haupt DB den spezifischen Mitglieder eintrag/austrag an eine andere DB zu übermitteln doch irgendwie habe ich grad einen ansatzfehler oder die falsche Variable derzeit sieht es so aus:

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_ts3register_include.php (für v7.02.xx)
| Author: Dennis Kaiser (Septron)
| Website: http://www.septron.de
| Website: http://www.septron.eu
| Website: http://www.septron.org
| Website: http://www.septron.info
+--------------------------------------------------------+
| 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"); }
#require_once BASEDIR."ts3framework/ts3_register_config.php";

if ($profile_method == "input") {

// Create the input field for registration and edit profile
echo "<tr>\n";
echo "<td class='tbl'>".$locale['uf_ts3register']."</td>\n";
echo "<td class='tbl'><input type='text' name='user_ts3register' value='".(isset($user_data['user_ts3register']) ? $user_data['user_ts3register'] : "")."' maxlength='250' class='textbox' placeholder='deiKAkJedikOhEpPN1/bdtYBrM4=' style='width:200px;' /></td>\n";
echo "</tr>\n";
} elseif ($profile_method == "display") {

// Create the display for the user profile
if ($user_data['user_ts3register']) {
echo "<td width='1%' class='tbl1' style='white-space:nowrap'>".$locale['uf_ts3register']."</td>\n";
echo "<td align='right' class='tbl1'>".$locale['uf_ts3register001']."</td>\n";
   } else {
echo "<td width='1%' class='tbl1' style='white-space:nowrap'>".$locale['uf_ts3register']."</td>\n";
echo "<td align='right' class='tbl1'>".$locale['uf_ts3register002']."</td>\n";
            }

// Insert and update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
   // Get input data
   if (isset($_POST['user_ts3register']) && ($_POST['user_ts3register'] != "" || $this->_isNotRequired("user_ts3register"))) {
      // Set update or insert user data
      $this->_setDBValue("user_ts3register", stripinput($_POST['user_ts3register']));
      } else {
         $this->_setError("user_ts3register", $locale['uf_ts3register_error2']);   
      }
   } else {
      $this->_setError("user_ts3register", $locale['uf_ts3register_error'], true);
   }

require_once BASEDIR."ts3framework/ts3profielfieldconfig.php";
$mysql = mysql_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3) or die(mysql_error());
mysql_select_db('test', $mysql) or die(mysql_error());

$instance_id = '1';
$prefix = 'servergroupprotectio';
$servergroup_id = '162';
$uid = $data['user_ts3register'];
$comment = $userdata['user_name'];

$eintragen = mysql_query($db, "INSERT INTO  jts3servermod_servergroupprotection (instance_id, prefix, servergroup_id, uid, comment) VALUES ('$instance_id', '$prefix', '$servergroup_id', '$uid', '$comment')");
?>



ich möchte das

Code 

$data['user_ts3register']



zwar abgefragt und direkt an die andere DB übergeben wird wo dementsprechend die tabellen vorhanden sind die so in etwa ausschauen:

Code 

$instance_id = '1';
$prefix = 'servergroupprotectio';
$servergroup_id = '162';
$uid = $data['user_ts3register'];
$comment = $userdata['user_name'];

$eintragen = mysql_query($db, "INSERT INTO  jts3servermod_servergroupprotection (instance_id, prefix, servergroup_id, uid, comment) VALUES ('$instance_id', '$prefix', '$servergroup_id', '$uid', '$comment')");



ich denke ich habe wohl den falschen ansatz oder habe was vergessen
es sollte so aussehen das wenn ein eintrag getätigt wurde dieser in der anderen DB eingetragen wird wenn der eintrag rausgenommen wurde dieser auch wieder entfernt wird

ich stehe grad echt auf dem schlauch.

bevor gesagt wird es würde nicht funktionieren weil es sich ja um ts3 handelt und dieser sqlite nutzt auf der anderen db wo es übergeben wird ist ein extra interface das auf mysql basiert aber über query an die sqlite übergeben wird.

Edit: derzeit habe ich es so getestet aber ohne erfolg:

Code 

include BASEDIR."ts3framework/ts3profielfieldconfig.php";
$mysql = mysql_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3) or die(mysql_error());
mysql_select_db('test', $mysql) or die(mysql_error());

$botid= '1';
$instance_id = '1';
$prefix = 'servergroupprotectio';
$servergroup_id = '162';
$uid = $data['user_ts3register'];
$comment = $userdata['user_name'];

$eintrag = "INSERT INTO jts3servermod_servergroupprotection
(instance_id, prefix, servergroup_id, uid, comment)
VALUES
('$instance_id', '$prefix', '$servergroup_id', '$uid', '$comment')";

$eintragen = mysql_query($eintrag);



dort soll es eingetragen werden (db 2)

www.septron.de/images/jts3sm/strukturdb2_01.png


hier sind die manuellen einträge durch das extra webinterface:

www.septron.de/images/jts3sm/strukturdb2_02.png


und dort wo die client_unique_id steht soll der eintrag von meiner hauptseite abgelesen werden und auf die screen datenbank (db 2) übergeben werden.

lg Septron
Bearbeitet von Septron am 11.07.2015 um 17:23
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
Rolly8-HL
Habe auch so meine Probleme mit aber vielleicht kann das ja helfen.
http://www.phpfusion-support.de/forum...ost_225972
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
 
Septron
Hallo,

ich will ja nicht den inhalt von db1 und db 2 abfragen sondern soll er es von

Code 

$data['user_ts3register']


auf db 2 übertragen wenn ein eintrag getätigt wurde ins userfeld ist dieses leer wird es natürlich nicht an db 2 übergeben ;)

lg
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
Dat Tunes
Mal ein Tipp von mir:
Schreib dir erstmal ein Standalone Formular, das genau die Daten Einträgt oder Löscht.
Danach kannst du wenn es läuft es zu Fusion Portieren und alles an das Profilfeld anpassen.

Was da dann praktisch wäre, des mit Adminbereich zu schreiben, so das man alle Daten für den TS im Admin bearbeiten kann.
Das Problem ist nicht das Problem, das Problem ist der Nutzer, der das Problem verursacht.
Was lernen wir ?
Wir entfernen einfach den Nutzer und das Problem ist gelöst !

Sollte das Problem nicht gelöst sein, WD40! WD40 hilft immer !
 
Septron
Hallö,

ja des wollte ich ja eigendlich nicht da das haupdingen ja eine standalone ist.

es soll ja eigendlich nur über das profilfeld verbindung zur zweiten DB herstellen und ggf. die variablen hinzufügen oder nicht

derzeit habe ich es so doch egal was ich versuche irgendwo hab ich einen fehler:

Code 


include BASEDIR."ts3framework/ts3profielfieldconfig.php";
$instance_id = '1';
$prefix = 'servergroupprotectio';
$servergroup_id = '162';
$client_unique_id = $data['user_ts3register'];
$comment = $data['user_name'];

   //Verbindung zur DB
    mysql_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3) or die ("Verbindung nicht m&ouml;glich");
    mysql_select_db("jts3servermod_servergroupprotection") or die ("Datenbank existiert nicht");
 
    //selektieren
    $result = mysql_query("SELECT * FROM instance_id, prefix, servergroup_id, client_unique_id, comment");
 
    $result = mysql_query("INSERT INTO jts3servermod_servergroupprotection (instance_id, prefix, servergroup_id, client_unique_id, comment) VALUES ('".$botid."', ".$instance_id."', ".$prefix."', ".$servergroup_id."', ".$client_unique_id."', '".$comment."')");
   
   mysql_query("UPDATE jts3servermod_servergroupprotection SET uid = '".$client_unique_id."'");
   
   mysql_query("DELETE FROM jts3servermod_servergroupprotection WHERE uid = '".$client_unique_id."'");



entweder sollte ich es zwischem dem userfeld setzen denn derzeit habe ich es am ende könnte auch sein :D

und zu deinem Tipp soweit bin ich noch nicht des weisst du doch :D

//EDIT: Habe es nun teilweise hinbekommen doch stört mich da was die wichtigsten einträge sind leer irgendwie wird das lesen der haupt DB nicht angenommen entweder liegt es am IF oder mein Ansatz ist komplett falsch

Code 

include BASEDIR."ts3framework/ts3profielfieldconfig.php";
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
//$link = mysqli_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3);
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Attempt insert query execution
$sql = "INSERT INTO jts3servermod_servergroupprotection (instance_id, prefix, servergroup_id, client_unique_id, comment) VALUES (1, 'servergroupprotectio', '162', '".$data['user_ts3register']."', '".$data['user_name']."')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);



so schaut der eintrag dann aus :(

www.septron.de/images/jts3sm/strukturdb2_03.png


mein problem nun 2 leere felder sprich

Code 

$data['user_ts3register']


und

Code 

$data['user_name']


wird in db zwei nicht eingetragen und jeder der sein profil aufruft oder die edit aufruft macht es einen eintrag ich denke das es an diesem liegt:

Code 

$sql = "INSERT INTO jts3servermod_servergroupprotection (instance_id, prefix, servergroup_id, client_unique_id, comment) VALUES (1, 'servergroupprotectio', '162', '".$data['user_ts3register']."', '".$data['user_name']."')";



doch das soll es ja eben nicht es soll erst abgeschickt werden wenn auf Profil bearbeiten geklickt wird so langsam bin ich ratlos

das einzigste was mir noch einfallen würde wäre das standalone script in die DB der hauptseite mit einzufügen und es dann so irgendwie zu verknüpfen denke dann ändert sich im input der name und value wenn ich mich nicht irre

lg Septron
Bearbeitet von Septron am 11.07.2015 um 22:52
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
John Doe
Wird nur ne Kleinigkeit sein, ist aber in meinem desolaten Zustand derzeit zuviel Input für mich.

Ich schau es mir morgen Nachmittag mal in Ruhe an solltet ihr bis dahin keine Lösung gefunden haben Smile
Dieses Mitglied wurde gelöscht!
 
Septron
Hallo,

ich denke mal eher weniger habe es auch erst mal bei seite gelegt zu viele varianten ausprobiert bis es denn mal funktionierte aber falsch Dickeslachen

lg Septron
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
matze_two
Also wen ich das jetzt lese möchtest du von Datenbank A nach Datenbank B in die Db das eingetragene Userfeld in B eintragen. Wenn ich das jetzt richtig lesen tuhe.

Das kann nicht klappen da ja die erstellte config deinerseits ...
1. einen ganz anderen Prefix hat..so können sie nicht untereinander kommunizieren..sollte ja logisch sein. Und wie soll Datenbank A den Prefix erkennen sollen. Da muss das Script Zugriff haben zur DB.

Wenn du den Prefix fest definierst von A nach B dan geht es.
Es gibt auch ein Post über das Thema in PHP.net, dort solltest du fündig werden.
 
Septron
Hallo,

ich habe es nun anders gelöst und es funktioniert zu 80% die anderen 20% ist die Anzeige des Templates. ;)

die aufrufdatei habe ich nun als formular erstellt:

Code 

<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";
include LOCALE.LOCALESET."contact.php";
include LOCALE.LOCALESET."user_fields/user_ts3register.php";
if(!iMEMBER){redirect("".INFUSIONS."restricted/index.php"); exit;}

add_to_title("&nbsp;Teamspeak&sup3;&nbsp;UID&nbsp;&amp;&nbsp;Benutzernamen&nbsp;Registrieren&nbsp;");
#add_to_title($locale['global_200'].$locale['400']);

add_to_head("
<style type='text/css'>   
   input.textbox3:not(:focus), textarea:not(:focus) { opacity:0.5;   }
   input.textbox3:required, textarea:required { background:url('images/asterisk_orange.png') no-repeat 100% 7px; }
   input.textbox3:valid, textarea:valid { background:url('images/check.png') no-repeat 100% 5px; }      
   input.textbox3:focus:invalid, textarea:focus:invalid { background:url('images/cancel.png') no-repeat 100% 7px; }
</style>
");

   echo '<br />';
   echo '<div class="bs-example" data-example-id="simple-jumbotron">
    <div class="jumbotron">
      <h1>TS&sup3; UID Registrieren</h1>
      <p>Hier k&ouml;nnt ihr eure Teamspeak&sup3; UID so wie euren Teamspeak&sup3; Benutzernamen regestrieren so das ihr direkt Rechte einer zugeteilten Servergruppe habt.</p>
      <p><a class="btn btn-primary btn-lg" href="'.BASEDIR.'teamspeak3.html" target="_self" role="button">TS&sup3; &Uuml;bersicht</a></p>
    </div>
  </div>';
   echo "<table cellpadding='0' cellspacing='0' class='center'>\n<tr>\n";
   echo "<form method='post' action='ts3framework/jts3smwconfig.php'>\n";
   echo "<table cellpadding='0' cellspacing='0' class='center'>\n<tr>\n";
   
   echo '<div class="input-group">
           <span class="input-group-addon" id="basic-addon1">Teamspeak&sup3; UID:</span>
           <input type="text" name="client_unique_id" maxlength="150" class="form-control textbox3" required="required" placeholder="deiKAkJedikOhEpPN1/bdtYBrM4=" aria-describedby="basic-addon1" />
        </div>';
   
   echo "<br />";
   
   echo '<div class="input-group">
           <span class="input-group-addon" id="basic-addon1">Benutzername:</span>
           <input type="text" name="comment" maxlength="150" class="form-control textbox3" required="required" placeholder="Euer TS&sup3; Benutzername" aria-describedby="basic-addon1" />
        </div>';
   
   echo "<br />";

   echo '<div class="panel panel-default">
           <div class="panel-heading">
             <h3 class="panel-title"><span class="alternative-font">'.$locale["407"].'</span></h3>
           </div>
              <div class="panel-body" align="center">';
                include INCLUDES."captchas/".$settings['captcha']."/captcha_display.php";
               if (!isset($_CAPTCHA_HIDE_INPUT) || (isset($_CAPTCHA_HIDE_INPUT) && !$_CAPTCHA_HIDE_INPUT)) {
                  echo "<input type='text' id='captcha_code' name='captcha_code' class='textbox2' autocomplete='off' required='required' />";
               }
              echo '</div>
        </div>';
       
   echo "<td align='center' colspan='2' class='tbl'>\n";
   echo "<input type='submit' value='Daten Absenden' class='btn btn-default' /></td>\n";
   echo "</tr>\n</table>\n</form>\n";
   
   echo '<hr class="tall" />';
   
   echo '<div class="panel panel-default">
              <div class="panel-heading">
                <h3 class="panel-title"><span class="alternative-font">[How to] TS&sup3; UID herausfinden</span></h3>
              </div>
              <div class="panel-body" align="center">
                <b>1. Schritt:</b> &Ouml;ffne Deinen TS&sup3; Clienten und klicke auf Einstellungen.<br>
               <br>
               <img style="height: 354px; width: 510px;" src="'.IMAGES.'jts3sm/TS3_Schritt1.jpg" class="">          
               <br>
               <br>
               <b>2. Schritt:</b> W&auml;hle den Punkt "Identit&auml;ten" aus.<br>
               <br>
               <img style="height: 354px; width: 510px;" src="'.IMAGES.'jts3sm/TS3_Schritt2.jpg" class=""><br>
               <br>
               <br>
               <b>3. Schritt:</b> Kopiere Deine individuelle TS&sup3; Identit&auml;t und f&uuml;ge sie in Dein entsprechendes Profilfeld ein.<br>
               <br>
               <img style="height: 410px; width: 510px;" src="'.IMAGES.'jts3sm/TS3_Schritt3.jpg" class="">
              </div>
        </div>';

require_once THEMES."templates/footer.php";
?>



die schaut denn so aus:
www.septron.de/images/jts3sm/tsregistervoschau.png


die entsprechende config schaut so aus:

Code 

<?php
#require_once "maincore.php";
#require_once THEMES."templates/header.php";

// database settings
$db_host_ts3 = "localhost";
$db_user_ts3 = "dbuser";
$db_pass_ts3 = "password";
$db_name_ts3 = "dbname";
if( $_POST )
{
  $con = mysql_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3);
  if (!$con)
  {
    die('Could not connect: ' . mysql_error());
  }

  mysql_select_db($db_name_ts3, $con);

  $instance_id = '1';
  $prefix = 'servergroupprotectio';
  $servergroup_id = '162';
  $client_unique_id = $_POST['client_unique_id'];
  $comment = $_POST['comment'];

  $instance_id = mysql_real_escape_string($instance_id);
  $prefix = mysql_real_escape_string($prefix);
  $servergroup_id = mysql_real_escape_string($servergroup_id);
  $client_unique_id = mysql_real_escape_string($client_unique_id);
  $comment = mysql_real_escape_string($comment);

  $query = "INSERT INTO `$db_name_ts3`.`jts3servermod_servergroupprotection` (`instance_id`, `prefix`, `servergroup_id`, `client_unique_id`,
        `comment`) VALUES ('$instance_id', '$prefix', '$servergroup_id', '$client_unique_id', '$comment');";

  mysql_query($query);

  #echo "<h2>Daten erfolgreich eingetragen!</h2>";
  echo '<div class="bs-example" data-example-id="simple-jumbotron">
    <div class="jumbotron">
      <h2>Daten erfolgreich eingetragen!</h2>
      <p>Wenn du dies sehen kannst wurden deine Daten erfolgreich eingetragen.</p>
      <p><a class="btn btn-primary btn-lg" href="http://sgifusion-update.septron.de/home.html" target="_self" role="button">zur&uuml;ck zur Seite</a></p>
    </div>
  </div>';

  mysql_close($con);
}
#require_once THEMES."templates/footer.php";
?>



der eintrag klappt auch jut nach einigen tests:
www.septron.de/images/jts3sm/tsregisterdbzweivoschau.png


für diese config die ja auf db zwei einträgt habe ich halt die 20% als problemfall denn das Template von mir wird nicht angezeigt könnte an der zweit db liegen deswegen musste ich die dinge mit einer # versehen.
www.septron.de/images/jts3sm/tsregistererfolgreichvoschau.png


ich werde aber dennoch schauen das ich es in meiner db einbaue so das ich die einzeige meines Templates eventuell mit drin habe wenn ein Mitglied sich Erfolgreich angelegt hat und von der übersicht her (dann muss ich nicht immer von db A nach db B switchen aber das liegt noch in den sternchen ;)

lg Septron
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
Springe ins Forum: