|
You last visited: Today at 16:50
Advertisement
TreasureCheck Klasse
Discussion on TreasureCheck Klasse within the Coding Releases forum part of the Coders Den category.
10/24/2015, 22:07
|
#1
|
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
|
TreasureCheck Klasse
Hallo,
hier ein kleiner Release:
Mit dieser Klasse könnt ihr prüfen, ob eine Treasure schon gekauft wurde oder nicht. (  )
Bei Username muss ein Epvp Accountname und bei Password ein Epvp Password eingetragen werden
PHP Code:
<?php
/** * This class performs the login to the site an determines the treasure state */ class TreasureCheck {
/** * Forum URL * @var string */ private $url = "http://www.elitepvpers.com/forum/";
/** * Treasure Link * @var string */ private $treasure = "http://www.elitepvpers.com/theblackmarket/treasure/";
/** * Username * @var string */ private $username = "";
/** * Password * @var string */ private $password = ""; /** * Content of treasure page * @var string */ private $treasureContent = null; /** * Status of treasure * @var boolean */ private $treasureAvailable = false;
/** * Requires Treasure URL as parameter * @param string $url */ public function __construct($url) { //add treasure id to the treasure link $this->treasure = $url;
//perform login + request $this->treasureContent = $this->performRequest();
//check if treasure is avaiable $this->parseTreasureStatus(); } /** * Returns Treasure status * @return boolean */ public function getTreasureStatus() { return $this->treasureAvailable; } /** * Parsed Treasure ID form URL * @param string $url * @return boolean */ private function parseTreasureID($url) { $path = parse_url($url); $id = explode('/', $path['path']); return $id[3]; } /** * Returns status of Treasure * @return boolean */ private function parseTreasureStatus() { libxml_use_internal_errors(true); //create new DOM Object $dom = new DOMDocument; //Load HTml into the DOM object $dom->loadHTML($this->treasureContent); //remove white spaces $dom->preserveWhiteSpace = false; //create new XPath Object $finder = new DOMXPath($dom); $rows = $finder->query('//*[@class="cwalt"]/table/tr'); //go through each row and check status foreach ($rows as $row) { $cols = $row->getElementsByTagName('td'); if ($cols->item(6)->nodeValue == 'n/a') { $this->treasureAvailable = true; return true; } $this->treasureAvailable = false; return false; } }
/** * Performs Elitepvpers Login and returns content of the treasure page * @return string */ private function performRequest() { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . 'veri.txt'); curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . 'veri.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_REFERER, $this->url . 'index.php'); curl_setopt($ch, CURLOPT_URL, $this->url . 'login.php?do=login'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "vb_login_username=$this->username&vb_login_password&s=&securitytoken=guest&do=login&vb_login_md5password=" . md5($this->password) . "&vb_login_md5password_utf=" . md5($this->password)); $exec = curl_exec($ch);
curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_REFERER, $this->url . 'login.php?do=login'); curl_setopt($ch, CURLOPT_URL, $this->url . 'clientscript/vbulletin_global.js?v=373'); $exec = curl_exec($ch);
curl_setopt($ch, CURLOPT_REFERER, $this->url . 'login.php?do=login'); curl_setopt($ch, CURLOPT_URL, $this->url . 'index.php'); $exec = curl_exec($ch);
curl_setopt($ch, CURLOPT_REFERER, $this->url . 'index.php'); curl_setopt($ch, CURLOPT_URL, $this->treasure); $exec = curl_exec($ch); return $exec; }
}
Anschließen muss einfach dieser Code ausgeführt werden:
PHP Code:
$tc = new TreasureCheck('url zur treasure'); $tc->getTreasureStatus();
Diese Klasse könnt ihr in euren Projekten verwenden.
Grüße
~ JWonderpig ~
|
|
|
11/16/2015, 22:05
|
#2
|
elite*gold: 0
Join Date: Nov 2015
Posts: 485
Received Thanks: 19
|
Guter Release
|
|
|
11/17/2015, 22:02
|
#3
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,117
Received Thanks: 2,436
|
Leider nicht kompatible mit Usern die Sonderzeichen im Namen haben, wie bei mir z.b  Habe es mal mit dem Account meiner Freundin getestet(keine Sonderzeichen) und dort geht auch nichts  Schau dir mal  an.
Kleiner Tipp, bemüh dich deine Methoden sowie Variablen namen DEUTLICH zu benennen.
Unter $treasureContent würde ich z.b verstehen das es der Inahlt vom Treasure ist (ob als Entity oder als Array oder als Json wäre ja relativ egal...) aber das es Html ist kommt man erst drauf wenn man nochmal schaut...
Genauso bei performRequest => Was für ein Request ?Ein Paar mehr constanten wären auch gut gewesen z.b fürs zusammen bauen der Url.
Immer dran denken, schön kurz halten, keinen doppelten Code wenn möglich und so schreiben das wenn man eine Sache ändern will das alles noch geht und man nicht 10 Sachen ändern muss.
Und so weiter...
|
|
|
11/19/2015, 22:56
|
#4
|
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
|
Quote:
Originally Posted by .ƒaℓsє.
Leider nicht kompatible mit Usern die Sonderzeichen im Namen haben, wie bei mir z.b  Habe es mal mit dem Account meiner Freundin getestet(keine Sonderzeichen) und dort geht auch nichts  Schau dir mal  an.
Kleiner Tipp, bemüh dich deine Methoden sowie Variablen namen DEUTLICH zu benennen.
Unter $treasureContent würde ich z.b verstehen das es der Inahlt vom Treasure ist (ob als Entity oder als Array oder als Json wäre ja relativ egal...) aber das es Html ist kommt man erst drauf wenn man nochmal schaut...
Genauso bei performRequest => Was für ein Request ?Ein Paar mehr constanten wären auch gut gewesen z.b fürs zusammen bauen der Url.
Immer dran denken, schön kurz halten, keinen doppelten Code wenn möglich und so schreiben das wenn man eine Sache ändern will das alles noch geht und man nicht 10 Sachen ändern muss.
Und so weiter...
|
Danke für das Feedback.
Jooooa, man hätte es semantisch besser machen können, ist aber halt ein Free-Release und wurde in ca. 10-20 Minuten geschrieben
Habe nicht so viel Wert auf Funkstions- & Variablennamen gelegt, da der User nur eine Funktion aufruft. Was genau meinst du mit Konstanten?
Ich sehe da irgendwie keinen Sinn drin?
|
|
|
11/20/2015, 18:09
|
#5
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,117
Received Thanks: 2,436
|
Quote:
Originally Posted by ~ JWonderpig ~
Danke für das Feedback.
Jooooa, man hätte es semantisch besser machen können, ist aber halt ein Free-Release und wurde in ca. 10-20 Minuten geschrieben
Habe nicht so viel Wert auf Funkstions- & Variablennamen gelegt, da der User nur eine Funktion aufruft. Was genau meinst du mit Konstanten?
Ich sehe da irgendwie keinen Sinn drin? 
|
Mit konstanten meine ich z.b "www.elitepvpers.com" etc. sprich was öffters vorkommt und evtl auch in anderen Classen vorkommt, wenn du das ändern willst musst du nur die konstante ändern und sonst nichts.
Sprich immer so programmieren das doppelter Coder vermieden wird und Anpassungen leicht durch zuführen sind.Egal ob kleines oder Großes Projekt, direkt angewöhnen, geht genauso schnell als wenn du es unsauber machst
Was wollen wir eigentlich mit der Klasse wenn diese (auch ohne Sonderzeichen) nicht funktioniert ?
|
|
|
11/20/2015, 18:21
|
#6
|
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
|
Quote:
Originally Posted by .ƒaℓsє.
Was wollen wir eigentlich mit der Klasse wenn diese (auch ohne Sonderzeichen) nicht funktioniert ?
|
Im Beispiel klappt es, daher weiß ich nicht wirklich wieso es bei dir nicht klappt.
|
|
|
11/20/2015, 22:00
|
#7
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,117
Received Thanks: 2,436
|
Quote:
Originally Posted by ~ JWonderpig ~
Im Beispiel klappt es, daher weiß ich nicht wirklich wieso es bei dir nicht klappt.
|
Naja ich Habe das Beispiel kopiert, username, passwort und Treasure Link geändert und es klappt nicht...
Habe mir dann mal den output des ersten curl aufruf ausgeben lassen und dort ist der user nicht eingeloggt^^
€: Habe es mit anderen Treasures probiert, also bei denen die nicht gekauft wurden bekomme ich eine "1" und bei gekauft bekomme ich nichts zurück. €²: Habe mir den Code nun nochmal genauer angeschaut.... Bitte mach so keine prüfungen auf urls.... kein wunder das es nicht geht^^
ohne "http://" geht es nicht mehr nutz liker regex für das ganze ->
|
|
|
11/20/2015, 22:33
|
#8
|
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
|
Quote:
Originally Posted by .ƒaℓsє.
Naja ich Habe das Beispiel kopiert, username, passwort und Treasure Link geändert und es klappt nicht...
Habe mir dann mal den output des ersten curl aufruf ausgeben lassen und dort ist der user nicht eingeloggt^^
€: Habe es mit anderen Treasures probiert, also bei denen die nicht gekauft wurden bekomme ich eine "1" und bei gekauft bekomme ich nichts zurück.
|
Du musst den Treasurelink auch nicht ändern. Der Link muss nur in den Parameter.
|
|
|
11/21/2015, 00:49
|
#9
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,117
Received Thanks: 2,436
|
Quote:
Originally Posted by ~ JWonderpig ~
Du musst den Treasurelink auch nicht ändern. Der Link muss nur in den Parameter.
|
Das meinte ich ja damit, aber schau dir mein zweiten edit an
|
|
|
 |
