Sistema di votazione

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Ciao a tutti, sono nuovo e vorrei sapere come creare una pagina del genere (NON È SPAM): http://www.stonati.net/radio-stonata/playlist.asp?tipo_richiesta=webchart
Già ho qualche codice ma non so dove e come sistemarli.
HTML:
<table>
  <tr> <td> 
    <from name="vote1" action="vote.php" method="POST">
      <input type="hidden" name="id" value="1" />
      <input type="submit" name="Submit1" value="Vota" />
    </form>
    Nome
  </td> </tr>
  <!-- eccetera -->
</table>
PHP:
<?php

function get_client_ip()
    {
        if (isset($_SERVER["REMOTE_ADDR"]))
            return $_SERVER["REMOTE_ADDR"];
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
            return $_SERVER["HTTP_X_FORWARDED_FOR"];
        if (isset($_SERVER["HTTP_CLIENT_IP"]))
            return $_SERVER["HTTP_CLIENT_IP"];
    }

mysql_connect(...);
mysql_select_db(...);

$ip = get_client_ip();
if ( ($result = mysql_query("SELECT * FROM users_ip WHERE ip='$ip';")) && mysql_num_rows($result) > 0 )
   if ( time() - mysql_result($result, 0, "timestamp") < 24 * 60 * 60 )
   {
      mysql_close();
      die("Hai già votato!");
   }
   else
      mysql_query("UPDATE users_ip WHERE ip='$ip' SET timestamp=" . time() . ";");

$id = $_POST["id"];
if (isnumeric($id))
   mysql_query("UPDATE songs WHERE id=$id SET votes=votes+1;");
else
{
   mysql_close();
   die("id non valido!");
}

mysql_close();
?>

Ringrazio immensamente tutti coloro che vorranno aiutarmi.
Ho bisogno di questo codice perché ho una radio e volevo creare una top di canzoni.
Chiunque mi risolverà il dilemma verrà pubblicizzato nella mia radio (avente più di 100 ascolti al giorno). Non è un ricatto, ma una ricompensa :)
VI RINGRAZIO!!!!!! :-D
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
in che senso non sai come sistemarli? cioè lo script non ti funzia o come collegare il form con lo script di votazione?
se è il secondo caso basta che tu faccia una paginetta php chiamata (es.) vote.php.
ti metto lo schema

PHP:
<?php 

function get_client_ip() 
    { 
        if (isset($_SERVER["REMOTE_ADDR"])) 
            return $_SERVER["REMOTE_ADDR"]; 
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) 
            return $_SERVER["HTTP_X_FORWARDED_FOR"]; 
        if (isset($_SERVER["HTTP_CLIENT_IP"])) 
            return $_SERVER["HTTP_CLIENT_IP"]; 
    } 
if(isset($_POST['Submit1'])){//verifichi che sia stato premuto il submit
	//qui lo script php che hai postato
	//.........
}

?>
<table>
  <tr> <td> 
    <from name="vote1" action="vote.php" method="POST">
      <input type="hidden" name="id" value="1" />
      <input type="submit" name="Submit1" value="Vota" />
    </form>
    Nome
  </td> </tr>
  <!-- eccetera -->
</table>
 
Ultima modifica:

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Dovrei fare quindi due pagine?
In form.html (ad esempio) metto il pulsante vota.
In vote.php dovrei mettere:
PHP:
<?php  

function get_client_ip()  
    {  
        if (isset($_SERVER["REMOTE_ADDR"]))  
            return $_SERVER["REMOTE_ADDR"];  
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))  
            return $_SERVER["HTTP_X_FORWARDED_FOR"];  
        if (isset($_SERVER["HTTP_CLIENT_IP"]))  
            return $_SERVER["HTTP_CLIENT_IP"];  
    }  
