Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: BBCode w PHP
Forum PHP.pl > Forum > Gotowe rozwiązania
Lesiu
Witam, chcę zrobić BBcode na stronie opartej w PHP. Jest zrobiony skrypt ,że w textarena wpisujemy tekst i wysyłamy, osoba odpowiedzialna za sprawdzanie tego tekstu może zaakceptować bądz odrzucić tą tekst.
Ale jeżeli ktoś napisze
Cytat
np. <center>Witam</center>
to wpliku Nazwa Konta.bio pokazuje mi się
Cytat
&lt;center&gt;Witam&lt;/center&gt;
I jak wchodze w ten panel gdzie się chce sprawdzić ten tekst co napisała ta osoba to zamiast te Witam być na środku pokazuje się <center>Witam</center>

Chyba chodzi tu o kodowanie bo nie wczytuje mi tego znaku, a jak w tym pliku .BIO wpisze <center>Witam</center> To tekst jest na środku, czyli raczej trzeba było by coś zrobić aby nie kodowało w sposób
Cytat
&gt;
Z góry dzieki za odpowiedz, mam nadzieje ze ktoś mi w tym pomoże, Kolega powiedział mi coś o strip_tags. Jeżeli będziecie potrzebowali jakiś wycinek kodu jest on dostępny.
wookieb
A wiesz co to jest bbcode? Temat o bbcodzie a pytasz się o encje..
http://pl2.php.net/manual/pl/function.html...hars-decode.php

Jak otwierasz plik w panelu i widzisz encje to zapewne skrypt panelu to robi. Ściągnij plik ftp-em i zobaczysz czy rzeczywiście tak jest.
Lesiu
No z tego co ja wiem to BBCode to jest ze mozna wybrać Kursywe, pogrubienie i te takie, ale tylko mówie ze do tego jest mi potrzebne, Sorki, ale jak byś mógł mi wytłumaczyć tak dokładnie co mam zrobić, lekko to kumam ale nie do końca,
pyro
@Lesiu, to co Ty próbujesz zrobić to jest po prostu osadzenie znacznika HTML (zdeprecjonowanego zresztą...), a skrypt najwidoczniej filtruje dane pochodzące od użytkownika, żeby chronić go przed atakami pochodnymi od XSS. BBCode to jest co innego.. nie mam co tutaj opisywać tematu, który był już nie raz poruszany.

Spróbuj zamiast tego <center>Witam</center> wpisać [b ]Witam[/b] (EDIT: bez spacji po b ). Jeśli tekst nie zostanie pogrubiony, to najprawdopodobniej nie ma zainicjowanego BBCode. Wtedy musisz sam go zaimplementować. Widzę, że niestety Twoje umiejętności raczej temu nie podołają... w takim wypadku możesz komuś zlecić wykonanie tego, ale to już za $$$.
wookieb
bbcode to inny sposób notacji formatowania tekstu (więcej o bbcode na wikipedii np) a ty o nim nie wspominasz. Żeby tekst zapisany w bbcode przetransformować do htmla musisz użyć do tego celu parsera bbcode (jest ich sporo - wybierz).

Najpierw powiedz nam następujące rzeczy jak zapisujesz dane do tego pliku. Bo jeżeli chcesz tak po prostu używać htmla to przy odczytywaniu danych z tego pliku zastosujesz na nich funkcję którą podałem.
Lesiu
Sorki, wookieb pomogłeś mi w pierwszym poscie, zle wpisałem htmlspecialchars_decode($str); dzięki.

Teraz mam taki problem, wziąłem BBCode z http://forum.php.pl/index.php?showtopic=86314&hl=BBcode

I wkleiłem ten pierwszy kod co pokazał do parser.php a ten drugi do miejsca gdzie się ma to pokazać, tak to zrozumiałem i pokazuje mi się błąd.

Parse error: syntax error, unexpected T_PRIVATE in C:\Program Files\WebServ\httpd\sf\core\parser.php on line 107

