bepaalde html tags toestaan

Hulp nodig bij je installatie of kom je ergens niet uit? Probeer phpBB3! Problemen lossen we samen met je op.
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Forumregels
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Gebruikersavatar
marian0810
Berichten: 1974
Lid geworden op: 09 apr 2007, 10:24
Locatie: Hoofddorp
Contacteer:

Re: bepaalde html tags toestaan

Bericht door marian0810 » 11 aug 2008, 12:56

Maar waarom is phpBB2 daar dan minder gevoelig voor?

Jim
Berichten: 3900
Lid geworden op: 21 feb 2007, 14:53
Locatie: Groningen
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Jim » 11 aug 2008, 12:59

Geen idee, daarvoor verwijs ik je daar naar de developers op phpBB.com. ;)
Jim Mossing Holsteyn - Beheerder
Documentatie | Algemene voorwaarden | Wiki

Heb je suggesties over het verbeteren van phpBB.nl of andere site-gerelateerde vragen? Stuur me een PB!

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 11 aug 2008, 13:08

Bedankt voor de moeite. Ik had de script toevallig gevonden op phpbb.com en wilde het installeren, maar hij waarschuwde bij de instructies al zo uitgebreid over risico enzo. Ik begreep ook dat ALLES van html dan ook zou werken, waardoor je allerlei risico's dan zou hebben. Ik had daarom toen besloten het toch maar niet te installeren en toch maar verder te zoeken naar 'n andere oplossing.
De oplossing die ik nu heb is:
- een php script draaien om html (img en a href) te converteren naar bbcode
- daarna pas overstappen naar phpbb3.

De script werkt goed. Ik was ook van plan het binnenkort hier te posten zodat anderen er ook wat aan hebben, maar was nog bezig met netjes maken, hier en daar instructies en helemaal in het engels.

Het werkt erg goed. :D Was een soortgelijke tegengekomen bij phpbb tijdje terug maar die werkte best slecht, die ving niet alle soorten html codes op (bv alleen <img src=""> en dan niet bv <img src="" alt="" border="1">. Deze script, gemaakt door Ger, vangt alles op. :) Nou ja behalve <img src=url>, als er geen quotes gebruikt zijn, maar daar heb ik 'n oplossinkje voor. Zal het hier posten zodra ik tijd heb gehad nog eens na te kijken en instructies toe te voegen.

Gebruikersavatar
Lucas
Berichten: 1630
Lid geworden op: 19 feb 2007, 10:52
Locatie: R´dam

Re: bepaalde html tags toestaan

Bericht door Lucas » 11 aug 2008, 17:28

marian0810 schreef:Maar waarom is phpBB2 daar dan minder gevoelig voor?
Is het niet, maar toen was er nog geen alternatief :) Met phpBB3 is gewerkt aan veiligheid...dus hebben ze de BBCodes geintroduceerd. :) Ook in phpBB2 is het aangeraden HTML uit te laten :)

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 12 aug 2008, 19:33

Ik heb toch weer een vraag...Html codes zoals <b> en <i> worden blijkbaar ook niet omgezet naar phpbb tijdens het converteren van 2 naar 3...
Ik dacht zelf 'n script te maken maar die werkt niet goed, vangt niet alle <b>'s op. Dit is wat ik had:

Code: Selecteer alles

function html_vervangen($table,$id,$text) {
	$c = mysql_connect("",","");
	mysql_select_db("");

	$DB_quer = "select * from $table where $text like '%<b>%' or $text like '%</b>%' or $text like '%<i>%' or $text like '%</i>%'";
	$DB_query = mysql_query($DB_quer) or die(mysql_error());
	$DB_totaal = mysql_num_rows($DB_query);
	$n=1;
	while($DB_r = mysql_fetch_array($DB_query)) {
		$message =  str_replace('<b>', '[b]', $DB_r[$text]);
		$message =  str_replace('</b>', '[/b]', $DB_r[$text]);
		$message =  str_replace('<i>', '[i]', $DB_r[$text]);
		$message =  str_replace('</i>', '[/i]', $DB_r[$text]);				
		$message=addslashes($message);
		$DB_update = ("update $table set $text = '$message' where $id = $DB_r[$id]");
		echo ("$n / $DB_totaal $DB_r[$id] $message \n");
		$DB_update = mysql_query($DB_update) or die(mysql_error());
		$n=$n+1;
	}
}
Het werkt voor een deel, er blijven een paar met <b> over. Ik neem aan dat er dan een karakter naast is waardoor ie het niet pakt, maar weet niet welke php functie het wel goed zal pakken....

wel blij als ik eenmaal geen probleempjes meer tegenkom. ;) alvast bedankt...

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 13 aug 2008, 17:49

