• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Cerco aiuto per uno script per assegnare premi (credo in php)

Sopralapanca

Utente Attivo
Autore del topic
15 Gennaio 2012
360
56
Miglior risposta
0
Salve raga mi serve aiuto vi spiego tutto: ho un forum su forumcommunity devo creare un bottone che prima di tutto dopo che viene cliccato non può essere più ricliccato (anche se si ricarica la pagina) e che visualizzi un certo premio (tra quelli che sceglierò io ovviamente, e che infine invii una notifica o un email agli admin del forum se si è vinto qualcosa, se non si è vinto niente allora non farà più niente.

Per le mie (scarse) conoscenze in php per una variabile random basta fare
$var=array("2","3","4","5");
$ris=array_rand($var);
echo $var[$ris];

ma se questa pagina viene ricaricata ovviamente cambia la variabile e qui vengono i miei problemi...

se su forumcommunity tutto questo non si può fare, avevo pensato ad un collegamento ad una pagina esterna, cioè: clicco il bottone ( che si blocca e non può essere più visualizzato) si apre una piccola pagina in pop-up con il premio e se ha vinto contatta l'admin. Ovviamente però i link devono essere in un certo modo nascosto altrimenti gli utenti avranno questo link sempre a disposizione...
vi prego aiutatemi.
 
Potresti, in questa pagina esterna, settare un cookie per vedere se qualcuno ha già cliccato.

PS: Sposto in assistenza tecnica!
 
Potresti, in questa pagina esterna, settare un cookie per vedere se qualcuno ha già cliccato.

PS: Sposto in assistenza tecnica!

Ho pensato ad un'altra cosa nel frattempo. Con il javascript posso fare inserire un nome dall'utente (questo lo so fare), poi far visualizzare il premio (in quesro caso invece col javascript non so come far visualizzare una variabile che prenda un valore random tra quelli prefissati) e infine salvare nome utente e premio (possibilmente anche ora e data) in un file txt che posso visualizzare solo io.

Esempio:

Mi trovo in un thread su forumcommunity; l'utente clicca il link e va tramite pop-up in una pagina di altervista; inserisce nome(tramite prompt o con un form); visualizza il premio;il contenuto della pagina viene salvato in un file txt presente tra i miei file di altervista a cui solo io posso accedere.

Tu sapresti aiutamrmi?
 
Ho pensato ad un'altra cosa nel frattempo. Con il javascript posso fare inserire un nome dall'utente (questo lo so fare), poi far visualizzare il premio (in quesro caso invece col javascript non so come far visualizzare una variabile che prenda un valore random tra quelli prefissati) e infine salvare nome utente e premio (possibilmente anche ora e data) in un file txt che posso visualizzare solo io.

Esempio:

Mi trovo in un thread su forumcommunity; l'utente clicca il link e va tramite pop-up in una pagina di altervista; inserisce nome(tramite prompt o con un form); visualizza il premio;il contenuto della pagina viene salvato in un file txt presente tra i miei file di altervista a cui solo io posso accedere.

Tu sapresti aiutamrmi?

Ciao :emoji_slight_smile:
Il tuo problema sembra ritrovare una soluzione banale. Una piccola domanda: forum community supporta l'inserimento di codice PHP?
Si: allora potresti utilizzare la funzione Include() per inserire la porzione di codice che ti interessa(button per la premiazione etc.)
No: come hai detto tu, utilizzare un collegamento esterno.

Per impedire che l'utente raggiri ricaricando la pagina basta salvare alcune informazioni del sistema dell'utente. Potresti salvare in un database l'HWID(che varia da computer a computer e non si può cambiare) oppure IP(che varia da computer a computer ma non è statico e quindi è raggirabile). Potresti utilizzare un sottodominio Altervista per fare la parte della premiazione, del button e dell'invio dell'email all'admin che offre, oltre allo spazio, database gratuiti.

Ti consiglio di optare per il salvataggio dell'HWID ;)

Injustice
 
Per impedire che l'utente raggiri ricaricando la pagina basta salvare alcune informazioni del sistema dell'utente. Potresti salvare in un database l'HWID(che varia da computer a computer e non si può cambiare) oppure IP(che varia da computer a computer ma non è statico e quindi è raggirabile). Potresti utilizzare un sottodominio Altervista per fare la parte della premiazione, del button e dell'invio dell'email all'admin che offre, oltre allo spazio, database gratuiti.

Ti consiglio di optare per il salvataggio dell'HWID ;)
Nessun browser espone l'hwid, quindi non è possibile reperirlo tramite un linguaggio server-side come php.. Javascript al massimo può dire qualcosa sullo risoluzione dello schermo... :emoji_relieved:

Secondo me la soluzione migliore è come ti ho detto io: in questa pagina esterna salvi un cookie sul computer dell'utente e salvi su un file che hai assegnato il premio come hai detto tu :emoji_slight_smile:
 
Nessun browser espone l'hwid, quindi non è possibile reperirlo tramite un linguaggio server-side come php.. Javascript al massimo può dire qualcosa sullo risoluzione dello schermo... :emoji_relieved:

Secondo me la soluzione migliore è come ti ho detto io: in questa pagina esterna salvi un cookie sul computer dell'utente e salvi su un file che hai assegnato il premio come hai detto tu :emoji_slight_smile:

Questo non lo sapevo, lo ammetto. Credevo fosse possibile

I cookie sono sempre modificabili e cancellabili. Senza contare il fatto che ha una pulizia automatica il browser ogni tot tempo. ;)
(Credo)

