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 :)
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.
Sì, ma mi hai praticamente ripetuto quello che già sapevo ;_;
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. ;)
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.
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($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 '<html>
<form action="">
<textarea name="paste"></textarea>
</form>
</html>;
}
Non testato minimamente.
Nope :/ http://virtualinteractivege.com/index.php?page=page4110 Niente tasto né riesco ad inviare.
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).
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>
}
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.
Nope, per il poco di conoscenza di php che ho, avevo già provato quel codice, puoi vedere il risultato tu stesso :/
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.
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
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. ;)
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
Ed allora dove c'è action prova con:
action="' . $scripturl . '?page=page4110"
naturalmente:
global $scripturl;
all'inizio della funzione.
Ancora niente, weird.
function createForm()
{
global $scripturl;
echo '
<form action="' . $scripturl . '?page=page4110">
<textarea name="paste"></textarea>
<input type="button" value="salva">
</form>';
}
Il type è submit, stavo pensando al tag button intanto che scrivevo.
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).
Che palle le form.
<form action="' . $scripturl . '?page=page4110" method="post" accept-charset="' . $context['character_set'] . '">
e $context in global.
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>';
}
C'è un typo createPaste, con la e finale.
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>?
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
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 :)
jQuery è un'opzione?
Credo di sì,già usato in diverse parti del forum per cui credo non serva nemmeno chiamare un file.