Codice html

Aperto da Lucarella, Martedì - 14 Gennaio 2014 - 21:54

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Lucarella

Ciao ragzzi, una domanda veloce veloce ;D
Avrei questo codice html
<div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-post" data-href="https://www.facebook.com/luigidimaio/posts/624836870886196" data-width="466"><div class="fb-xfbml-parse-ignore"><a href="https://www.facebook.com/luigidimaio/posts/624836870886196">post</a> di <a href="https://www.facebook.com/luigidimaio">Luigi Di Maio</a>.</div></div>


ma inserito in un post, con i relativi tag, non si vede come dovrebbe. Lo ha postato un utente sul mio forum, ok, l'html è solo per gli admin, ma anche dopo averlo postato io lo stesso non funziona.

Come mai ?

Darknico

come hai detto giustamente, funzione SOLO per admin, per ovvi motivi di sicurezza
per poter interpretare l'html devi inserire in un apposito tag, ovvero, così:

[html]
<div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-post" data-href="https://www.facebook.com/luigidimaio/posts/624836870886196" data-width="466"><div class="fb-xfbml-parse-ignore"><a href="https://www.facebook.com/luigidimaio/posts/624836870886196">post</a> di <a href="https://www.facebook.com/luigidimaio">Luigi Di Maio</a>.</div></div>
[/html]
Non supporto privatamente, non risponderei e ci rimarreste male....

Lucarella

Si, lo so Darknico, ho provato anche con i tag html ma lo stesso non va :(

Darknico

a me esce questo






cmq credo che non legga i javascript per questioni di sicurezza....
Non supporto privatamente, non risponderei e ci rimarreste male....

emanuele

Nel post il js (quel js in particolare) non funziona probabilmente per via delle parentesi quadre che vengono convertite in entià html.

Lucarella

Si Darknico, anche a me esce così, solo che dovrebbe uscire in questo modo


Questo screen l'ho fatto su un forum basato su SMF 1.1.11. Possibile che da quella versione in poi ci siano stati dei cambiamenti al riguardo ?

Grazie

emanuele

Citazione di: emanuele il Mercoledì - 15 Gennaio 2014 - 17:22
Nel post il js (quel js in particolare) non funziona probabilmente per via delle parentesi quadre che vengono convertite in entià html.
^^ Questo.
E sì, ci sono stati cambiamenti che impediscono a quel codice di funzionare.

Lucarella

Grazie ragazzi, formidabili ed esaurienti come sempre ;)

Marco Di Lenardo

