Italian SMF

Supporto SMF => SMF 2.0.x => Discussione aperta da: Flavio93Zena il Martedì - 05 Gennaio 2016 - 16:19

Titolo: Pastebin API
Inserito da: Flavio93Zena il Martedì - 05 Gennaio 2016 - 16:19
Io ho questo codice:
$api_dev_key = 'CENSORED';
$api_paste_code = '<html><input type="text" size="25" value="" class="input_text" /></html> '; // your paste text
$api_paste_private = '0'; // 0=public 1=unlisted 2=private
$api_paste_name = 'Virtual Interactive Games Entertainment';
$api_paste_expire_date = 'N';
$api_paste_format = 'text';
$api_user_key = '';
$api_paste_name = urlencode($api_paste_name);
$api_paste_code = urlencode($api_paste_code);


$url = 'http://pastebin.com/api/api_post.php';
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'api_option=paste&api_user_key='.$api_user_key.'&api_paste_private='.$api_paste_private.'&api_paste_name='.$api_paste_name.'&api_paste_expire_date='.$api_paste_expire_date.'&api_paste_format='.$api_paste_format.'&api_dev_key='.$api_dev_key.'&api_paste_code='.$api_paste_code.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);

$response  = curl_exec($ch);
echo $response;

Quello che vorrei che facesse:
-Riquadro bianco con input da inserire per l'utente;
-Tasto per inviare;
-Ritornare link con il paste :)

Quello che fa:
-Ritorna link immediatamente ad un paste vuoto -_-

Come faccio a fargli fare quello che voglio io? ;D
Grazie in anticipo :)
Titolo: Re:Pastebin API
Inserito da: emanuele il Martedì - 05 Gennaio 2016 - 20:48
Io con l'esempio di pastebin ottengo un paste valido, con il tuo ottengo:
CitazioneYour paste has triggered our automatic SPAM detection filter. This happens when certain keywords are detected in a paste. It can also happen if you are creating a lot of pastes in a short period of time.

Ed in effetti un pezzo di html a quel modo è comprensibile che faccia suonare gli allarmi di eventuali meccanismi anti-spam.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Martedì - 05 Gennaio 2016 - 21:19
Sì, ma mi hai praticamente ripetuto quello che già sapevo ;_;
Titolo: Re:Pastebin API
Inserito da: emanuele il Martedì - 05 Gennaio 2016 - 21:46
Ma non quanto hai scritto.
Hai scritto:
Citazione di: Flavio93Zena il Martedì - 05 Gennaio 2016 - 16:19
Quello che fa:
-Ritorna link immediatamente ad un paste vuoto -_-
un paste vuoto ed un warning che il tuo paste è spam sono due cose mooooooolto diverse.
Se fosse vuoto potrebbe esserci un errore da qualche parte da indagare, se invece ritorna un warning di spam l'unica cosa che puoi fare è seguire le indicazioni che ti da il sito e creare un account "pro"... oppure postare qualcosa di non spammico. ;)
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Martedì - 05 Gennaio 2016 - 21:57
Ma io voglio postare qualcosa di diverso, l'ho scritto accipicchia
Citazione di: Flavio93Zena il Martedì - 05 Gennaio 2016 - 16:19
Quello che vorrei che facesse:
-Riquadro bianco con input da inserire per l'utente;
-Tasto per inviare;
-Ritornare link con il paste :)
Non mi serve html, solo un riquadro per mettere la roba (dei logfiles).
Oltretutto triggera l'antispam perchè fa dei paste vuoti, che per ovvie ragioni vengono rifiutati, lol.
Titolo: Re:Pastebin API
Inserito da: emanuele il Martedì - 05 Gennaio 2016 - 23:29
Sigh.

Allora, quello che vuoi è:
1) costruire una pagina html con la form ed i box e quello che serve,
2) usare quello che viene postato da quella pagina per creare un paste.
Il codice che hai postato, perl, fa qualcosa di un po' diverso, ed ancora mi chiedo cosa il topic ci faccia nella sezione SMF 2.0.

Va beh.
<?php

if (!empty($_POST'paste']))
{
echo createPast($_POST'paste']);
}
else
{
createForm();
}

function 
createPaste($text)
{
$api_dev_key  'CENSORED';
$api_paste_code  $text// your paste text
$api_paste_private  '0'// 0=public 1=unlisted 2=private
$api_paste_name 'Virtual Interactive Games Entertainment';
$api_paste_expire_date  'N';
$api_paste_format  'text';
$api_user_key  '';
$api_paste_name urlencode($api_paste_name);
$api_paste_code urlencode($api_paste_code);


$url  'http://pastebin.com/api/api_post.php';
$ch  curl_init($url);

curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_POSTFIELDS'api_option=paste&api_user_key='.$api_user_key.'&api_paste_private='.$api_paste_private.'&api_paste_name='.$api_paste_name.'&api_paste_expire_date='.$api_paste_expire_date.'&api_paste_format='.$api_paste_format.'&api_dev_key='.$api_dev_key.'&api_paste_code='.$api_paste_code.'');
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_VERBOSE1);
curl_setopt($chCURLOPT_NOBODY0);

