|
You last visited: Today at 17:27
Advertisement
[Release] Votescript
Discussion on [Release] Votescript within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
01/09/2012, 23:12
|
#1
|
elite*gold: 0
Join Date: May 2011
Posts: 5,086
Received Thanks: 3,471
|
[Release] Votescript
Heya,
Ich weiß jetzt nicht, ob die meisten mich dafür hassen werden, aber ist ja im endeffekt eh' schnuppe. ;D
Ich stell' mich mal kurz vor, da mich hier eh' keiner mehr kennt:
Ich bin Xijezu, Leiter von DarknessFight, des beliebtesten Rappelz PServer's.
Damals war DarkessFight noch FlyFF-Seitig, da ich aber die Lust daran verloren habe, und ich nach ewigem suchen dann Rappelz-Files gefunden habe, bin ich dann entgültig darauf umgestiegen.
Meine Skills an sich sind mittlerweile (fast) fließendes C# coding, PHP-Coding, teile von Javascript, und noch andere sachen wie CSS, VB, etc.
Naja, kommen wir nun mal zur Sache:
Da meine Seite ein Votescript besitzt, hatte ich mir mal gedacht, ich werde es Releasen. Aber definitiv nicht in der Rappelz-Section, nachdem eh' all' die Dev's "geflohen" sind. Da ich damals noch relativ aktiv in FlyFF war, hatte ich mir gedacht, ich release es hier.
Wichtig:
Ihr benötigt ein Login-Script. Falls ihr noch keins habt, könnt ihr es hier bekommen:
Zum Votescript:
- Funktioniert im Prinzip für jede VoteSeite
- Einfach zu verstehendes Javascript + PHP
- Voting nur alle 6 Stunden möglich (natürlich änderbar)
- Sehr simpel gehalten.
Code:
Code:
// Dieser Part muss in den Header eurer Datei
<script src="http://code.jquery.com/jquery-latest.js"></script>
// Dieser Part muss am besten zum Schluss in die Datei
<script language="JavaScript">
$('#votelink').click(function (){
$.post("vote.script.php?user=<?php echo $_SESSION["username"]; ?>&ip=<?php echo $_SERVER['REMOTE_ADDR']; ?>");
});
</script>
vote.script.php ist im dem Fall der Name der .php-Datei, die das ganze Verarbeitet.
$_SESSION["username"] ist der Accountname, der in der Session gespeichert ist (Ich meine, ich hätte hier mal 'nen Login-Script released, sollte eigentlich im Homepage-AddOn's Therad dabei seiN).
$_SERVER['REMTE_ADDR'] gibt einfach nur die IP-Adresse aus.
$('#votelink').click(function (){}); bezeichnet im Prinzip einfach nur die ID des Links (<a id="">, in dem Fall <a id="votelink">), und das "click()"-Event (Wenn ein User auf den Link klickt... ^^
Dazu gesagt: Haut mich nicht für den Javascript-Part, ich hasse Javascript, werde es nie können, und hab' mittlerweile, wie oben schon gesagt, nur Bruchteile davon im Kopf. Javascript ist mir einfach zu doof.
Die PHP-Datei:
PHP Code:
<?php require_once('db.class.php'); $conn = new datbase("Homepage"); $username = $_GET['user']; $ip = $_GET['ip']; if($username != '') { $query_one = sqlsrv_query($conn->connection, "SELECT login_name FROM vote WHERE DATEDIFF(hh, time, GETDATE()) <= 6 AND login_name = '$username'"); $row_one = sqlsrv_fetch_array($query_one); if($row_one['login_name'] == '') { $query_two = sqlsrv_query($conn->connection, "SELECT login_name FROM vote WHERE DATEDIFF(hh, time, GETDATE()) <= 6 AND ip = '$ip'"); $row_two = sqlsrv_fetch_array($query_two); if($row_two['login_name'] == '') { sqlsrv_query($conn->connection, "DELETE FROM vote WHERE login_name = '$username' OR ip = '$ip'"); sqlsrv_query($conn->connection, "INSERT INTO vote ([time], [login_name], [ip]) VALUES (GETDATE(), N'$username', N'$ip')"); $conn->close(); $conn = new datbase("Auth"); sqlsrv_query($conn->connection, "UPDATE [accounts] SET votepoints = (CASE WHEN votepoints IS NULL THEN 1 ELSE (votepoints +1) END ) WHERE login_name = '$username' "); $conn->close(); } } } ?>
So, hier sei gesagt, dies ist einfach nur eine Basic Version von dem, was ich in meinem Script habe, aber es funktioniert.
Ich habe hier 2 verschiedene Datenbanken benutzt, Auth und Homepage, da Auth für Rappelz benutzt wird und Homepage einfach meine Homepage-Tabellen hat.
Ihr müsst es dann halt für FlyFF umschreiben, meiner Meinung nach einfach nur die Spalte "Votepoints" in die Account-Table (oder die andere, die die Permission & co beinhaltet *name vergessen*) hinzufügen.
Ich hab' die Verbindung mit einer einfachen SQL-Klasse gelöst, für diejenigen, die wirklich zu faul sind, das Script umzuschreiben, hier auch noch das Klassen-Script. xD
PHP Code:
<?php class datbase{ public $pass = "PASSWORD"; public $connection; public function __construct($database){ $serverName = "(local)"; $connectionInfo = array( "Database"=>$database, "UID" => "sa","PWD" => $this->pass); $this->connection = sqlsrv_connect( $serverName, $connectionInfo) or die("Fatal Error - Can't connect to Database ".$database."!!!"); } public function close(){ if(is_resource($this->connection)) { sqlsrv_close($this->connection); } } } ?>
Zum schluss noch der Aufbau der Vote-Table:
Code:
CREATE TABLE [dbo].[Vote](
[time] [datetime2](7) NOT NULL,
[login_name] [varchar](50) NOT NULL,
[IP] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
Zu guter letzt:
Falls es hier schon sowas in der Section gibt, haut mich nicht dafür, war zu Faul mal zu suchen. Da ich das aber vorher nirgend's gefunden hatte, dachte ich, das es das hier noch nicht gibt.
Außerdem entschuldigt den "Unsauberen" Code, denn ich Code einfach nur auf meine Art, auch wenn es für manche Schlecht aussieht, aber ich mag's einfach.
Und abschließender Satz zum Vote.Script.php:
Ich weiß, ich hätte das am Anfang mit sqlsrv_has_rows / sqlsrv_num_rows / whatever lösen können, aber komischerweise war ich entweder zu Doof dafür, oder es hat einfach nicht funktioniert. ;D
Falls ihr irgendwelche Fragen habt, postet einfach, werde natürlich hier reinschauen.
Grüße,
Xijezu.
Ach, bevor ich es vergesse, am Ende könnt ihr das ganze dann so aufrufen:
Code:
<a href="http://topofgames.com/index.php?do=votes&id=36202" id="votelink"></a>
|
|
|
01/09/2012, 23:29
|
#2
|
elite*gold: 3
Join Date: Oct 2010
Posts: 276
Received Thanks: 103
|
Xijezu mein alter Freund 
Nice Release, aber wieso immernoch in der Flyff Szene?
|
|
|
01/09/2012, 23:32
|
#3
|
elite*gold: 0
Join Date: May 2011
Posts: 5,086
Received Thanks: 3,471
|
Quote:
Originally Posted by Chyukasame
Xijezu mein alter Freund 
Nice Release, aber wieso immernoch in der Flyff Szene?
|
Ja, so sieht man sich wieder.
Ich sag's mal so:
Momentan habe ich nichts zu tun, außer den Rappelz-Clienten außeinander zu nehmen, nen kack Resource-Editor für unser Dev-Team schreiben, was auch schon fast fertig ist, und abwarten, bis NCarbon mit den Emulator fertig ist (scheiß Rappelz hat kein Source Code mitgeliefert. xD).
Fazit:
Langeweile.
Brauche mittlerweile auch mal wieder was zu tun, und da hab' ich mir gedacht, ich treib' mich vielleicht hier mal wieder ein bisschen rum, und schau mal, ob ich hier wieder was beisteuern kann, da des in meiner Section da unten einfach nicht mehr möglich ist bei den kack Leechern.
|
|
|
01/09/2012, 23:49
|
#4
|
elite*gold: 120
Join Date: Aug 2010
Posts: 7,448
Received Thanks: 2,756
|
Zu leicht manipulierbar, schöner ists die Voteseiten per Ajax zu laden und dann erst die Punkte oder was verteilen, wenn das Captcha richtig eingegeben wurde und somit der Vote wirksam war...
|
|
|
01/09/2012, 23:52
|
#5
|
elite*gold: 0
Join Date: May 2011
Posts: 5,086
Received Thanks: 3,471
|
Quote:
Originally Posted by 〤Che〤
Zu leicht manipulierbar, schöner ists die Voteseiten per Ajax zu laden und dann erst die Punkte oder was verteilen, wenn das Captcha richtig eingegeben wurde und somit der Vote wirksam war...
|
Vollkommen richtig, trotzdem sehe ich dabei kein Sinn, den Vote "manipulieren" zu müssen, wenn man eh' nur alle 6 Stunden Pro Account/IP Voten kann und man dort einfach nur'n Captcha eingeben muss.
Wie gesagt, seht dieses Script als kleines Basic an, daran kann man, wie du ja schon 'nen Beispiel genannt hast, viel machen (vorallem wenn man dieses dumme Javascript beherrscht) ;D
|
|
|
01/09/2012, 23:54
|
#6
|
elite*gold: 3
Join Date: Oct 2010
Posts: 276
Received Thanks: 103
|
Seid doch mal alle dankbar dass er überhaupt was macht außer sich bei weiblichen Gms chancen zu holen o.0 (spaß xD)
Also ich finde es in Ordnung was er machte und dafür hat er auch ein Thx verdient.
Wir können viele von solchen leuten wie Xijezu haben
|
|
|
01/10/2012, 00:06
|
#7
|
elite*gold: 0
Join Date: Oct 2007
Posts: 491
Received Thanks: 732
|
Quote:
Originally Posted by Chyukasame
Seid doch mal alle dankbar dass er überhaupt was macht außer sich bei weiblichen Gms chancen zu holen o.0 (spaß xD)
Also ich finde es in Ordnung was er machte und dafür hat er auch ein Thx verdient.
Wir können viele von solchen leuten wie Xijezu haben
|
Nun, man könnte auch die Voteskripts aus den releasten Homepages hinausziehen (Um nur 2 zu nennen: Meine, die von Stefan).
Wie aber gesagt worden ist: Zu leicht zu manipulieren, es wird in deinem PHP-Skript nicht einmal überprüft, ob die IP XYZ schon gevotet hat. Da braucht man nicht einmal Ajax für, das kann man mit dem Zurück-Knopf des Browsers machen, insofern ein 0815-Antispamdings eingebaut ist. (Sorry, nicht richtig gelesen; habe das Skript nämlich nur überflogen)
Außerdem setzt du vorraus, dass die Homepage über ein Loginpanel verfügt, indem die Session-Variable "username" auch exakt mit der Account-ID übereinstimmt - was aber, wenn in username bspw. der Charaktername steht oder es gar kein Loginpanel gibt? Da fehlt dann eben der entscheidende Hinweis, dass
Quote:
Originally Posted by Xijezu
(Ich meine, ich hätte hier mal 'nen Login-Script released, sollte eigentlich im Homepage-AddOn's Therad dabei seiN)
|
dein Loginpanel Pflicht ist.
|
|
|
01/10/2012, 00:24
|
#8
|
elite*gold: 0
Join Date: May 2011
Posts: 5,086
Received Thanks: 3,471
|
Quote:
Originally Posted by Xxl3lubbs
Nun, man könnte auch die Voteskripts aus den releasten Homepages hinausziehen (Um nur 2 zu nennen: Meine, die von Stefan).
Wie aber gesagt worden ist: Zu leicht zu manipulieren, es wird in deinem PHP-Skript nicht einmal überprüft, ob die IP XYZ schon gevotet hat. Da braucht man nicht einmal Ajax für, das kann man mit dem Zurück-Knopf des Browsers machen, insofern ein 0815-Antispamdings eingebaut ist. (Sorry, nicht richtig gelesen; habe das Skript nämlich nur überflogen)
Außerdem setzt du vorraus, dass die Homepage über ein Loginpanel verfügt, indem die Session-Variable "username" auch exakt mit der Account-ID übereinstimmt - was aber, wenn in username bspw. der Charaktername steht oder es gar kein Loginpanel gibt?
|
Wie gesagt, das ist alles eine Frage der Anpassung. Ich habe es für mich auf die Accounts übernommen.
Man kann es natürlich auch ganz simpel zu den Characteren machen, indem du einfach die Spalte Votepoints zu den Characteren hinzufügst, und die dort einfügen lässt.
Code:
sqlsrv_query($conn->connection, "UPDATE [Character] SET votepoints = (CASE WHEN votepoints IS NULL THEN 1 ELSE (votepoints +1) END ) WHERE name = '$username' ");
Nur ein ganz simples beispiel.
Wenn die Seite, die dieses Script einbinden will, kein Loginscript hat, dann macht das alles natürlich auch 0 Sinn, da das Script hier wirklich einfach als Basic für einen Direkt-Vote geht, ohne vorher seinen Account/Character jedes mal erneut angeben zu müssen.
Quote:
Da fehlt dann eben der entscheidende Hinweis, dass
Zitat:
Zitat von Xijezu
(Ich meine, ich hätte hier mal 'nen Login-Script released, sollte eigentlich im Homepage-AddOn's Therad dabei seiN)
dein Loginpanel Pflicht ist.
|
Nein. mein Loginscript ist nicht Pflicht. Dieses Script greift hier einfach nur auf die SESSION-Variable "username" zu, die man aber in diesem Script sehr leicht ändern kann.
Aus $_SESSION["username"] wird $_SESSION["flyff"] oder $_SESSION["character"], ganz einfaches Prinzip.
$_SESSION ist, soweit ich es weiß, die weitaus meist genutzte (Frag mich jetzt bitte nicht, ob es eine andere Möglichkeit gibt, ich gehe aber mal davon aus) Möglichkeit, eine Login-Session zu machen.
Und bitte, diese eine Variable zu ändern, ist doch hier nicht schwer. Das heißt dann, das mein Loginscript hier keine Pflicht ist
|
|
|
01/10/2012, 00:31
|
#9
|
elite*gold: 0
Join Date: Oct 2007
Posts: 491
Received Thanks: 732
|
Naja, da der Release auch ganz sicher von unerfahrenen Personen gelesen wird, die in PHP/HTML ggf. nicht so bewandert sind, sollte man solche Hinweise, dass die Session und damit auch ein Logindings benötigt wird, ruhig beim Namen nennen. Ich lese zumindest von einem derartigen Hinweis dort oben nichts, deswegen meine ich nur so. ^^
|
|
|
01/10/2012, 00:37
|
#10
|
elite*gold: 0
Join Date: May 2011
Posts: 5,086
Received Thanks: 3,471
|
Quote:
Originally Posted by Xxl3lubbs
Naja, da der Release auch ganz sicher von unerfahrenen Personen gelesen wird, die in PHP/HTML ggf. nicht so bewandert sind, sollte man solche Hinweise, dass die Session und damit auch ein Logindings benötigt wird, ruhig beim Namen nennen. Ich lese zumindest von einem derartigen Hinweis dort oben nichts, deswegen meine ich nur so. ^^
|
Gut, überredet. ^^ Hab mal 'nen Hinweiß eingetragen
|
|
|
01/10/2012, 12:55
|
#11
|
elite*gold: 1
Join Date: Jun 2011
Posts: 344
Received Thanks: 326
|
Bild wäre nice :3
|
|
|
 |
Similar Threads
|
[S] Votescript + Einrichtung
12/22/2011 - Minecraft Trading - 1 Replies
Hey ;)
Ich verkaufe ein Votescript, bzw richte für euch eins ein. Der Preis ist verhandelbar oder macht mir ein Angebot.
Features :
Man kann voten wenn :
- man nicht eingeloggt ist
- man eingeloggt ist (1x in 12 Stunden )
- man eine neue Ip-Adresse bezogen hat.
|
[HELP]Votescript 25€ PSC !!!!!
09/14/2011 - Metin2 Trading - 4 Replies
Hallo Com!
Ich brauche hilfe beim vote.php ich bekomm es nicht hin, wenn ich mich anmelde und vote steht dort "sie müssen für den bereich angemeldet sein" obwohl ich angemeldet bin >_<
Zahle 25 €uro PSC bei erfolg. Einfach PN senden >_<
Danke
Delicia <3
|
neverendless votescript/bot
12/04/2009 - WoW Bots - 0 Replies
Hi, hier stand am forum nicht dran, also frag ich ma ^^
Suche das votescript für NeverendlessWoW wo man seine Acc-Daten eingibt, es irgendwo hochlädt und es dann automatisch für einen votet.
Ich weiß dass es existiert weil das eine aus meiner Guilde hatte... nu hat se leider server geleaved und ich bekomm keine Votepoints mehr :rolleyes:
Danke für hilfe.
|
All times are GMT +1. The time now is 17:34.
|
|