Jakby mógł ktoś mi wytłumaczyć jak mam to wkleić. był bym bardzo wdzięczny.
wookieb
A masz php5 na serwerze?
Lesiu
Wykupione jest w home.pl ale właśnie nie wiem czy jest, a jest możliwość sprawdzenia tego?
wookieb
http://pl.php.net/phpinfo

Jeżeli masz 5 włączoną to zapodaj kod jaki masz.
Lesiu
PHP Version 5.2.5 << Z tego co widać to raczej jest.

System Windows NT KOMP1 5.1 build 2600
Build Date Nov 8 2007 23:18:08
Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--with-gd=shared"
Server API Apache 2.0 Handler
Virtual Directory Support enabled
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\WINDOWS\php.ini
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519
Debug Build no
Thread Safety enabled
Zend Memory Manager enabled
IPv6 Support enabled
Registered PHP Streams php, file, data, http, ftp, compress.zlib, compress.bzip2, zip
Registered Stream Socket Transports tcp, udp
Registered Stream Filters convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, zlib.*, bzip2.*
wookieb
A pokaż kod "parser.php"
Lesiu
Kod
<?php

    function getThingData($file)
    {
        $i=0;
        $file = file_get_contents($file);
        $vars = explode("\n", $file);
        while($vars[$i])
        {
            $var = explode("=", $vars[$i]);
            $ret[$var[0]] = $var[1];
            $i++;
        }        
        return $ret;
    }
    function setThingValue($file_dir, $from, $to)
    {
        $file = file_get_contents($file_dir);
        $content = explode("\n", $file);
        $i=0;
        while($content[$i])
        {
            $var = explode("=", $content[$i]);
            if($var[0] == $from)
            {
                $var[1] = $to;
            }
            $ret_val .= $var[0]."=".$var[1]."\n";
            $i++;
        }
        file_put_contents($file_dir, $ret_val);
        
    }

    if($_GET['logout'] == "me")
    {
        setcookie("session_id", false);
        header("Location: index.php");
    }
    
    if($_POST['account_login'])
    {
        $acc_name = htmlspecialchars($_POST['account_name']);
        $acc_pwd = htmlspecialchars($_POST['account_password']);
        
        $acc_file = $server_dir.$acc_name.".txt";
        
        if(!file_exists($acc_file)) { $error .= "Takie konto nie istnieje. <br />"; } else {
            $account = getThingData($acc_file);
            if(trim($account['Online']) != "1")
            {
                if( trim($acc_pwd) == trim($account['Haslo']) )
                {
                    $NS = md5(rand(0,9999) + time()); // Losowy cig znakw zakodowany do md5, przez co ma unikaln forme 32 znakow (raczej nie do BruteForce'owania)
                    
                    touch("data/".$acc_name.".sid");
if(!file_exists("data/".$acc_name.".cfg")) { touch("data/".$acc_name.".cfg"); }
                    // AccName|Time //
                    file_put_contents("data/".$acc_name.".sid", $NS.".".time());
file_put_contents("data/".$acc_name.".cfg", "Skype=Brak\nGG=Brak\nEMail=");
                    setcookie("session_id", $NS);
                    setcookie("acc_name", $acc_name);
                    header("Location: index.php");
                } else { $error .= "Podane haslo jest nieprawidlowe. <br />"; }
            } else { $error .= "Nie mozesz byc zalogowanym w grze, aby wejsc do panelu."; }
        }        
    }
    if($_POST['account_reg'])
    {
        $acc_name = htmlspecialchars($_POST['account_name']);
        $acc_pwd = htmlspecialchars($_POST['account_password']);
        $acc_pwd2 = htmlspecialchars($_POST['account_password2']);
        $char_skin = htmlspecialchars($_POST['character_skin']);
        $char_sex = htmlspecialchars($_POST['character_s']);
        $char_orign = htmlspecialchars($_POST['character_o']);
        if($acc_pwd == $acc_pwd2)
        {
            if(ereg("([a-zA-Z_]) ([a-zA-Z_])", $acc_name) && strlen($acc_name) < $reg_data["MaxNameLen"] && strlen($acc_name) > $reg_data["MinNameLen"])
            
                {
if($char_skin == 23 || $char_skin == 7 || $char_skin == 101 || $char_skin == 28 || $char_skin == 60 || $char_skin == 56 || $char_skin == 190 || $char_skin == 191 || $char_skin == 192 || $char_skin == 193)
                    {
                    if($char_sex == 1 || $char_sex == 2)
                    {
                        if($orign_chosse[$char_orign])
                        {
                            $nF = $server_dir.$acc_name.".txt";
                            if(!file_exists($nF))
                            {
                                copy($server_dir."Example.txt", $nF);
                                // Ustawianie zmiennych:
                                setThingValue($nF, "Haslo", $acc_pwd);
                                setThingValue($nF, "Pochodzenie", $char_orign);
                            setThingValue($nF, "Skin", $char_skin);
                                setThingValue($nF, "Plec", $char_sex);
                                $reg_error = "Konto zostalo pomyslnie utworzone.";
                            } else { $reg_error = "Konto o podanej nazwie ju istnieje."; }
                        } else { $reg_error = "Podales zle pochodzenie."; }
                    } else { $reg_error = "Nie podales plci postaci."; }
} else { $reg_error = "Nie wybrales skina"; }
                } else { $reg_error = "Nieprawidlowa nazwa konta."; }
        } else { $reg_error = "Podane hasla si nie zgadzaj."; }
    }
