Profilfield ts3register
|
Septron |
Geschrieben am 11. Juli 2015 12:05:35
|
|
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:
<?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
$data['user_ts3register']
zwar abgefragt und direkt an die andere DB übergeben wird wo dementsprechend die tabellen vorhanden sind die so in etwa ausschauen:
$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:
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)
hier sind die manuellen einträge durch das extra webinterface:
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. Juli 2015 15:23:50
|
Information: |
PHP Version: 8.2.x • MySQL Version: 5.7 • PHP-Fusion: IUP-FIX-PHP8 |
|
|
|
Rolly8-HL |
Geschrieben am 11. Juli 2015 14:29:41
|
|
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?
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
Septron |
Geschrieben am 11. Juli 2015 15:26:43
|
|
Hallo,
ich will ja nicht den inhalt von db1 und db 2 abfragen sondern soll er es von
$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
|
Information: |
PHP Version: 8.2.x • MySQL Version: 5.7 • PHP-Fusion: IUP-FIX-PHP8 |
|
|
|
Dat Tunes |
Geschrieben am 11. Juli 2015 17:38:23
|
|
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 !
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
Septron |
Geschrieben am 11. Juli 2015 18:05:29
|
|
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:
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ö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
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 :(
mein problem nun 2 leere felder sprich
$data['user_ts3register']
und
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:
$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. Juli 2015 20:52:43
|
Information: |
PHP Version: 8.2.x • MySQL Version: 5.7 • PHP-Fusion: IUP-FIX-PHP8 |
|
|
|
John Doe |
Geschrieben am 11. Juli 2015 20:59:08
|
|
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
Dieses Mitglied wurde gelöscht!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
Septron |
Geschrieben am 11. Juli 2015 22:50:10
|
|
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
lg Septron
|
Information: |
PHP Version: 8.2.x • MySQL Version: 5.7 • PHP-Fusion: IUP-FIX-PHP8 |
|
|
|
Anonymer Benutzer |
Geschrieben am 11. Juli 2015 23:08:48
|
|
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. |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
Septron |
Geschrieben am 12. Juli 2015 10:44:02
|
|
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:
<?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(" Teamspeak³ UID & Benutzernamen Registrieren ");
#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³ UID Registrieren</h1>
<p>Hier könnt ihr eure Teamspeak³ UID so wie euren Teamspeak³ 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³ Ü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³ 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³ 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³ UID herausfinden</span></h3>
</div>
<div class="panel-body" align="center">
<b>1. Schritt:</b> Öffne Deinen TS³ 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ähle den Punkt "Identitä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³ Identität und fü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:
die entsprechende config schaut so aus:
<?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ück zur Seite</a></p>
</div>
</div>';
mysql_close($con);
}
#require_once THEMES."templates/footer.php";
?>
der eintrag klappt auch jut nach einigen tests:
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.
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
|
Information: |
PHP Version: 8.2.x • MySQL Version: 5.7 • PHP-Fusion: IUP-FIX-PHP8 |
|
|