if(isset($_POST['Submit1'])){
function get_client_ip() 
    { 
        if (isset($_SERVER["REMOTE_ADDR"])) 
            return $_SERVER["REMOTE_ADDR"]; 
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) 
            return $_SERVER["HTTP_X_FORWARDED_FOR"]; 
        if (isset($_SERVER["HTTP_CLIENT_IP"])) 
            return $_SERVER["HTTP_CLIENT_IP"]; 
    } 

mysql_connect(...); 
mysql_select_db(...); 

$ip = get_client_ip(); 
if ( ($result = mysql_query("SELECT * FROM users_ip WHERE ip='$ip';")) && mysql_num_rows($result) > 0 ) 
   if ( time() - mysql_result($result, 0, "timestamp") < 24 * 60 * 60 ) 
   { 
      mysql_close(); 
      die("Hai già votato!"); 
   } 
   else 
      mysql_query("UPDATE users_ip WHERE ip='$ip' SET timestamp=" . time() . ";"); 

$id = $_POST["id"]; 
if (isnumeric($id)) 
   mysql_query("UPDATE songs WHERE id=$id SET votes=votes+1;"); 
else 
{ 
   mysql_close(); 
   die("id non valido!"); 
} 

mysql_close(); 
} 

?>
Oppure dovrei eliminare:
PHP:
function get_client_ip() 
    { 
        if (isset($_SERVER["REMOTE_ADDR"])) 
            return $_SERVER["REMOTE_ADDR"]; 
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) 
            return $_SERVER["HTTP_X_FORWARDED_FOR"]; 
        if (isset($_SERVER["HTTP_CLIENT_IP"])) 
            return $_SERVER["HTTP_CLIENT_IP"]; 
    }

Un'altra cosa più che banale:
PHP:
mysql_connect(...); 
mysql_select_db(...);
Come li collego?
Io ho una pagina connect.php del genere (ho il database di Altervista):
PHP:
<?
$dbhost = "localhost";
$dbuser = "USER";
$dbpass = "";
$dbname = "my_USER";

$db = mysql_pconnect($dbhost,$dbuser,$dbpass); 
mysql_select_db("$dbname",$db); 
?>
Grazie!
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
io farei una pagina unica
sopra la parte php
e sotto l'html (il form)
poi scusa, forse mi ero epresso male
la definizione della function get_client_ip() da mettere solo una volta (se metti due volte la definizione ti da errore), io la metterei prima dell'if (generalmente le funzioni si definiscono nella prima parte di php) l'importante è che siano definite prima di essere richiamate
per la pagina connect.php puoi mettre l'istruzione
PHP:
require_once("connect.php");//attento ai percorsi per richiamarla
subito dopo la definizione della funzione oppure se vuoi dentro l'if
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Grazie per la risposta pronta.
Ho creato la pagina vote.php e messo tutto lì dentro...
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php 
function get_client_ip() 
    { 
        if (isset($_SERVER["REMOTE_ADDR"])) 
            return $_SERVER["REMOTE_ADDR"]; 
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) 
            return $_SERVER["HTTP_X_FORWARDED_FOR"]; 
        if (isset($_SERVER["HTTP_CLIENT_IP"])) 
            return $_SERVER["HTTP_CLIENT_IP"]; 
    } 
require_once("connect.php");
$ip = get_client_ip(); 
if ( ($result = mysql_query("SELECT * FROM users_ip WHERE ip='$ip';")) && mysql_num_rows($result) > 0 ) 
   if ( time() - mysql_result($result, 0, "timestamp") < 24 * 60 * 60 ) 
   { 
      mysql_close(); 
      die("Hai già votato!"); 
   } 
   else 
      mysql_query("UPDATE users_ip WHERE ip='$ip' SET timestamp=" . time() . ";"); 

$id = $_POST["id"]; 
if (is_numeric($id)) 
   mysql_query("UPDATE songs WHERE id=$id SET votes=votes+1;"); 
   header("form.html");
else 
{ 
   mysql_close(); 
   die("id non valido!"); 
} 