Zo even in de gauwigheid lijkt het me een goed script. Kun je eens een voorbeeld geven van wat hij niet pakt?

2 dingen die zo even in me opkomen: de functie str_replace is hoofdlettergevoelig. Daar dus even op letten. str_ireplace is niet hooflettergevoelig, maar ik meen dat die niet werkte op PHP4 he? Simpelste alternatief in dat geval is ook replacements voor de hoofdletterequivalenten opnemen.

Andere mogelijkheid is eerst zoeken naar het geheel met een preg_match(). Zoiets dus:

Code: Selecteer alles

preg_match_all("#\<b\>(.*?)\<\/b\>#i", $DB_r[$text], $matches);
Met daarna weer een foreach() loop waar je de replacements op uitvoert.
Wijziging: zag nog een syntaxfoutje
Laatst gewijzigd door Ger op 14 aug 2008, 15:17, 1 keer totaal gewijzigd.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 14 aug 2008, 14:31

@Sandra: mocht je de komende dagen nog vragen hebben: ik ben even een paar dagen weg naar lowlands, dus mocht het niet lukken, moet je even wachten of hopen dat iemand anders antwoordt.

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 14 aug 2008, 15:13

bedankt voor de mededeling, ben nl snelle antwoorden van jou gewend. ;) zal hier wel uitkomen denk ik....veel plezier!
Niet dubbelposten graag, ik heb je bericht hierbij samengevoegd.
- Derky
Kon het alleen toch niet laten meteen een voorbeeld te zoeken, van wat hij niet pakt:

Code: Selecteer alles

wil ik net lekker gaan puberen...
komt mijn pa binnen met zijn midlife crisis!
<i>Loesje[/i]
Hij pakte dus wel </i> maar niet <i>, zo ook voor b....
gaat dus niet om hoofdletters....is het niet zo dat ie het niet pakt door de < tekens, dat ie de andere wel pakt omdat er een / naast is?

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 18 aug 2008, 10:19

Ik zag dat er maar een paar posts zijn met <b> en <i>, heb het uiteindelijk maar handmatig gewijzigd.
Dit is de script waarmee img en a href uitgevist kan worden, deze werkt goed.

Code: Selecteer alles

echo html_bbcode('phpbb_posts_text','post_id','post_text');
echo html_bbcode('phpbb_users','user_id','user_sig');
echo html_bbcode('phpbb_privmsgs_text','privmsgs_text_id','privmsgs_text');