return curl_exec($ch);
}

function 
createForm()
{
echo '<html>
<form action="">
<textarea name="paste"></textarea>
</form>
</html>;
}


Non testato minimamente.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 02:41
Nope :/ http://virtualinteractivege.com/index.php?page=page4110 Niente tasto né riesco ad inviare.
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 09:28
Beh, il tasto non ce l'ho messo. xD
Aggiungi un input type="button" dopo la textarea value="salva" (che sarà po il testo del pulsante).
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 13:12
Citazione di: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 02:41
né riesco ad inviare.
E l'ultima funzione pare rotta perchè si vedono caratteri extra :/

function createForm()
{
echo '<html>
<form action="">
<textarea name="paste"></textarea>
<input type="button" value="salva">
</form>;
</html>
}
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 13:15
function createForm()
{
echo '<html>
<form action="">
<textarea name="paste"></textarea>
<input type="button" value="salva">
</form>;
</html>';
}

Interessante "side effect" dei blocchi di codice di SP.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 13:51
Nope, per il poco di conoscenza di php che ho, avevo già provato quel codice, puoi vedere il risultato tu stesso :/
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 14:12
Hai notato, vero, che il codice è diverso da quello che avevo postato prima?
Ad ogni modo, ora che hai in qualche modo spiegato che stai usando un blocco bbc, posso anche dirti che il tag html è inutile.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 14:16
Citazione di: emanuele il Mercoledì - 06 Gennaio 2016 - 14:12
Hai notato, vero, che il codice è diverso da quello che avevo postato prima?
Certo, intendevo proprio quel codice ;) L'ho ri-copiato e incollato per essere sicuro ma non è cambiato nulla, da quello che avevo già provato ("chiudere" l'echo).

Citazione di: emanuele il Mercoledì - 06 Gennaio 2016 - 14:12
Ad ogni modo, ora che hai in qualche modo spiegato che stai usando un blocco bbc, posso anche dirti che il tag html è inutile.
Sto usando un blocco html come hai detto tu all'inizio qui
Citazione di: emanuele il Martedì - 05 Gennaio 2016 - 23:29
1) costruire una pagina html
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 14:32
Citazione di: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 14:16
Certo, intendevo proprio quel codice ;) L'ho ri-copiato e incollato per essere sicuro ma non è cambiato nulla, da quello che avevo già provato ("chiudere" l'echo).
Guardando il codice HTML della pagina che hai linkato, direi che hai solo messo un ";" dopo form e non il "apice-punto-e-virgola" dopo html. Ma va beh, passiamo oltre.

Citazione di: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 14:16
Sto usando un blocco html come hai detto tu all'inizio qui
Citazione di: emanuele il Martedì - 05 Gennaio 2016 - 23:29
1) costruire una pagina html
Io ho detto una "pagina html" in generale, siccome tu non hai specificato dove volevi usarlo, per me una pagina html non è "una pagina HTML di SP", ma *una pagina HTML* e basta.

Comunque, filosofia a parte, il codice per un blocco/paginaSP php è:
if (!empty($_POST['paste']))
{
echo createPast($_POST['paste']);
}
else
{
createForm();
}

function createPaste($text)
{
$api_dev_key = 'CENSORED';
$api_paste_code = $text; // your paste text
$api_paste_private = '0'; // 0=public 1=unlisted 2=private
$api_paste_name = 'Virtual Interactive Games Entertainment';
$api_paste_expire_date = 'N';
$api_paste_format = 'text';
$api_user_key = '';
$api_paste_name = urlencode($api_paste_name);
$api_paste_code = urlencode($api_paste_code);


$url = 'http://pastebin.com/api/api_post.php';
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'api_option=paste&api_user_key='.$api_user_key.'&api_paste_private='.$api_paste_private.'&api_paste_name='.$api_paste_name.'&api_paste_expire_date='.$api_paste_expire_date.'&api_paste_format='.$api_paste_format.'&api_dev_key='.$api_dev_key.'&api_paste_code='.$api_paste_code.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);

return curl_exec($ch);
}

function createForm()
{
echo '
<form action="">
<textarea name="paste"></textarea>
<input type="button" value="salva">
</form>';
}

Qua funziona (almeno la visualizzazione, per il "posting" vero e proprio ci sarebbe probabilmente da correggere la action del tag form con quello effettivo, ma forse non è strettamente necessario, prova. ;)
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 14:36
No, ti assicuro che il codice era *esattamente* come lo avevi scritto tu, e nemmeno io mi spiego perchè lo riconoscesse a metà ._.