mysql_close(); 
?>
<table>
  <tr> <td> 
    <form name="vote1" action="vote.php" method="POST">
      <input type="hidden" name="id" value="1" />
      <input type="submit" name="Submit1" value="Vota" />
    </form>
    Nome
  </td> </tr>
  <!-- eccetera -->
</table>
</body>
</html>

Però...
Parse error: syntax error, unexpected T_ELSE in /membri/USER/Votazione/vote.php on line 33

PHP:
if (is_numeric($id))
   mysql_query("UPDATE songs WHERE id=$id SET votes=votes+1;"); 
   header("form.html");
else // qui mi da errore
{ 
   mysql_close(); 
   die("id non valido!"); 
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto metti le parentesi graffe

PHP:
//....
if (is_numeric($id))
{ 
   mysql_query("UPDATE songs WHERE id=$id SET votes=votes+1;");  
   header("form.html");
}
else // qui mi da errore 
{  
   mysql_close();  
   die("id non valido!");  
}
//......
e verifica che tutte siano aperte e chiuse, poi lo script ti da errorre: non puoi usare
header("form.html");
in questo punto, l'header deve avvenire prima di qualsiasi output html e tu hai un sacco di html prima dell'header
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns.........

poi perchè hai tolto l'if del submit?

poi (non stufarti) se hai un po' di pazienza (e sempre che abbia capito cosa vuoi fare) ti posto lo script come lo farei io
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Ho aspettato 3 mesi, posso aspettare qualcos'altro.
Quelle erano i codici base per non iniziare da 0, ma se tu sei disponibile per me va bene!
Quello che voglio fare io è una cosa del genere:
PRIMA DI VOTARE QUALSIASI CANZONE
HTML:
<table border="0">
  <tr>
    <td>Canzone 1 </td>
    <td><input type="submit" name="Submit" value="Vota" /></td>
    <td>17 voti </td>
  </tr>
  <tr>
    <td>Canzone 2 </td>
    <td><input type="submit" name="Submit2" value="Vota" /></td>
    <td>17 voti </td>
  </tr>
  <tr>
    <td>Canone 3 </td>
    <td><input type="submit" name="Submit3" value="Vota" /></td>
    <td>15 voti </td>
  </tr>
</table>
(se una canzone ha lo stesso numero di voti di un'altra, vengono messe in ordine alfabetico)

QUINDI, SE VOTO LA Canzone 2:
HTML:
<table border="0">
  <tr>
    <td>Canzone 2 </td>
    <td><input type="submit" name="Submit4" value="Vota" disabled="disabled" /></td> <!-- disabilito il pulsante per evitare il doppio voto -->
    <td>18 voti </td>
<!-- aumento un voto -->
  </tr>
  <tr>
    <td>Canzone 1 </td>
    <td><input type="submit" name="Submit22" value="Vota" /></td>
    <td>17 voti </td>
  </tr>
  <tr>
    <td>Canone 3 </td>
    <td><input type="submit" name="Submit32" value="Vota" /></td>
    <td>15 voti </td>
  </tr>
</table>
Se mettere il numero dei voti è più complicato non importa, ma l'importante è la base.
Grazie infinitamente!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
si avevo quindi capito quello che vuoi fare, però mi sembra che tu non abbia pensato bene a come sviluppare il tutto (ma può darsi che mi sbagli).
1. vuoi presentare a video i titoli delle canzoni con accanto un pulsante per votare
1.a. hai pensato di farti una tabella con il titolo e i voti della canzone (ed eventualmente altri campi come autore cantante…)? oppure pensi di inserire manina manina i titoli ecc.. tutte le volte modificando la pagina (cerca di sfruttare al massimo le potenzialità dinamiche di php+mysql)?
1.b. se ci hai pensato oppure ti è venuto in mente leggendo sopra, devi pensare di farti una pagina admin (accessibile con password) in cui potrai inserire nuove canzoni, modificare o eliminare le esistenti
1.b.1. se fai così forse ti serve anche una tabella per poter memorizzare la/le pass ed eventualmente modificarla/e periodicamente e dare a qualche tuo collaboratore determinati permessi (es solo inserire una nuova canzone)
2. vuoi che un tuo utente non possa votare di nuovo se ha gia espresso un suo voto (per una canzone specifica o per una qualsiasi) prima che sia passato un giorno. e qui registri il suo ip e il tempo del voto. però se non ripulisci (puoi farlo in automatico, oppure dalla pg admin ogni tanto fai pulizia) degli ip che hanno votato (es.) due/tre/quattro… giorni fa puoi ritrovarti una tabella (ti auguro) che non finisce piu. non credo che ti serva mantenere un ip di un utente che abbia espresso il suo voto un anno fa’.
2.a. dicevo canzone specifica o qualsiasi perché ad es. un tuo utente da il voto alla canzone A,
per 24 ore NON può rivotare:
per la canzone A e per nessun’altra
oppure
per la canzone A, ma puo esprimere il voto per un’altra
(la prima opzione è più semplice da fare)

Se quanto detto risponde alle tue esigenze passo passo (e con pazienza) ti do una mano e pag dopo pag arriviamo (sper) alla fine, altrimenti do un occhio allo script che hai buttato giù e ti posto le osservazioni, avvisandoti però che poi rimetterci le mani (l’appetito vien mangiando) può diventare problematico.
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Ciao.
Ti ringrazio per la disponibilità e ti dico ciò che vorrei fare.
vuoi presentare a video i titoli delle canzoni con accanto un pulsante per votare
Sì.
hai pensato di farti una tabella con il titolo e i voti della canzone (ed eventualmente altri campi come autore cantante…)? oppure pensi di inserire manina manina i titoli ecc.. tutte le volte modificando la pagina (cerca di sfruttare al massimo le potenzialità dinamiche di php+mysql)?
se ci hai pensato oppure ti è venuto in mente leggendo sopra, devi pensare di farti una pagina admin (accessibile con password) in cui potrai inserire nuove canzoni, modificare o eliminare le esistenti
Se creare una pagina di amministrazione è troppo difficile, potrei farlo con i codici, ma sarebbe molto meglio avere una pagina di amministrazione (la grafica non importa assolutamente nulla).
se fai così forse ti serve anche una tabella per poter memorizzare la/le pass ed eventualmente modificarla/e periodicamente e dare a qualche tuo collaboratore determinati permessi (es solo inserire una nuova canzone)
Proprio così. Ma se perdiamo molto tempo su questo do il compito a chi do più fiducia.
vuoi che un tuo utente non possa votare di nuovo se ha gia espresso un suo voto (per una canzone specifica o per una qualsiasi) prima che sia passato un giorno. e qui registri il suo ip e il tempo del voto. però se non ripulisci (puoi farlo in automatico, oppure dalla pg admin ogni tanto fai pulizia) degli ip che hanno votato (es.) due/tre/quattro… giorni fa puoi ritrovarti una tabella (ti auguro) che non finisce piu. non credo che ti serva mantenere un ip di un utente che abbia espresso il suo voto un anno fa’.
Allora, un utente se vota alle 22:00 del 22/04 (ad esempio) può votare soltanto quando saranno passate le 22:00 del 23/04. Quindi dopo 24 ore quell'IP verrà eliminato dal db.
dicevo canzone specifica o qualsiasi perché ad es. un tuo utente da il voto alla canzone A,
per 24 ore NON può rivotare:
per la canzone A e per nessun’altra
oppure
per la canzone A, ma puo esprimere il voto per un’altra
(la prima opzione è più semplice da fare)
L'utente non potrà votare solo la canzone scelta, ma potrà benissimo votare le altre.

Se continuare con quella base è complicato, io direi di cominciare da capo, senza badare al tempo :).
Grazie mille ancora!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
partiamo con le tabelle che ti potrebbero servire, ti do un'idea e ti spiego le scelte.
comunque pensa bene se i campi che ti indico ti servono o te ne serve di più (meglio pensarci prima perche come detto mettercile mani poi...)

tabella canzoni
id int(12) autoincrement not nul primary key //id della canzone
titolo varchar(250) not null
autore varchar(250) null//se non ti serve lo puoi lasciare vuoto
voti int(9) default 0 not null
data int(12) not nul

nel campo "data" verrà messa la data in cui inserisci la canzone , ho messo intero perche conviene usare la data
in formato timestamp come numero intero questo poi facilita le varie operazioni, quando ti serve la data in formato unano con la funzione php date() la trasformi

tabella utenti
id int(12) autoincrement not nul primary key
id_c int(12) not null //conterrà l'id della canzone che l'utente ha votato
ip varchar(25) not null //conterrà l'ip dell'utente
data int(12) not null//il momento del voto sempre in timestamp

tabella amministratore
id int(12) autoincrement not nul primary key
pass varchar(250) not null unique //conterrà la password eventualmente criptata
user varchar(250) not null //username
livello enum('A', 'C') //A per amministratore C per collaboratore

nel campo "livello" ho messo solo due possibilità una riferita all'amministratore che può fare tutto, ed una per eventuale collaboratore/i
che invece potranno fare solo determinate operazioni (es solo inserire le canzoni e non eliminarle).

a breve (spero prima di pasqua) ti mando uno script di come penso di fare il sistema di voto, sarà diverso come script da quello che hai lincato che tra l'altro è in asp

p.s.
se le modifichi (aggiungi o togli o cambi nome) informami in modo che si possa procedere in parallelo
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Tutto perfetto, password criptata (ci sono altri sistemi compatibili con questo codice oltre a md5?).
Nella tabella che vedranno gli utenti vorrei inserire anche il numero dei voti che ha avuto una canzone.
L'amministratore potrà inserire, modificare ed eliminare canzoni.
Il collaboratore potrà inserire canzoni.
Farlo in PHP è meglio, la pagina linkata era un esempio per mostrare il risultato.
Ti ringrazio, ciao! :)
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per prima cosa fatti un file php (io lo chiamo connessione.php) che ti servira in tutte le pagine in cui userai il db e che includerai con:
require_once("connessione.php");
stai attento ai percorsi se metti i vari file in cartelle diverse (io personalmente suddivido in cartelle con varie categorie di file: file da includere, immagini...)
ti metto molti commenti (che potrai togliere se vuoi)
connessione.php
PHP:
<?php
//---variabili di connessione----------------------------------------
$host = 'localhost';  //nome host
$username = 'pinco';  //user name
$password = 'pallo';  //password
$db = 'sempronio';    // nome data base
//---connessione----------------------------------------------------
$conn = @mysql_connect($host,$username,$password) or die (mysql_error());
//---selezione db---------------------------------------------------
$sel = @mysql_select_db($db) or die (mysql_error());
?>
fatto questo inizierei con le pagine per le votazioni, in pratica farei due pagine una in cui l'utente vota ed una (in puro php) in cui il voto viene registrato (dopo gli opportuni controlli)