Injustixe


Inviato dal mio iPhone utilizzando Tapatalk
 
@Injustice @Dvdxseo ok, informandomi qua e la sono riuscito a fare 2 pagine: nella prima si inserisce il nome in Javascript, nella seconda si visualizza il premio e invia nome e premio in un file txt. Ora mi manca solo riuscire a non far ricaricare la pagina all'utente in modo da non scrivere ogni volta premio e nome nel file txt... e qui non ho proprio idee su come fare sia per i cookie sia per altro. Suggerimenti? Inoltre vorrei far scrivere nel file txt oltre al nome ed al premio l'ora e la data...

- - - Aggiornato - - -

inoltre ora che ci penso utilizzando il codice

$fp = fopen("prova1.txt", 'a');
fwrite($fp, $nome.' '.$cognome.' ha vinto ' .$premi[$ris].' alle ore '.date("H-i-s").' del giorno ' .date("d-m-y"));
fclose($fp);

vengono inseriti nel file txt tutte le "giocate" una subito dopo l'altra ad esempio

Nome1 Cognome2 Ha vinto Premio1 alle 20-21-20 del giorno 27-02-2014Nome3 Cognome4 Ha vinto Premio6 alle 21-20-20 del giorno 27-02-2014

come posso fare per far scrivere nel file txt le giocate una sotto/sopra l'altra?

ES

Nome1 Cognome2 Ha vinto Premio1 alle 20-21-20 del giorno 27-02-2014
Nome3 Cognome4 Ha vinto Premio6 alle 21-20-20 del giorno 27-02-2014
 
Ciao @Sopralapanca, quello è sempre un metodo possibile che non avevo considerato.

All'ora per l'ora e la data puoi ricorrere a piccole funzioni del PHP, ecco il codice:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Darà come risultato l'ora attuale, anno e il giorno, Es 27 Feb 14 - 21:34:01

Mentre per ricevere altri regali e quindi evitare che la pagina scriva nuovamente i dati nel file txt basta controllare se nel file txt c'è già il nome dell'utente. Tutto questo grazie alla simpatica e utile funzione del PHP StrStr.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

(Ti ho già fatto questo piccolo abbozzo che fa già quello che vuoi; naturalmente devi dargli in entrata il testo del file txt e poi il nome dell'utente. Il codice l'ho fatto da Tapatalk, non vedo molto bene se ci sono errori o meno, in tal caso, scusami.
Spero di averti aiutato :emoji_slight_smile:

Injustice

PS: per metterla una sotto l'altra usa VBCRLF... no scusa è VB.Net :')
mmmmm... invece di scrivere in un file di testo utilizza un file .html e poi utilizzi i TAG <p>testo</p> per metterli uno sotto l'altro
o sennò usa molto più semplicemente carriagereturn (\r\n)
oppure PHP_EOL... insomma ci sono migliaia di modi! :3
 
