Italian SMF

Supporto SMF => SMF 2.0 => Topic aperto da: Flavio93Zena - Martedý, 05 Gennaio 2016 16:19

Titolo: Pastebin API
Inserito da: Flavio93Zena - Martedý, 05 Gennaio 2016 16:19
Io ho questo codice:
Codice: [Seleziona]
$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 - Martedý, 05 Gennaio 2016 20:48
Io con l'esempio di pastebin ottengo un paste valido, con il tuo ottengo:
Citazione
Your 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 - Martedý, 05 Gennaio 2016 21:19
Sý, ma mi hai praticamente ripetuto quello che giÓ sapevo ;_;
Titolo: Re:Pastebin API
Inserito da: emanuele - Martedý, 05 Gennaio 2016 21:46
Ma non quanto hai scritto.
Hai scritto:
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 - Martedý, 05 Gennaio 2016 21:57
Ma io voglio postare qualcosa di diverso, l'ho scritto accipicchia
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 - 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.
Codice: [Seleziona]
<?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 - 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 - 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 - Mercoledý, 06 Gennaio 2016 13:12
nÚ riesco ad inviare.
E l'ultima funzione pare rotta perchŔ si vedono caratteri extra :/

Codice: [Seleziona]
function createForm()
{
echo '<html>
<form action="">
<textarea name="paste"></textarea>
<input type="button" value="salva">
</form>;
</html>
}
Titolo: Re:Pastebin API
Inserito da: emanuele - Mercoledý, 06 Gennaio 2016 13:15
Codice: [Seleziona]
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 - 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 - 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 - Mercoledý, 06 Gennaio 2016 14:16
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).

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
1) costruire una pagina html
Titolo: Re:Pastebin API
Inserito da: emanuele - Mercoledý, 06 Gennaio 2016 14:32
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.

Sto usando un blocco html come hai detto tu all'inizio qui
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 Ŕ:
Codice: [Seleziona]
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 - 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 - Mercoledý, 06 Gennaio 2016 14:39
Ed allora dove c'Ŕ action prova con:
Codice: [Seleziona]
action="' . $scripturl . '?page=page4110"naturalmente:
Codice: [Seleziona]
global $scripturl;all'inizio della funzione.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena - Mercoledý, 06 Gennaio 2016 15:01
Ancora niente, weird.
Codice: [Seleziona]
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 - Mercoledý, 06 Gennaio 2016 16:26
Il type Ŕ submit, stavo pensando al tag button intanto che scrivevo.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena - 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 - Mercoledý, 06 Gennaio 2016 17:12
Che palle le form.
Codice: [Seleziona]
<form action="' . $scripturl . '?page=page4110" method="post" accept-charset="' . $context['character_set'] . '">e $context in global.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena - Mercoledý, 06 Gennaio 2016 18:54
Citazione
Fatal 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!

Codice: [Seleziona]
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 - Mercoledý, 06 Gennaio 2016 21:24
C'Ŕ un typo createPaste, con la e finale.
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena - 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 - Mercoledý, 06 Gennaio 2016 23:35
Codice: [Seleziona]
echo createPast($_POST['paste']);
Codice: [Seleziona]
$result = createPast($_POST['paste']);
echo '<a href="' . $result . '">' . $result . '</a>';
A seguire i trend, sarebbe meglio qualcosa tipo:
Codice: [Seleziona]
$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 - Giovedý, 07 Gennaio 2016 08:08
Prende forma :D

Codice: [Seleziona]
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 - Venerdý, 08 Gennaio 2016 23:47
jQuery Ŕ un'opzione?
Titolo: Re:Pastebin API
Inserito da: Flavio93Zena - 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.
SimplePortal 2.3.7 © 2008-2018, SimplePortal