vota.php
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- tutto quello che ti serve, css, tag meta... -->
</head>
<body>
<?php
//includo il file di connessione
require_once("connessione.php");
//faccio la query stringa, se vuoi es. fare la TOP 30 dopo data mettti LIMIT 30
//quindi ti si presentane le 30 canzoni più votate in orfine di voto e in caso di parità prima la più recente
$query_str="SELECT * FROM canzoni ORDER BY voti,data";
//e interrogo il db
$result=mysql_query($query_str);
//verifico che ci siano canzoni
$esistono=mysql_num_rows($result);
//e costruisco la tabella per presentare le canzoni
echo "<table width=\"100%\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<tr>";
if($esistono==0){//se 0 non ci sono titoli registrati
	echo "<tr><td colspan=\"5\">spiacenti, al momento non ci sono canzoni</td></tr>";
}else{//ci sono canzoni nel db
	$item=1;//mi serve per numerare
	//estraggo le canzoni eccc....
	while($riga=mysql_fetch_array($result)){
		$id=$riga['id'];
		$titolo=stripslashes($riga['titolo']);//metto strip perche l'inserimento andrà con addslashes
		$autore=stripslashes($riga['autore']);
		$voti=$riga['voti'];
		//e li presento
		echo "<tr>";
		echo "<td>$item</td>";
		echo "<td>$titolo</td>";
		echo "<td>$autore</td>";
		echo "<td>$voti</td>";
		echo "<a href=\"registra_voto.php?id=$id\" onclick=\"return(confirm('stai votando la canzone $titolo CONFERMA'))\">VOTA</a>";
		echo "<tr>";
		$item++;//incremento il contatore
	}//fine while
}//fine if-else
//fine pagina vota.php
?>
</body>

