Click su pulsante una volta sola

  • Creatore Discussione Creatore Discussione max_400
  • Data di inizio Data di inizio

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
sto facendo un sito come facebook dove sotto la foto c'è il classico pulsante "mi piace"
però questo pulsante si deve cliccare una volta sola per ogni singola persona.
Sicuramente ci vorrà il confronto con l'indirizzo ip ma non so come strutturare il programma.

ecco l'esempio :mavieni:
http://max400scuola.altervista.org/aaa/facebook.php


e questo è lo script :book:

PHP:
<div align=center>
<img src="http://static.fanpage.it/gossipfanpage/wp-content/uploads/gallery/ritocchi-al-seno-2009/giorgia-palmas-prima-e-dopo-600x450.jpg" width=500 height=350><br>

<?php

$varl = fopen("numero.txt", "r");
$num = fread($varl, filesize("numero.txt"));
fclose($varl);

echo "questa foto piace a <font color=red><b> $num </b></font> persone";

if(isset($_POST['pulsante'])){
$var = fopen("numero.txt", "r");

$var = fopen("numero.txt", "r");
$contenuto = fread($var, filesize("numero.txt"));

$somma=$contenuto+1;
fclose($var);

$var2 = fopen("numero.txt", "w+");
fwrite($var2, $somma);
fclose($var2);
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input name="pulsante" type="submit" value="mi piace">
</form>
</div>
 
La variabile che ti serve è $_SERVER['REMOTE_ADDR'], la registri nel file e se è già presente ignori il click.
 
ahhhhh - il gatto mi ha graffiato!!!

Ciao Eliox e grazie per la risposta....
il mio gatto quando ha visto il tuo avatar mi ha graffiato ed è scappato via!

Avevo immaginato che ci voleva l'indirizzo ip però ci vorrebbe anche il numero dei tentativi per quell'indirizzo ip, bisogna per forza all'avvio della pagina, creare un file.txt
che parta da 0 (una specie di variabile booleana non so se si usa anche qui su php oltre che in flash) quando questa arriva ad 1 anche se si preme il pulsante "mi piace" esso non deve aumentare più il numero delle persone a cui piace quella foto... ma visualizzerà la scritta " hai gia cliccato" con uno stupido echo.

Il problema è che se 100 o 200 persone visitano quella pagina io avrò nel mio spazio web 100 file txt con questa varibile booleana che parte da 0.

Inoltre il file che registra il numero del click sul pulsante deve incrementare per essere sempre diverso per ogni visitatore altrimenti verrà sovrascritto...

i se sono molti ma il discorso è semplice come da titolo un click una volta sola.
La prima cosa che viene in mente è un semplice reidirect ad una pagina simile ma senza pulsante.
 
clik sul link una sola volta

Ciao!!

Anche mi puoi dire come hai perfezionato il codice?

A me servirebbe così:

Ho questa immagine con il link se la clicchi vieni reindirizzato ad un'altra pagina (fino a qui non ci sono problemi) però quell'immagine-link può essere cliccata solo una volta per utente come faccio??

grazie 1000 in anticipo ^^
 
Ciao ... l'argomento è un po lungo da spiegare...
in breve ti posso dire che il sistema dell'indirizzo ip...essendo dinamico (che cambia in continuazione)
non rende il lavoro ottimale... si può troncare prendendolo come array con la funzione explode
in modo di averlo approssimativo ma bloccherebbe l'accesso ad altri utenti

guarda queste discussioni potrebbero esserti utile
http://max400.forumfree.it/?t=55721839
http://max400.forumfree.it/?t=56115227

in conclusione devi creare un sistema di registrazione in modo che ogni utente clicchi una volta sola
quindi anzicchè l'ip il confronto viene eseguito in riferimento al nome utente (o password).

Non c'è altro modo.
 
ok grazie... il sistema di registrazione c'è l'ho già visto che è un forum phpbb (ultima versione)...

quindi al tuo precedente codice:

<?php

$varl = fopen("numero.txt", "r");
$num = fread($varl, filesize("numero.txt"));
fclose($varl);

echo "questa foto piace a <font color=red><b> $num </b></font> persone";

if(isset($_POST['pulsante'])){
$var = fopen("numero.txt", "r");

$var = fopen("numero.txt", "r");
$contenuto = fread($var, filesize("numero.txt"));

$somma=$contenuto+1;
fclose($var);

$var2 = fopen("numero.txt", "w+");
fwrite($var2, $somma);
fclose($var2);
}
?>

cos'altro deve aggiungere (non sono esperto del linguaggio php)??

Grz 1000
 
il sistema di registrazione c'è l'ho già visto che è un forum phpbb (ultima versione)...
ma io non sono esperto di phpbb quindi non saprei come collegartelo.

Quello che posso fare e darti il codice per il confronto... poi vedi un po tu di allacciartelo con l'altro

esempio
http://max400scuola.altervista.org/aaa/a-php/a_login_database/select-tabella1.php

username: banana
password: joe

PHP:
<?php
if(isset($_POST['user']) && ($_POST['pass'])){
$user=htmlspecialchars($_POST['user']);
$pass=htmlspecialchars($_POST['pass']);

include "dati-connessione-database.php";

//Prepara la query, in una variabile
$query = "SELECT * FROM tua_tabella WHERE usernamet='".$_POST['user']."' AND passwordt='".$_POST['pass']."'";
$result = mysql_query($query);

//recupero i dati che arrivano dal database
$row = mysql_fetch_array($result);

$row['usernamet'];
$row['passwordt']; 

if (($user==$row['usernamet']) and ($pass==$row['passwordt'])) {

echo " - verifica: OK <br>";
echo " 5 secondi andrai alla pagina riservata";
header('Refresh: 5; url=la_tua_area_riservata.html');

}else{
echo " - verifica: KO";
}
}

?>
<br>
<div align=center>
<table><tr><td>
<form action="<? php_self; ?>" method="POST">
Username: <input type="text" name="user"><br>
Password: <input type="text" name="pass"><br>
<input type="submit" value="invia">
</form>
<div align="center">
<br>
</div>
</td></tr></table>
</div>

dove c'è scritto verifica ko... li aumenterai il numero delle persone a cui piace la foto
nell'altro "verifica ok" significa che il nome è presente in elenco (quindi hai già cliccato)
e non puoi più cliccare...

Non è difficile magari come inizio prova con 2 pagine
una in cui inserici il nome (oppure l'utente si registra)
nell'altra l'immagine col pulsante "mi piace".
A me per ora mi secca ripredere e fare prove
forse più avanti...
per ora sto lavorando ad un altro progetto
alla Posta Elettronica Anti-Spammer
in cui lo script è simile a questo...

Ciao e buona Fortuna
by Max_400
 
Ciao...

Io volevo fare una cosa del tipo metto un'immagine con link dentro al pannello utente di phpbb (fin qui tutto a posto). Mi serve il codice php per far in modo che quell'utente accedendo al suo pannello di controllo, può cliccare una sola volta sull'immagine e quindi far partire il link una sola volta.

Volevo sapere se c'è d'aggiungere qualcos'altro qui (qualche codice) o creare qualcosa nel DB.

PHP:
<?php 

$varl = fopen("numero.txt", "r"); 
$num = fread($varl, filesize("numero.txt")); 
fclose($varl); 

echo "questa foto piace a <font color=red><b> $num </b></font> persone"; 

if(isset($_POST['pulsante'])){ 
$var = fopen("numero.txt", "r"); 

$var = fopen("numero.txt", "r"); 
$contenuto = fread($var, filesize("numero.txt")); 

$somma=$contenuto+1; 
fclose($var); 

$var2 = fopen("numero.txt", "w+"); 
fwrite($var2, $somma); 
fclose($var2); 
} 
?>
 

Discussioni simili