Permalänk
Medlem

Användarformaterad text

Kom inte på någon bättre rubrik.. Håller allafall på med ett litet PHP-projekt, en wiki. Användare skall kunna skriva artiklar där dom kan infoga diverse funktioner för rubrik, bilder osv. Jag har nu löst det med preg_match genom att byta ut tex [h:Kalle] mot en html-formaterad rubrik med titeln "kalle" innan texten skrivs ut. Jag har även "deaktiverat" HTML genom att byta ut text "<" mot "&lt".
Men nu vill jag att användarna skall kunna formatera lite mera. Tex lägga in tables osv. Men jag vill ju inte att de skall kunna skriva all HTML, som tex knappar osv.

Blev ett svårfattat inlägg det här. Men det jag är ute efter är förslag på hur det hela skall gå till. Jag vill att användarna skall kunna använda viss HTML, plus att de skall kunna skriva färdiga (och lätta) "kommandon" för bilder osv. Skulle också vilja ha en kod-funktion, där inga kommandon körs..

Som sagt, svårfattat inlägg...

Tacksam för svar.

//boolean

Permalänk
Hedersmedlem

Jag googlade förut efter en bbcode-parser till Fuel-sidan. Jag gillar att använda standarder om de finns. Kommer tyvärr inte ihåg vilken jag slutligen använde, men de verkar rätt bra allihop.

http://www.google.se/search?q=php+bbcode+parser

Permalänk
Medlem

Det där är nog exakt vad jag behöver! Tack!

Permalänk
Medlem

Detta är en väldigt kraftfull textformaterings motor: http://jimandlissa.com/project/textilephp

Permalänk
Medlem

Det är väl i princip pissenkelt att skriva ihop?

En array, str_replace; tuta och kör!

Permalänk
Hedersmedlem

Tar inte så lång tid att skriva en egen BBcode-parser. Har skrivit ett antal.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

En annan sak: Jag har ju massa information som skrivs in i SQL-databasen och sedan skrivs ut på olika ställen.. Hur skyddar jag denna mot specialtecken som tex "<" osv? Så att informationen kan skrivas ut överallt utan att tolkas av webbläsaren..

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av boolean
En annan sak: Jag har ju massa information som skrivs in i SQL-databasen och sedan skrivs ut på olika ställen.. Hur skyddar jag denna mot specialtecken som tex "<" osv? Så att informationen kan skrivas ut överallt utan att tolkas av webbläsaren..

Menar du htmlspecialchars()?

echo htmlspecialchars('<a href="link-to-evul-script.html">Test my new program plz!</a>');

Denna kod kommer inte visa:
Test my new program plz!
utan:
<a href="link-to-evul-script.html">Test my new program plz!</a>

Detta begränsar användarna att skriva HTML i sina inlägg, etc.

Permalänk
Medlem

Jo, delvis. Men varför dubblerar sig back-slashen när jag postar dom i ett formulär?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av boolean
Jo, delvis. Men varför dubblerar sig back-slashen?

Det är antagligen för att webbservern har magicquotes påslaget vilket escapar alla tecken som kan förstöra kod, så som ', " och \ plus alla "binära" tecken, om jag nu inte minns fel.

http://www.punbb.org/articles/php.html#magic_quotes

Permalänk
Medlem

För att \ (backslash) är ett tecken, som htmlspecialchars "escape'ar".

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Marwin
För att \ (backslash) är ett tecken, som htmlspecialchars "escape'ar".

Fel, htmlspecialchars() omvandlar specialtecken till HTML-motsvarigheten, t ex blir å &aring. addslashes() escapar däremot specialtecken.

Permalänk
Medlem

Hängde inte riktigt med... Vilken funktion ska jag använda för att få bort det? Och vilken/vilka funktioner ska jag använda för att oskadliggöra all data innan jag skickar in den i SQL:n?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Don_Tomaso
Fel, htmlspecialchars() omvandlar specialtecken till HTML-motsvarigheten, t ex blir å &aring. addslashes() escapar däremot specialtecken.

Tror jag blandade ihop det lite gran.

Vad säger följande:

echo (get_magic_quotes_runtime() ? "magic_quotes är påslaget" : "magic_quotes är avslaget");

?

För att säkra SQL-queryn från SQL-injections, skulle jag föreslå följande:

$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'", mysql_real_escape_string($user), mysql_real_escape_string($password)); $result = mysql_query($query);

Permalänk
Medlem

En annan grej.. Hur gör jag för att visa tabbar? Finns det någon liknande funktion som tex nl2br? Vore fint om man ska visa kod osv..

Permalänk
Citat:

Ursprungligen inskrivet av boolean
En annan grej.. Hur gör jag för att visa tabbar? Finns det någon liknande funktion som tex nl2br? Vore fint om man ska visa kod osv..

Använd pre-taggen, det är det den är til för.

Visa signatur

Python-IRC på svenska: #python.se