?>


Bo może ja źle do tego Parseru"parser.php" to wkładam, no nie wiem, sprawdz to jak możesz,
wookieb
Ale ty tego nie masz wkladac do parser.php ... Napewno uciales jakas czesc kodu.

  1. require_once 'parser.php';
  2. $parser = new parser():
  3.  
  4. echo $this->parse($twoje_tekst);


Wczoraj jak testowałem ten parser to wysypywał mi się na pewnych tagach. Dlatego polecam użycie mojego ze stopki.
pyro
[quote name='wookieb' post='655497' date='30.08.2009, 09:11:27 ']<!--Geshi:156248:php--><pre class="php-brief" style="font-family:monospace;"><div class="head">
  1. [topic=0]0[/topic], <a href='Plaintext-156249.html' target='_blank'>plaintext</a> </div></pre><!--/Geshi:156249:php-->
  2.  
  3. // edit
  4.  
  5. cholerny update. nie można normalnie skopiować kodu.
  6.  
  7. [b]@wookieb[/b], czy przypadkiem zamiast
  8.  
  9. [php]
  10. echo $this->parse($twoje_tekst);


nie chciałeś napisać

  1. echo $parser->parse($twoje_tekst);


questionmark.gif
Lesiu
To gdzie ja mam wkleic te Kod od BBCode?
I w jaki sposób?

Jeżeli pobiore ten twój parser ze stopi to jak mam go użyc? załozyc nowy plik?
wookieb
Cytat(Lesiu @ 30.08.2009, 11:42:15 ) *
To gdzie ja mam wkleic te Kod od BBCode?
I w jaki sposób?

No przecież dostałeś odpowiedź. A skąd my mamy dokładnie wiedzieć GDZIE ty chcesz ten kod wyświetlić?

Cytat
Jeżeli pobiore ten twój parser ze stopi to jak mam go użyc? załozyc nowy plik?

A czy nie możesz choć troche wyłożyć własnej inwencji i NAJPIERW go ściągnać a potem SPRÓBOWAĆ użyć? W dodatku w pliku test.php JEST pokazane JAK się go używa.
Lesiu
Sorki, ale ten link nie działa.
http://wookieb.pl/bbcode/bbcode.zip << To jest ten link? Jak tak to coś nie wchodzi.

Mógłbyś wstawić ten parser na inny hosting?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.