Similar Threads
|
TreasureCheck *Beta*
10/19/2015 - Freebies - 0 Replies
Hallo,
Jeder kennt es: Es stehen viele Treasures zur Verfügung und man möchte eine Treasure kaufen, jedoch muss man erst eine noch nicht gekaufte Treasure finden, falls es überhaupt noch welche gibt!
Damit ist jetzt Schluss:
Einfach die Links eingeben und den generierten Code in den Thread einfügen. Ein Skript prüft, ob die Treasure bereits gekauft wurde.
Beispiel (Bitte nicht kaufen ;) ):...
|
Biete Mathehilfe bis zur 10. Klasse Real/ 9.Klasse Haupt
03/13/2012 - School & Education - 0 Replies
Wenn ihr Probleme mit einer aufgabe habt, schickt mir eine PM. Kostet nur 1eGold. Vielleicht auch nichts :D Kommt ganz auf die aufgaben drauf an.
|
Volkswechsel alte Klasse(Classic)->neue Klasse(Cata)
01/30/2011 - World of Warcraft - 13 Replies
Hi,
Ich würde meinen Untoten Magier gerne zu einem Goblin Magier verändern.
Ich weis auch, dass Goblins Magier sein können aber ich finde keine 100% sicheren Infos ob man auch Untoter->Goblin changen kann!
Kennt sich da einer aus?
Außerdem wird ja der Ruf der alten Heimatstadt auf die neue gewechselt, also sollte in meinem Fall doch nur von Unterstadt->Goblinstadt geändert werden oder?
Was ist das langsame Goblinreittier(60%) und was das Schnelle(100%) zu dem meine Skelettpferde...
|
Welche Klasse ist die Beste Klasse
07/06/2010 - Metin2 - 6 Replies
Hallo ich habe heute mal angefangen Metin 2 angefangen und wollte fragen welche klasse ist die beste meine Vorstellung Menge Deff
Wird Mich freuen auf Antwort
|
All times are GMT +1. The time now is 16:50.
|
|