come puoi vedere ad ogni canzone corrisponde un link che punta alla pagina registra_voto.php trasmettendo con un get l'id della canzone votata.
nella registra_voto.php faremo tutti i controlli e se ok registramo il voto.

registra_voto.php
PHP:
<?php
ob_start();
$proviene=basename($_SERVER['HTTP_REFERER']);//leggo la pagina di provenienza che dovrà essere vota.php?id=xy
//tolgo il get
$pagina=explode("?",$proviene);
if($pagina[0] != "vota.php"){
	header("location:vota.php");
	//questo impedisce che un utente possa votare inserendo direttamente l'url della pagina con un id a suo piacere
	/*
	se per esempio dovesse scrivere sul suo bw
	http://www.tuo_sito.it/registra_voto.php?id=335
	verrebbe riinviato automaticamente alla pagina vota.php
	*/
}else{
	//leggo l'ip
	function get_client_ip(){ 
        if (isset($_SERVER["REMOTE_ADDR"])){
            return $_SERVER["REMOTE_ADDR"];
		}
        elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
            return $_SERVER["HTTP_X_FORWARDED_FOR"];
		}
        elseif (isset($_SERVER["HTTP_CLIENT_IP"])){
            return $_SERVER["HTTP_CLIENT_IP"];
		}else{
			return FALSE;
		}
    }//fine function
	//anche se alex sa fare di meglio metto le verifiche come piace a me
	$ok_ko="";
	$ip=get_client_ip();
	if($ip==FALSE){//se non riesco a leggere l'ip
		header("location:vota.php");
	}else{
		//mi connetto al db
		require_once("connessione.php");
		//leggo il tempo
		$adesso=time();
		//e elimino gli utenti che hanno vototo pià di 24 ore fa'
		$vecchi=$adesso-(24*60*60);
		$query_del="DELETE FROM utenti WHERE data < '$vecchi'";
		$result_del=mysql_query($query_del);
		//leggo l'id della canzone
		$id=trim(strip_tags($_GET['id']);//ripulisco l'id e lo riduco ad intero
		$id=(int)$id;//considerato che gli id delle canzoni partano da 1
		if($id < 1){//era una porcheria
			header("location:vota.php");
		}else{
			//avendo eliminato tutti i vecchi devo verificare solo che non abbia
			//votato la canzone meno di 24 ore fa
			$query_v_ut="SELECT * FROM utenti WHERE id_c=$id AND ip='$ip'"
			$result_v_ut=mysql_query($query_v_ut);
			$ha_votato=mysql_num_rows($result_v_ut);
			if($ha_votato > 0){//ha votato meno di 24 ore la canzone
				$ok_ko="per questa canzone hai votato da meno di un giorno, non puoi rivotarla<br>aspetta";
			}
			if($ok_ko==""){//va tutto bene
				//uppo i voti della canzone ed  inserisco l'ip e il tempo/canzone dell'utente
				$query_up_c="UPDATE canzoni voti=voti+1 WHERE id=$id";
				$result_up_c=mysql_query($query_up_c);
				//inserisco il blocco all'utente
				$query_in_u="INSERT INTO utenti(id_c,ip,data) VALUES($id,'$ip',$adesso)";
				$result_in_u=mysql_query($query_in_u);
				$ok_ko="grazie per aver espresso un tuo voto";
			}
			//visualizzo il messaggio
			echo $ok_ko
			// e torno alla pagina vota.php dopo 4 secondi
                                      // non mi ricordo come si fa con l'header
			echo "<meta http-equiv='Refresh' content='4; URL=vota.php'>";
		}
	}
}
ob_end_flush();
?>

