login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > UBB & Smilies > Stack-based UBB parser


Reacties op het script Stack-based UBB parser

Offline  Ibrahim
Gepost op: 19 juni 2007 - 19:12
PHP expert



nice BBparser 

mss kun je een zipje online gooien 

Offline  Jero3n
Gepost op: 19 juni 2007 - 19:54
PHP interesse



even een vraagje, ik snap helemaal niets van objectgeorienteerd php.
dus hoe kan ik dit nou gebruiken?
ik heb nu deze code:

  1. <?php
  2. include("ubbclass.php");
  3. ubb::execute('[b]Dit is ubb code[/b]');
  4. ?>


maar hoe krijg ik dat dan ge-echo't???

Offline  Grayen
Gepost op: 19 juni 2007 - 20:09
PHP ver gevorderde



ubb::execute() is het statisch aanroepen van een methode (functie in een class) uit een class. Execute is de naam van de methode die zich bevindt in de class ubb. Je kan alleen methodes statisch aanroepen als je dat hebt aangegeven met het woord static.

De methode execute geeft de verwerkte ubb code terug. Dus je was er bijna. Je moest simpelweg alleen nog echo neerzetten .

  1. <?php
  2. include("ubbclass.php");
  3. echo ubb::execute('[b]Dit is ubb code[/b]');
  4. ?>


Offline  Jero3n
Gepost op: 19 juni 2007 - 21:28
PHP interesse



Oh tuurlijk, thx!

Offline  Ultimatum
Gepost op: 20 juni 2007 - 09:01
PHP expert



Mooi ubb script maar klopt dit wel?

  1. <?php
  2. foreach($this->aFilters as $sName => $aTags)
  3. {
  4. if(in_array($sName, $this->aFilter) === true)
  5. {
  6. $this->aTags = array_merge($this->aTags, $aTags);
  7. }
  8. }
  9. ?>


De in_array() geeft toch altijd true nu? Want je gaat de needle vergelijken die al in dezelfde array staat

Offline  Grayen
Gepost op: 20 juni 2007 - 11:31
PHP ver gevorderde



Ja het klopt, want jij maakt nu een grote fout. $this->aFilters != $this->aFilter (zie je dat leuke s'je achter de eerste ). Ik had misschien beter andere namen kunnen kiezen, maar ik wist even geen betere. Want in de ene array staan alle filters ($aFilters) en in de andere welke filters je wilt gebruiken ($aFilter).

Offline  Ultimatum
Gepost op: 20 juni 2007 - 12:10
PHP expert



Ah zo, dan klopt het inderdaad wel jah 

Offline  Jero3n
Gepost op: 20 juni 2007 - 14:08
PHP interesse



Wat ik me nog af vraag: Kan je ook een tabel met een border krijgen?
Dit werkt namelijk niet:
  1. <?php
  2. include("ubbclass.php");
  3. echo ubb::execute('[table border=1][tr][td]Testje[/td][td]Nog eentje[/td][/tr][/table]');
  4. ?>

Offline  Grayen
Gepost op: 20 juni 2007 - 16:29
PHP ver gevorderde



Uiteraard, dan moet je gewoon de methode van table aanpassen, bijvoorbeeld als volgt:

  1. <?php # Kleurtjes
  2. private function table($aNode)
  3. {
  4. $sReturn = '<table';
  5. if(isset($aNode['attributes']['border']) === true)
  6. {
  7. $sReturn .= ' style="border: '.$aNode['attributes']['border'].'px solid #000;"';
  8. }
  9. /* Of als volgt:
  10.   if(isset($aNode['attributes']['border']) === true)
  11.   {
  12.   $sReturn .= ' border="'.$aNode['attributes']['border'].'"';
  13.   }
  14.   */
  15. $sReturn .= '>';
  16. $sReturn .= $this->parse('table');
  17. $sReturn .= '</table>';
  18.  
  19. return $sReturn;
  20. }


Offline  ikkedikke
Gepost op: 20 juni 2007 - 17:57
PHP expert



wat is het resultaat van de volgende code?:

  1. <?php
  2. include("ubbclass.php");
  3. echo ubb::execute('[img onload=alert(document.cookie) src=#]');
  4. ?>

Offline  Grayen
Gepost op: 20 juni 2007 - 18:09
PHP ver gevorderde



ehh.. erg weinig, wat je namelijk krijgt is <img src="#" alt="" />. Als je namelijk mijn uitleg had gelezen, had je gezien dat er stond alle andere attributen waar wel een naam voor staan worden opgeslagen in $aNode['attributes']['attribuutnaam'] = 'waarde';

Dus het is nutteloos.

Offline  ikkedikke
Gepost op: 20 juni 2007 - 18:40
PHP expert



  1. <?php
  2. include("ubbclass.php");
  3. echo ubb::execute('[img src="javascript:alert(document.cookie)"]');
  4. ?>

Dit dan?

Offline  Grayen
Gepost op: 20 juni 2007 - 18:52
PHP ver gevorderde



Jammer genoeg wordt die code wel uitgevoerd. Ik heb me dan ook niet gefocused op de methodes die de ubb codes omzetten naar html. Het was namelijk de bedoeling dat men met dit script zelf eigen ubb script kan aanmaken. Omdat ik weet dat er nu de mogelijkheid bestaat om XSS uit te voeren heb ik even een kleine functie geschreven die naar mij weten XSS voorkomt. Ik heb de functie los van het script gezet, omdat ik persoonlijk liever alles gescheiden houdt.

Offline  Jero3n
Gepost op: 21 juni 2007 - 08:44
PHP interesse



Echt heel erg bedankt grayen, ik heb 'm nu zo verandert dat je de td's ook een border kan geven 

Offline  Rens
Gepost op: 22 oktober 2007 - 18:25
Gouden medaille

Crew algemeen




Ik heb je code even als download gezet.
De code werd om de een of andere reden niet weergeven... 

Offline  Grayen
Gepost op: 22 oktober 2007 - 18:53
PHP ver gevorderde



Klopt, ik wilde het al door gaan geven.

Offline  Luc18
Gepost op: 12 oktober 2010 - 11:36
Onbekend



Allereerst wil ik zeggen mooie ubb class.

Alleen loop ik tegen het volgende probleem aan:
Je gebruikt blockquote voor de quotes. Dit wil ik aanpassen naar fieldset, omdat deze voor mij makkelijker werken.. Enkel krijg ik het niet voor elkaar als er meerdere quotes in een quote zitten, deze dan tog in de quote komen. Ze komen bij mij nu onder elkaar.

ik heb hetvolgende:

  1. extended:
  2. 'fieldset' => array
  3. (
  4. 'allowed' => 'all',
  5. 'solid' => true,
  6. 'inline' => false
  7. ),
  8.  
  9. de function:
  10.  
  11. private function fieldset($aNode)
  12. {
  13. $sreturn = '<fieldset>';
  14.  
  15. if(isset($aNode['attributes']['fieldset']) === true)
  16. {
  17. $sreturn .= '<legend>Quote: '.$aNode['attributes']['fieldset'].'</legend>';
  18. }
  19. $sreturn .= $this->parse('fieldset');
  20.  
  21. $sreturn .= '</fieldset>';
  22.  
  23. return $sreturn;
  24. }


Ik hoop alsnog dat iemand me hiermee kan helpen.

Met vriendelijke groet,

Luc


Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.121s