Non funziona perchè non invia nulla quando premo salva XD
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 14:39
Ed allora dove c'è action prova con:
action="' . $scripturl . '?page=page4110"
naturalmente:
global $scripturl;
all'inizio della funzione.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 15:01
Ancora niente, weird.
function createForm()
{
global $scripturl;
echo '
<form action="' . $scripturl . '?page=page4110">
<textarea name="paste"></textarea>
<input type="button" value="salva">
</form>';
}
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 16:26
Il type è submit, stavo pensando al tag button intanto che scrivevo.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 16:55
E puoi dare uno schiaffo morale anche a me per non averlo visto #_#

Ora qualcosa fa, ma se funziona non posso vederlo perchè appena clicco il pulsante rimanda ad http://virtualinteractivege.com/index.php?paste=testing (avevo messo "testing" come input).
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 17:12
Che palle le form.
<form action="' . $scripturl . '?page=page4110" method="post" accept-charset="' . $context['character_set'] . '">
e $context in global.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 18:54
CitazioneFatal error: Call to undefined function createPast() in /home/flavio/public_html/Sources/Subs-Portal.php(1167) : eval()'d code on line 3
Appena posto.
Ho il Disable template evaluation già attivo!

function createForm()
{
global $scripturl, $context;
echo '
<form action="' . $scripturl . '?page=page4110" method="post" accept-charset="' . $context['character_set'] . '">
<textarea name="paste"></textarea>
<input type="submit" value="salva">
</form>';
}
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 21:24
C'è un typo createPaste, con la e finale.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Mercoledì - 06 Gennaio 2016 - 21:53
Funge :D
L'unico problema è che non riesce a riconoscere il link che ritorna, perchè il link in sè funziona, ma non è in <a href> per cui si deve evidenziare a mano. Non capisco come si faccia perchè è un return curl_exec, come lo "wrappo" in un mini-<a href>?
Titolo: Re:Pastebin API
Inserito da: emanuele il Mercoledì - 06 Gennaio 2016 - 23:35
echo createPast($_POST['paste']);

$result = createPast($_POST['paste']);
echo '<a href="' . $result . '">' . $result . '</a>';

A seguire i trend, sarebbe meglio qualcosa tipo:
$result = createPast($_POST['paste']);
echo '<input type="text" value="' . $result . '" />';

e volendo fare i fini un "auto-seleziona-tutto-onfocus", ma questo te lo lascio come compito per le vacanze... ah, son finite? xD
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Giovedì - 07 Gennaio 2016 - 08:08
Prende forma :D

if (!empty($_POST['paste']))
{
$result = createPaste($_POST['paste']);
echo '<input ID="pastebinoutput" type="text" value="' . $result . '" onfocus="this.select();" onmouseup="return false;" />';
}
else
{
createForm();
}

function createPaste($text)
{
$api_dev_key = 'CENSORED';
$api_paste_code = $text; // your paste text
$api_paste_private = '0'; // 0=public 1=unlisted 2=private
$api_paste_name = 'Virtual Interactive Games Entertainment';
$api_paste_expire_date = '10M';
$api_paste_format = 'text';
$api_user_key = '';
$api_paste_name = urlencode($api_paste_name);
$api_paste_code = urlencode($api_paste_code);


$url = 'http://pastebin.com/api/api_post.php';
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'api_option=paste&api_user_key='.$api_user_key.'&api_paste_private='.$api_paste_private.'&api_paste_name='.$api_paste_name.'&api_paste_expire_date='.$api_paste_expire_date.'&api_paste_format='.$api_paste_format.'&api_dev_key='.$api_dev_key.'&api_paste_code='.$api_paste_code.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);

return curl_exec($ch);
}
function createForm()
{
global $scripturl, $context;
echo '
<form action="' . $scripturl . '?page=pastebin" method="post" accept-charset="' . $context['character_set'] . '">
<textarea name="paste"></textarea>
<input type="submit" value="Send!">
</form>';
}

E sto anche cominciando a capirci qualcosa! Quanto sarebbe difficile farglielo fare senza nemmeno ricaricare la pagina e farlo passare credo per un qualche voodoo javascript? Mi risparmierebbe un tantino di fatica, anche se già così è figoso :D
Intanto grazie per l'aiuto :)
Titolo: Re:Pastebin API
Inserito da: emanuele il Venerdì - 08 Gennaio 2016 - 23:47
jQuery è un'opzione?
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena il Sabato - 09 Gennaio 2016 - 10:54
Credo di sì,già usato in diverse parti del forum per cui credo non serva nemmeno chiamare un file.