nella pagina registra_voto.php non mettere i vari tag html
<!DOCTYPE HTML PUBLIC ....... <html> <head> <body>.....

due ultime cose:
riempiti a mano in locale le varie tabelle per testare il tutto e se c'è qualcosa che non funzia posta l'eventuale errore che php visualizza (ho buttao giù lo script di getto)
poi a te la messa a punto grafica del layout con i css immagini...(es. al posto di VOTA potrai mettere l'imm di un pulsante con rollwer) ed eventualmente semplificare il codice che ho messo molto splittato per facilitare il debag (al massimo ci pensa alex a metterci le mani)

p.s.
ho una quindicina di giorni di fuoco, non so quindi se potrò risponderti e fare il resto in fretta
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti passo un md5 senza/con salt
PHP:
<?php
$password="asdrubale";
$salt="**pinco_pallo**";
$password_md5_senza_salt=md5($password);
$password_md5_con_salt = md5($password.$salt);      
echo "pass originale: $password<br>";
echo "pass criptata md5 senza salt: $password_md5_senza_salt<br>";
echo "pass criptata md5 con salt: $password_md5_con_salt<br>";
?>
e un sha1 senza/con
PHP:
<?php
$password="asdrubale";
$salt="**pinco_pallo**";
$password_sha1_senza_salt=sha1($password);
$password_sha1_con_salt = sha1($password.$salt);      
echo "pass originale: $password<br>";
echo "pass criptata sha1  senza salt: $password_sha1_senza_salt<br>";
echo "pass criptata sha1 con salt: $password_sha1_con_salt<br>";
?>
poi se devi proteggere l'accesso a fort knox non sono abbastanza sicure,
tieni presente che per decriptare il più semplice l'md5 ci vuole un tempo lunghissimo (anche con programmi veloci) quindi spesso è da chiedersi se il gioco vale la candela
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
il problema di md5 e sha1 è che ormai in Rete ci sono migliaia di decrypter per tentare di forzare le pass.
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Ti ringrazio.
Io cripterei le password in SHA1...
Ho provato lo script che mi hai dato, adesso provo ad inserire canzoni manualmente per vedere il risultato.
Adesso mancano le pagine di amministrazione.
Mettici quanto tempo vuoi che per ora posso fare qualche sacrificio manualmente! :D
Grazie, ciao!
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Ho provato lo script. Ho votato una canzone a caso, ma mi da subito errore.
Parse error: syntax error, unexpected ';' in /membri/radiodelmomento/vot/registra_voto.php on line 44

...che sarebbe:
PHP:
$id=trim(strip_tags($_GET['id']);
Quindi dovrei togliere punto e virgola?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il problema di md5 e sha1 è che ormai in Rete ci sono migliaia di decrypter per tentare di forzare le pass.
si hai ragione, ma come detto se non per puro divertimento "il gioco vale la candela"?
comunque forse un sistema buono potrebbe essere fare un salt prima e dopo di (es.) 1000 caratteri ciasuno ( esimmetrici) il campo diverrebbe longtext, a quel punto (se poi cripto il tutto) valla a trovare la pass
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Mi sembra un sistema di sicurezza paranoico e superfluo. È vero che in rete esistono migliaia di decrypter, ma è anche vero che riescono a decriptare solamente delle password comuni, e un utente attento non ne usa. La cosa si può facilmente aggirare obbligando l'utente ad inserire una password complessa (ad esempio almeno una lettera maiuscola, una minuscola, un numero e un simbolo). In questo modo si scongiura ogni pericolo.
 
Discussioni simili
Autore Titolo Forum Risposte Data
felino Presentazione foto e sistema di votazione PHP 2
Alessandro Le Mura Sistema votazione mysql - php a stelle PHP 3
A Sistema di votazione a stelle - star rating PHP 1
I Sistema di votazione (era: Aiuto) PHP 2
D Sistema votazione,aiuto con voti doppi PHP 6
S Sistema di votazione recensione Classic ASP 3
F Sistema rilevazione presenze PHP 1
MarcoGrazia Sistema di news interno al sito PHP 3
T SSD - errore sistema Hardware 2
R Come creare sistema Add to homescreen PHP 3
L Sistema outdoor centralizzato IP Cam e Videosorveglianza 0
F Sistema di autenticazione e pagamento PHP 3
LDB Multimedia e Internet Offro sistema di affiliazione remunerato Offerte e Richieste di scambio links 0
R [PHP] Creare sistema random PHP 3
brasoft2019 [PHP] Sistema di gestione presenze PHP 29
L Trasferimento dei file OLM Mac in formato PST sul sistema Mac Mac e Software 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino Windows 8.1: installare sistema operativo e programmi in due hard disk diversi Windows e Software 4
M Esiste un sistema di video sorveglianza simile? IP Cam e Videosorveglianza 1
W [Javascript] Eseguire script residente nel sistema da html remota Javascript 0
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
V [Visual Basic] ottenere info su sistema Visual Basic 1
E Consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 0
P Sistema per identificare utente se proviene da apertura app android Sviluppo app per Android 3
M consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 1
loois Ho un problema nella creazione di un sistema di commenti in PHP PHP 11
xone [MySQL] Comparazione data per sistema di prenotazioni MySQL 23
papayablu Calcolatore scommesse a sistema per Android? Smartphone e tablet 4
A Sistema di comunicazione visiva IP Cam e Videosorveglianza 0
N Sistema di Help di Delphi 7 non funziona su Win10 Windows e Software 0
R Sistema Operativo Windows e Software 1
MarcoGrazia [Javascript] Sistema di caricamento dinamico in base allo scrolling Javascript 3
S Sistema di iscrizione al mio sito PHP 1
F come creare un sistema ranking tra due tabelle (TOMBOLA/BINGO) PHP 8
D Sistema di videocamere alta qualita IP Cam e Videosorveglianza 1
E sistema di autenticazione PHP 4
R Sistema di conteggio (somma) HTML e CSS 4
M "BOOTMGR is missing" - formattare HD di sistema Windows e Software 2
JackIlPazzo Sistema di login e registrazione avanzato PHP 1
M Sistema per gestione file. PHP 1
S Creare Sistema di API Request e Response libero e protetto PHP 7
Christian1977 Nuovo sistema operativo Android Smartphone e tablet 3
A File di sistema PHP 6
simonetta619 sistema operativo a 32 o a 64bit? Windows e Software 1
L [gratuito] cerco sistema news xml in php5 Offerte e Richieste di Lavoro e/o Collaborazione 1
L pdo e sistema crud PHP 1
P Sistema di consultazione orari PHP 2
A windows 8 - INTERRUZIONE IMPREVISTA SERVICES DI SISTEMA Windows e Software 0
C Sistema particolare di password PHP 5
F Sistema anti MySQLi Injection? PHP 6

Discussioni simili