Ultima modifica:
Ciao @Sopralapanca, quello è sempre un metodo possibile che non avevo considerato.

All'ora per l'ora e la data puoi ricorrere a piccole funzioni del PHP, ecco il codice:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Darà come risultato l'ora attuale, anno e il giorno, Es 27 Feb 14 - 21:34:01

Mentre per ricevere altri regali e quindi evitare che la pagina scriva nuovamente i dati nel file txt basta controllare se nel file txt c'è già il nome dell'utente. Tutto questo grazie alla simpatica e utile funzione del PHP StrStr.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Con quella funzione non mi scrive niente nel file txt... può essere perchè per ora sto lavorando in locale con xampp?

se può interessare questo è quello che ho scritto
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- - - Aggiornato - - -

Errore mio ho fatto copia e incolla senza prima informarmi su quella funzione.
Leggendo online ho trovato questo strstr(dove_cercare, cosa_cercare) quindi in dove cercare dovrei mettere il percorso del file txt e in cosa cercare nome cognome e premi? Se si, qual'è la sintassi corretta?
 
Con quella funzione non mi scrive niente nel file txt... può essere perchè per ora sto lavorando in locale con xampp?

se può interessare questo è quello che ho scritto
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

- - - Aggiornato - - -

Errore mio ho fatto copia e incolla senza prima informarmi su quella funzione.
Leggendo online ho trovato questo strstr(dove_cercare, cosa_cercare) quindi in dove cercare dovrei mettere il percorso del file txt e in cosa cercare nome cognome e premi? Se si, qual'è la sintassi corretta?

Sistemo un po il tuo codice ;)

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Così dovrebbe funzionare (sono sempre da TapaTalk e quindi non assicuro niente!).
Per quanto riguarda le domande, ho sbagliato ad indicarti il nome della funzione, ti ho detto StrStr quando invece era Strpos (
Perfavore, Entra oppure Registrati per vedere i Link!
).

Prova così e facci sapere ;)

(Non so se te ne sei accorto ma mentre mi rispondevi ho modificato il messaggio precedente dicendoti come andare a capo ogni volta che scrivi sul file ;) )

Injustice

NB: Non dimenticare importanti variabili e dichiarazioni dietro. Per ricavare l'ora o la data devi prima creare una variabile che la contenga e poi tramite la funzione date() ricavare le informazioni che ti servono. Es:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Ultima modifica:
@Injustice adesso invece c'è solo un errore, se è la prima volta in generale che avvio il form nella pagina in php spunta

Warning: fread(): Length parameter must be greater than 0
e il premio ricevuto

inoltre se ricarico, vince un altro premio. Se ricarico ancora spunta invece hai già vinto il premio e se continuo a ricaricare, prima o poi rispunta uno dei premi...
 
@Injustice adesso invece c'è solo un errore, se è la prima volta in generale che avvio il form nella pagina in php spunta

Warning: fread(): Length parameter must be greater than 0
e il premio ricevuto

inoltre se ricarico, vince un altro premio. Se ricarico ancora spunta invece hai già vinto il premio e se continuo a ricaricare, prima o poi rispunta uno dei premi...

Dà quell'errore la prima volta perchè va a leggere la prima volta un file vuoto (empty) e quindi non può acquisirne i byte. Cancella tutto, mettici un carattere così a casaccio all'inizio nel file, uno spazio può andare bene e poì rifai le prove, riscrivimi eventuali errori o risultati ;)

Injustice


Inviato dal mio iPhone utilizzando Tapatalk
 
Dà quell'errore la prima volta perchè va a leggere la prima volta un file vuoto (empty) e quindi non può acquisirne i byte. Cancella tutto, mettici un carattere così a casaccio all'inizio nel file, uno spazio può andare bene e poì rifai le prove, riscrivimi eventuali errori o risultati ;)