non posso più spamm.... cioè postare le notizie nel forum di Lucarella come voglio se quel codice non va  :'( :'( :'( :'( :'( :'( :'( :'(

emanuele

Da dove lo prendi quel codice html?

Marco Di Lenardo

#10
il codice viene preso da facebook per far vedere singoli post (funzione "incorpora post")

emanuele

Quindi tu schiacci su quel pulsante, ti si apre una finestrella in cui c'è tutto quel codice incollato?...

Faccio la versione facile.

Apri Subs.php, cerca
array(
'tag' => 'email',
'type' => 'unparsed_equals',
'before' => '<a href="mailto:$1" class="bbc_email">',
'after' => '</a>',
'disallow_children' => array('email', 'ftp', 'url', 'iurl'),
'disabled_after' => ' ($1)',
),

ed aggiungi dopo:
array(
'tag' => 'fb',
'type' => 'unparsed_content',
'content' => '$1',
'validate' => create_function('&$tag, &$data, $disabled', '
global $txt;

preg_match(\'~&lt;div class=&quot;fb-post&quot; data-href=&quot;(.+)&quot; data-width=&quot;\d*&quot;&gt;~im\', $data, $matches);

$data = \'<div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/\' . $txt[\'lang_locale\'] . \'/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, \\\'script\\\', \\\'facebook-jssdk\\\'));</script>
<div class="fb-post" data-href="\' . $matches[1] . \'" data-width="466"><div class="fb-xfbml-parse-ignore"><a href="\' . $matches[1] . \'">\' . $txt[\'fb_original_post\'] . \'</a>.</div></div>\';
'),
),


Quindi apri Modifications.english.php ed aggiungi da qualche parte:
$txt['fb_original_post'] = 'Original post';
Quindi apri Modifications.italian.php (o Modifications.italian-utf8.php) ed aggiungi la traduzione:
$txt['fb_original_post'] = 'Post original';

Quindi prova a postare:

[fb]
<div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-post" data-href="https://www.facebook.com/luigidimaio/posts/624836870886196" data-width="466"><div class="fb-xfbml-parse-ignore"><a href="https://www.facebook.com/luigidimaio/posts/624836870886196">post</a> di <a href="https://www.facebook.com/luigidimaio">Luigi Di Maio</a>.</div></div>
[/fb]


La più grande differenza è che così anche chi non è admin potrà postare... non so se è un bene o un male.

Lucarella

Citazione di: emanuele il Sabato - 18 Gennaio 2014 - 23:18

La più grande differenza è che così anche chi non è admin potrà postare... non so se è un bene o un male.

Dato che la mia conoscenza al riguardo è limitatissima, ti faccio una domanda:
Quali conseguenze si possono avere con la modifica che ci hai mostrato da utenti "malintenzionati" ?

Grazie

emanuele

Effettivamente avrei dovuto pulire meglio l'url, questa è decisamente meno invasiva:
array(
'tag' => 'fb',
'type' => 'unparsed_content',
'content' => '$1',
'validate' => create_function('&$tag, &$data, $disabled', '
global $txt;

preg_match(\'~&lt;div class=&quot;fb-post&quot; data-href=&quot;(https://www\.facebook\.com/\w+/posts/\w+)&quot; data-width=&quot;\d*&quot;&gt;~im\', $data, $matches);

$data = \'<div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/\' . $txt[\'lang_locale\'] . \'/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, \\\'script\\\', \\\'facebook-jssdk\\\'));</script>
<div class="fb-post" data-href="\' . $matches[1] . \'" data-width="466"><div class="fb-xfbml-parse-ignore"><a href="\' . $matches[1] . \'">\' . $txt[\'fb_original_post\'] . \'</a>.</div></div>\';
'),
),


In pratica l'utente posta quell'html, il codice estrae l'url di facebook:
preg_match(\'~&lt;div class=&quot;fb-post&quot; data-href=&quot;(https://www\.facebook\.com/\w+/posts/\w+)&quot; data-width=&quot;\d*&quot;&gt;~im\', $data, $matches);
che tradotto in italiano significa: trova quello che assomiglia a: (https://www\.facebook\.com/\w+/posts/\w+) (dove \w+ significa qualunque lettera o numero, quindi niente di problematico) e che è compreso tra &lt;div class=&quot;fb-post&quot; data-href=&quot; e &quot; data-width=&quot;\d*&quot;&gt; e ricordatelo.
Quindi re-inserisce l'url così estratta all'interno di quello che è il codice che solitamente usa facebook, solo che adesso non proviene dall'input dell'utente, ma dal codice della modifica.

In pratica direi che l'impatto (di questa nuova versione, la precedente era un po' troppo "rilassata") è comparabile a quello del tag url.

Marco Di Lenardo

#14
Citazione di: emanuele il Sabato - 18 Gennaio 2014 - 23:18
Quindi tu schiacci su quel pulsante, ti si apre una finestrella in cui c'è tutto quel codice incollato?...

Faccio la versione facile.

Apri Subs.php, cerca
array(
'tag' => 'email',
'type' => 'unparsed_equals',
'before' => '<a href="mailto:$1" class="bbc_email">',
'after' => '</a>',
'disallow_children' => array('email', 'ftp', 'url', 'iurl'),
'disabled_after' => ' ($1)',
),



ho caricato subs.php in dreamweaver ma dice che non esiste questo codice :'(

Discussioni simili (3)