function html_bbcode($table,$id,$text) {
    //connect to the database and make query of the text which has to be changed
    $c = mysql_connect("","","");
    mysql_select_db("");
  $DB_query = mysql_query("select * from ".$table." where ".$text." like '%<a href%' or ".$text." like '%<img%' ") or die(mysql_error());
    $DB_aantal = mysql_num_rows($DB_query);
    $n=1;
    while($DB_result = mysql_fetch_array($DB_query)) {
    $message = $DB_result[$text];
      //1. Replace <img.. url...> with [img]url[/img]
    preg_match_all('#\<img(.*?)\>#i',$message, $matchees );
    foreach ($matchees as $totaalimg) {}
    foreach ($matchees[0] as $totaal2img) {
        //search for src="url"
        preg_match_all('#src=\"(.*?)\"#i',$totaal2img, $matches );
        foreach ($matches as $key=>$preimg){}
        $replacement = $preimg[0];
        $aantal=count($preimg);
        //nothing found? search for src='url'
        if ($aantal == 0)  {
            unset ($preimg);
            preg_match_all("#src=\'(.*?)\'#i",$totaal2img, $matches );
            foreach ($matches as $preimg){}
            $replacement = $preimg[0];
            $aantal=count($preimg);
            //nothing found? search for src=''url''
            if ($aantal == 0) {
                unset ($preimg);
                preg_match_all("#src=\'\'(.*?)\'\'#i",$totaal2img, $matches );
                foreach ($matches as $preimg){}
                $replacement = $preimg[0];
            }
        }
            if($replacement!="") {
            //replace the complete img string with [img]url[/url]
            $message = str_replace($totaal2img, '[img_max]'.$replacement.'[/img_max]', $message);
            }
    }
    
    //2. Replace <a href="url"...> with [url=..] and replace </a> with [/url]
    preg_match_all('#\<a(.*?)\>#is',$message, $matchees );
    foreach ($matchees as $totaallink){}
    foreach ($matchees[0] as $totaal2link) {
            //search for href="url"
        preg_match_all('#href=\"(.*?)\"#i',$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset($matches);
        $aantal=count($prelink);
        //nothing found? search for href='url'
        if ($aantal == 0) {
            unset ($prelink);
            preg_match_all("#href=\'(.*?)\'#i",$totaal2link, $matches );
            foreach ($matches as $prelink){}
            unset ($matches);
            $aantal=count($prelink);
            //nothing found? search for href=''urk''
        if ($aantal == 0) {
                unset ($prelink);
                preg_match_all("#href=\'\'(.*?)\'\'#i",$totaal2link, $matches );
                foreach ($matches as $prelink){}
                unset ($matches);
            }
        }
        //replace the complete Ma string with [url=$url]
            if($prelink[0]!="") {
          $message = str_replace($totaal2link, '[url='.$prelink[0].']', $message);
            $message = preg_replace('#\<\/a\>#i', '[/url]', $message);
            }      
    }
    $message=addslashes($message);
        $DB_update = mysql_query("update $table set $text = '$message' where $id = $DB_result[$id]") or die(mysql_error());
        echo ("$n / $DB_aantal: $table $DB_result[$id] \n ");
        $n=$n+1;
    }
}  
Ger, nogmaals bedankt voor je hulp!

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 18 aug 2008, 12:23

Graag gedaan, en fijn dat alles uiteindelijk gelukt is! :D

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 21 aug 2008, 11:05

Nog eventjes voor de duidelijkheid, als iemand ooit hetzelfde 'probleem' hebben en deze topic vindt.

De script is bedoeld voor als je overstapt van phpbb2 naar phpbb3. Je moet deze script voor het overstappen draaien. Hier wat instructies:
1) Maak een backup van je database
2) Kopieer de script, sla het op op je server en stel de gegevens voor database in (adres, inlog, wachtwoord, databasenaam)
3) Draai de script. Kan zijn dat je last krijg van time-outs als je grote database heb. Ikzelf draaide het onder ssh via /root/php /www/forum/forum_htmlbbcode.php , zodat je geen time-out kan krijgen.
4) De script heeft a href en img vervangen. Mocht je bv phpmyadmin hebben, voer dan wat queries uit om zeker te maken dat er geen html code over is. Bij mij was er soms bv <a href=url>, omdat er geen quotes gebruikt zijn pakte de script het niet. Die moet je dus handmatig wijzigen.
5) Installeer phpbb3.
6) Zodra het installeren klaar is kan je phpbb2 converteren. VOORDAT je dat doet moet je een bbcode toevoegen:

Code: Selecteer alles

[img_max]{URL}[/img_max]
<img src="{URL}" maxwidth="350"/ border="0">
Toon een plaatje maximaal 350 pixels breed
7) Start het converteren

Ger, bij phpbb.com is er ook een topic hierover, reeds door anderen gestart. Ik zal de script daar ook posten en jouw naam bij vermelden. ;)

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 21 aug 2008, 20:41

Ga je gang. Mocht je willen: ik heb daar een gelijknamig profiel, als je dat erbij zet, dan kunnen mensen die nog vragen hebben mij bereiken. Heb je ook een linkje naar dat topic?


Gesloten