Pastebin API

Aperto da Flavio93Zena, Martedì - 05 Gennaio 2016 - 16:19

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Flavio93Zena

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 :)

emanuele

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.

Flavio93Zena

Sì, ma mi hai praticamente ripetuto quello che già sapevo ;_;

emanuele

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. ;)

Flavio93Zena

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.

emanuele

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.

Flavio93Zena


emanuele

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).

Flavio93Zena

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>
}

emanuele

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.

Flavio93Zena

Nope, per il poco di conoscenza di php che ho, avevo già provato quel codice, puoi vedere il risultato tu stesso :/

emanuele

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.

Flavio93Zena

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

emanuele

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. ;)

Flavio93Zena

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

Discussioni simili (1)