Injustice


Inviato dal mio iPhone utilizzando Tapatalk
Si ci ho pensato anche io infatti provando a scrivere qualcosa nel file come hai detto tu non compare più quell'errore, ma comunque resta il fatto che se ricarico mi assegga un altro premio, se ricarico un'altra volta non me lo assegna e infine se continuo a ricaricare prima o poi mi rispunta il premio...
 
@Sopralapanca fai 5 tentativi. Poi copia ciò che c'è scritto nel file di testo e incollalo qui, almeno lo guardo. In ingresso abbiamo sempre lo stesso nome e cognome vero?

Injustice


Inviato dal mio iPhone utilizzando Tapatalk
 
@Sopralapanca fai 5 tentativi. Poi copia ciò che c'è scritto nel file di testo e incollalo qui, almeno lo guardo. In ingresso abbiamo sempre lo stesso nome e cognome vero?

Injustice


Inviato dal mio iPhone utilizzando Tapatalk

Beh allora, inserito nome e cognome ricevo il premio la prima volta, quindi ricarico e apposto di spuntare hai già ricevuto il premio mi da un altro premio random. Ricarico un'altra volta e ancora una volta mi assegna il premio. Ricarico ma sta volta non me lo assegna provo a ricare per circa 5 volte e alla fine rispunta di nuovo un premio apposto di Hai già ricevuto il premio...

questo è quello che c'è nel file txt
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

è un file txt non php quindi per questo penso che non va a capo in automatico ma scrive \r\n
 
Cambia l'estensione in .html, appena arrivo dal computer guardo per bene il codice e ci penso un po su. Ti rispondo modificando questo messaggio


Injustice


Inviato dal mio iPhone utilizzando Tapatalk
 
  • Like
Reactions: 1 person
Ciao @Sopralapanca, domani ricreo la stessa situazione al computer e ti faccio sapere, il codice è corretto, non capisco. Tu hai solo modificato Hai cambiato l'estensione del file di testo da txt a html? Così ti mette il testo a capo ogni volta che scrivi. Guarda se cambiando l'estensione risolvi qualcosa.

Intanto prova con questo codice (ho cambiato solo il valore della variabile $nomecognomeutente per vedere se succede qualcosa. Fai i soliti test)

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

-aggiornato:

Ho capito l'errore! L'errore sta nella variabile $nomecognomeutente perchè oltre a dargli il nome e il cognome salvava anche il premio, che sappiamo entrambi essere random e quindi diverso ogni volta apparte quando riappare lo stesso premio che era già uscito e che aveva salvato. Adesso il codice dovrebbe funzionare ;)


Injustice

Inviato dal mio iPhone utilizzando Tapatalk
 
  • Like
Reactions: 1 person
Ciao @Sopralapanca, domani ricreo la stessa situazione al computer e ti faccio sapere, il codice è corretto, non capisco. Tu hai solo modificato Hai cambiato l'estensione del file di testo da txt a html? Così ti mette il testo a capo ogni volta che scrivi. Guarda se cambiando l'estensione risolvi qualcosa.

Intanto prova con questo codice (ho cambiato solo il valore della variabile $nomecognomeutente per vedere se succede qualcosa. Fai i soliti test)

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

-aggiornato:

Ho capito l'errore! L'errore sta nella variabile $nomecognomeutente perchè oltre a dargli il nome e il cognome salvava anche il premio, che sappiamo entrambi essere random e quindi diverso ogni volta apparte quando riappare lo stesso premio che era già uscito e che aveva salvato. Adesso il codice dovrebbe funzionare ;)


Injustice

Inviato dal mio iPhone utilizzando Tapatalk

Ho cambiato un po i campi, ora apposto di nome e cognome ho messo l'inserimento di 2 codici diversi. Nella variabile $nomecognomeutente ho messo = $codice1 ed ora ha funzionato, anche se controlla solo uno dei 2 codici

Inviato dal mio LG-P760 utilizzando Tapatalk