Reacties op het script Stack-based UBB parser
|
Gepost op: 19 juni 2007 - 19:12 |
|
|
|
PHP expert
|
nice BBparser
mss kun je een zipje online gooien |
|
|
|
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:
<?php
include("ubbclass.php");
ubb::execute('[b]Dit is ubb code[/b]');
?>
<?php include("ubbclass.php"); ubb::execute('[b]Dit is ubb code[/b]'); ?>
maar hoe krijg ik dat dan ge-echo't??? |
|
|
|
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 .
<?php
include("ubbclass.php");
echo ubb::execute('[b]Dit is ubb code[/b]');
?>
<?php include("ubbclass.php"); echo ubb ::execute('[b]Dit is ubb code[/b]'); ?>
|
|
|
|
Gepost op: 19 juni 2007 - 21:28 |
|
|
|
PHP interesse
|
|
|
|
Gepost op: 20 juni 2007 - 09:01 |
|
|
|
PHP expert
|
Mooi ubb script maar klopt dit wel?
<?php
foreach($this->aFilters as $sName => $aTags)
{
if(in_array($sName, $this->aFilter) === true)
{
$this->aTags = array_merge($this->aTags, $aTags);
}
}
?>
<?php foreach($this->aFilters as $sName => $aTags) { if(in_array($sName, $this->aFilter) === true) { } } ?>
De in_array() geeft toch altijd true nu? Want je gaat de needle vergelijken die al in dezelfde array staat |
|
|
|
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). |
|
|
|
Gepost op: 20 juni 2007 - 12:10 |
|
|
|
PHP expert
|
Ah zo, dan klopt het inderdaad wel jah |
|
|
|
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:
<?php
include("ubbclass.php");
echo ubb::execute('[table border=1][tr][td]Testje[/td][td]Nog eentje[/td][/tr][/table]');
?>
<?php include("ubbclass.php"); echo ubb ::execute('[table border=1][tr][td]Testje[/td][td]Nog eentje[/td][/tr][/table]'); ?>
|
|
|
|
Gepost op: 20 juni 2007 - 16:29 |
|
|
|
PHP ver gevorderde
|
Uiteraard, dan moet je gewoon de methode van table aanpassen, bijvoorbeeld als volgt:
<?php # Kleurtjes
private function table($aNode)
{
$sReturn = '<table';
if(isset($aNode['attributes']['border']) === true)
{
$sReturn .= ' style="border: '.$aNode['attributes']['border'].'px solid #000;"';
}
/* Of als volgt:
if(isset($aNode['attributes']['border']) === true)
{
$sReturn .= ' border="'.$aNode['attributes']['border'].'"';
}
*/
$sReturn .= '>';
$sReturn .= $this->parse('table');
$sReturn .= '</table>';
return $sReturn;
}
<?php # Kleurtjes private function table($aNode) { $sReturn = '<table'; if(isset($aNode['attributes']['border']) === true) { $sReturn .= ' style="border: '.$aNode['attributes']['border'].'px solid #000;"'; } /* Of als volgt: if(isset($aNode['attributes']['border']) === true) { $sReturn .= ' border="'.$aNode['attributes']['border'].'"'; } */ $sReturn .= '>'; $sReturn .= $this->parse('table'); $sReturn .= '</table>'; return $sReturn; }
|
|
|
|
Gepost op: 20 juni 2007 - 17:57 |
|
|
|
PHP expert
|
wat is het resultaat van de volgende code?:
<?php
include("ubbclass.php");
echo ubb::execute('[img onload=alert(document.cookie) src=#]');
?>
<?php include("ubbclass.php"); echo ubb ::execute('[img onload=alert(document.cookie) src=#]'); ?>
|
|
|
|
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. |
|
|
|
Gepost op: 20 juni 2007 - 18:40 |
|
|
|
PHP expert
|
<?php
include("ubbclass.php");
echo ubb::execute('[img src="javascript:alert(document.cookie)"]');
?>
<?php include("ubbclass.php"); echo ubb ::execute('[img src="javascript:alert(document.cookie)"]'); ?>
Dit dan? |
|
|
|
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. |
|
|
|
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 |
|
|
|
Gepost op: 22 oktober 2007 - 18:25 |
|
|
|
Crew algemeen
|
Ik heb je code even als download gezet.
De code werd om de een of andere reden niet weergeven... |
|
|
|
Gepost op: 22 oktober 2007 - 18:53 |
|
|
|
PHP ver gevorderde
|
Klopt, ik wilde het al door gaan geven. |
|
|
|
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:
extended:
'fieldset' => array
(
'allowed' => 'all',
'solid' => true,
'inline' => false
),
de function:
private function fieldset($aNode)
{
$sreturn = '<fieldset>';
if(isset($aNode['attributes']['fieldset']) === true)
{
$sreturn .= '<legend>Quote: '.$aNode['attributes']['fieldset'].'</legend>';
}
$sreturn .= $this->parse('fieldset');
$sreturn .= '</fieldset>';
return $sreturn;
}
extended: ( 'allowed' => 'all', 'solid' => true, 'inline' => false ), de function: private function fieldset($aNode) { $sreturn = '<fieldset>'; if(isset($aNode['attributes']['fieldset']) === true) { $sreturn .= '<legend>Quote: '.$aNode['attributes']['fieldset'].'</legend>'; } $sreturn .= $this->parse('fieldset'); $sreturn .= '</fieldset>'; return $sreturn; }
Ik hoop alsnog dat iemand me hiermee kan helpen.
Met vriendelijke groet,
Luc |
|
|
Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom. |
|
|
|