Da vielen Stefan Pfeifer und Sapphire Flyff nutzen und fast jedem Teammitglied zugang zum Admin Panel geben und manche es ausnutzen, Items ohne log zu verschicken gibt es hier nun ein Update, damit nicht mehr gepusht wird :P
1. Ihr geht in euer Admin Panel und sucht die datei account_senditem.php
2. Ihr öffnet die Datei und sucht nach if(isset($_POST['senditem_sbm'])) {
3. Ihr ändert die funktion von
PHP Code:
if(isset($_POST['senditem_sbm'])) { odbc_exec($odbc_connect, 'USE [' . $_CONFIG['db_databases']['chr'] . ']'); $charid = odbc_exec($odbc_connect, 'SELECT m_idPlayer FROM [CHARACTER_TBL] WHERE m_szName=\''.mssql_escape_string($_POST['character']).'\''); if(odbc_num_rows($charid) == 1) { odbc_exec($odbc_connect, 'INSERT INTO [ITEM_SEND_TBL]( m_idPlayer, serverindex, Item_Name, Item_count, m_nAbilityOption, m_bItemResist, m_nResistAbilityOption, idSender, nPiercedSize ) VALUES( \''.mssql_escape_string(odbc_result($charid, 'm_idPlayer')).'\', \'01\', \''.mssql_escape_string($_POST['itemname']).'\', \''.mssql_escape_string($_POST['count']).'\', \''.mssql_escape_string($_POST['upgrade']).'\', \''.mssql_escape_string($_POST['element']).'\', \''.mssql_escape_string($_POST['elementupgrade']).'\', \'0000000\', \''.mssql_escape_string($_POST['piercing']).'\' )'); echo '<div class="success">The item has successfully been send!</div>'; } else { echo '<div class="fail">Character does not exist!</div>'; } }
zu
PHP Code:
if(isset($_POST['senditem_sbm'])) { $charid = odbc_exec($odbc_connect, 'SELECT m_idPlayer FROM [' . $_CONFIG['db_databases']['chr'] . '].dbo.[CHARACTER_TBL] WHERE m_szName=\''.mssql_escape_string($_POST['character']).'\''); $charname = odbc_exec($odbc_connect, 'SELECT m_szName FROM [' . $_CONFIG['db_databases']['chr'] . '].dbo.[CHARACTER_TBL] WHERE m_szName=\''.mssql_escape_string($_POST['character']).'\''); if(odbc_num_rows($charid) == 1) {
$ItemSendLog = ' INSERT INTO [' . $_CONFIG['db_databases']['web'] . '].dbo.[LOG_SENDITEM] ( von, an, itemname, count, upgrade, element, elementupgrade, piercing ) VALUES( \''.mssql_escape_string(odbc_result($charname, 'm_szName')).'\', \''.mssql_escape_string($_POST['itemname']).'\', \''.mssql_escape_string($_POST['count']).'\', \''.mssql_escape_string($_POST['upgrade']).'\', \''.mssql_escape_string($_POST['element']).'\', \''.mssql_escape_string($_POST['elementupgrade']).'\', \''.mssql_escape_string($_POST['piercing']).'\' ) '; if(@odbc_exec($odbc_connect, $ItemSendToCharakter) AND @odbc_exec($odbc_connect, $ItemSendLog)) { echo createMessage('Das Item wurde erfolgreich versendet', 'success'); } else { echo createMessage('Das Item konnte leider nicht versendet werden', 'fail'); } } else { echo '<div class="fail">Character does not exist!</div>'; } }
4. Dann geht ihr in eure Datenbank und führt dieses Script aus
Code:
USE [WEBSITE_DBF]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[LOG_SENDITEM](
[sid] [int] IDENTITY(1,1) NOT NULL,
[von] [varchar](50) NULL,
[an] [varchar](50) NULL,
[itemname] [varchar](50) NOT NULL,
[count] [int] NOT NULL,
[upgrade] [int] NOT NULL,
[element] [int] NOT NULL,
[elementupgrade] [int] NULL,
[piercing] [int] NULL,
CONSTRAINT [web_senditemlogs] PRIMARY KEY CLUSTERED
(
[sid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
Nun lassen wir es noch wiedergeben in den den "Diverse Logs"
Dafür geht ihr in die list_database.php und fügt unter
Ey Leute, nehmt es mir nicht böse aber meine php Erfahrung ist nicht die Beste und es ist nur ein Release der vielen Admins helfen kann und auch gut funktioniert.
Ich hatte gerade ne OP, doch ihr nehmt echt keinen halt mich nur fertig zu machen O.o
Ich sehe hier gerade nicht, dass du von uns fertig gemacht wirst.
Ich habe dir als vorschlag gesagt, dass du die Werte als Hex Values abschicken kannst (natürlich ausgenommen sind Zahlen) und du könntest dir das ansehen und dir dann auch aneignen wie das geht (Erfahrung++).
Mirko hat dann dazu gesagt, dass man die Werte die man bekommt im Browser durchlaufen lassen und so escapen lassen kann.
Twilight hat geschrieben, dass man Prozeduren verwenden kann welche sp_executesql nutzen, da dort bereits escaped wird. Könntest du dir auch ansehen und wieder dazulernen (Erfahrung++)
Könntest also hier zwei neue sachen mindestens lernen.
Und das du eine OP hattest denke ich interessiert nicht irgendjemanden und kann ggf. ja wohl auch keiner wissen oder etwa doch?
Ich sehe hier gerade nicht, dass du von uns fertig gemacht wirst.
Ich habe dir als vorschlag gesagt, dass du die Werte als Hex Values abschicken kannst (natürlich ausgenommen sind Zahlen) und du könntest dir das ansehen und dir dann auch aneignen wie das geht (Erfahrung++).
Mirko hat dann dazu gesagt, dass man die Werte die man bekommt im Browser durchlaufen lassen und so escapen lassen kann.
Twilight hat geschrieben, dass man Prozeduren verwenden kann welche sp_executesql nutzen, da dort bereits escaped wird. Könntest du dir auch ansehen und wieder dazulernen (Erfahrung++)
Könntest also hier zwei neue sachen mindestens lernen.
Und das du eine OP hattest denke ich interessiert nicht irgendjemanden und kann ggf. ja wohl auch keiner wissen oder etwa doch?
Oh man sago ._.
Warum kann ich das denn nicht so lassen sondern muss erst wieder googeln was escapen und sp_executesql ist....
Du benutzt mssql_escape_string und weißt nicht, was escapen ist?
Ist ein bisschen schwach, wenn man sich mit Webentwicklung befasst.
An sich ist sowas ja nett, dann kann man zumindest nachvollziehen, was gekauft worden ist. Jedoch finde ich die Bedingung, dass beides funktionieren muss nicht gut (also dass es mit AND verknüpft wurde) - denn egal was kommt, eine der beiden Querys wird dann trotzdem ausgeführt.
Bezieht sich auf folgende Zeile:
Code:
if(@odbc_exec($odbc_connect, $ItemSendToCharakter) AND @odbc_exec($odbc_connect, $ItemSendLog)) {
Ich persönlich würde es lieber verschachteln und jede Bedingung einzeln prüfen.
Wieso gekauft?
Nein es geht um das Item Versenden im ACP.
Dies haben viele immer ausgenutzt als GM oder Developer da es nicht geloggt wird.
Da ich es dann oft mit bekam und es mich ärgerte das gepusht wurde ohne das man sehen konnte wer es war habe ich ein Log dazu geschrieben.
Für den allgemeinen Shop gibt es schon ein log ;D
LOG_GIFT
Item versenden fehler 05/11/2014 - Flyff Private Server - 3 Replies Hey leuts, die meisten kennen ja von der Sapphire FlyFF Homepage die Item versenden funktion im ACP.
Da dieses aber nicht geloggt wird habe ich eine TBL zsm gestellt die alles loggt.
Aber ich bekomme immer einen Fehler bei meiner funktion, ich finde aber den Fehler nicht, findet jemand von euch den Fehler?
(Vor der Veränderung)
if(isset($_POST)) {
odbc_exec($odbc_connect, 'USE . ']');
[Search] Website with Web Item Mal 11/14/2012 - Shaiya - 6 Replies Hi,
i search for a Website with Register, GuildRank, PvP Rank, WebItemal u.s.w
[Help]Item mall on the website 04/22/2012 - Shaiya Private Server - 9 Replies well just for fun we too want to make this work. is there a php odbc script out there about this?
don't need to be abel to buy it but ppl for one reason just neeed to show it. but if you have a login funksion i'm not saying no to that heheh..
if pplø don't just want to share it how about giving a tut on how to do it?
or give me a mail /priv message here for other options:-)