Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    2

    Classifica autoaggiornabile

    salve a tutti! mi sono appena iscritto e sto seguendo il corso di php io volevo creare una classifica autoggiornabile come questa http://pesol.forumcommunity.net/
    Un mio amico ha iniziato a crearmela ma non ci riesce,fino ad ora ha creato questo:
    Io sò solo le basi minime del php,c'è qualcuno di voi in grado di finirla?
    codice:
    <u>index.php</u>
    <?php
    
    require_once("config.php");
    require_once("functions.php");
    
    mysql_connect($db_server, $db_user, $db_pass) or die("Connessione database fallita");
    mysql_select_db($db_name) or die("Selezione database fallita");
    
    $op = $_GET['op'];
    $my_ip = $_SERVER['REMOTE_ADDR'];
    $my_nick = "";
    $my_id = -1;
    
    clean_online();
    
    $sql = "SELECT u.ID_UTENTE, u.nick FROM tblUtente AS u, tblSession AS s ";
    $sql .= "WHERE u.ID_UTENTE=s.nick AND s.ip='$my_ip'";
    $result = mysql_query($sql);
    if ($row = mysql_fetch_assoc($result))
    {
    	$my_id = $row['ID_UTENTE'];
    	$my_nick = $row['nick'];
    	$data = date("U");
    	$sql = "UPDATE tblSession SET data=$data WHERE nick=$my_id";
    	mysql_query($sql);
    }
    
    echo "
    	<html>
    	<head>
    		<title>CLASSIFICA</title>
    		<meta http-equiv=\"Cache-Control\" CONTENT=\"no-cache\">
    	</head>
    	<body>
    ";
    
    echo "
    
    <a href=\"index.php\">Home</a> - ";
    if ($my_id != -1)
    {
    	echo "
    		<a href=\"index.php?op=logout\">Logout</a> - <a href=\"index.php?op=view\">View</a> - <a href=\"index.php?op=submit\">Inserisci risultato</a>
    
    		Benvenuto $my_nick
    	";
    }
    else
    {
    	echo "
    		<a href=\"index.php?op=login\">Login</a> - <a href=\"index.php?op=register\">Register</a>			
    	";
    }
    echo "</p>";
    
    switch($op)
    {
    	case "":
    		home();
    		break;
    	case "register":
    		register();
    		break;
    	case "login":
    		login();
    		break;
    	case "logout":
    		logout();
    		break;
    	case "submit":
    		submit();
    		break;
    	case "view":
    		view();
    		break;
    	case "activate":
    		activate();
    		break;
    	default:
    		error();
    		break;
    }
    
    ?>
    
    </body>
    </html>
    
    <?php
    
    mysql_close();
    
    ?>
    [/SPOILER]

    <u>config.php</u>
    [SPOILER]
    codice:
    <?php
    
    define("ERR_DEFAULT", 0);
    define("ERR_VIEW", 1);
    define("ERR_LOGIN", 2);
    define("ERR_LOGOUT", 3);
    define("ERR_SUBMIT", 4);
    define("ERR_CODE", 5);
    define("ERR_CODE2", 6);
    define("ERR_ACTIVATE", 7);
    
    $db_server = "localhost";
    $db_user = "";
    $db_pass = "";
    $db_name = "";
    
    ?>
    [/SPOILER]

    <u>functions.php</u>
    [SPOILER]
    codice:
    <?php
    
    function home()
    {
    	echo "
    
    HOME PAGE</p>";
    }
    
    function view()
    {
    	global $login, $my_ip, $my_id, $my_nick;
    
    	$sql = "SELECT * FROM tblUtente WHERE attivo=1 ORDER BY punti DESC, nick";
    	$result = mysql_query($sql);
    	
    	echo "
    		<table border=\"1\">
    			<tr><th>#</th><th>Nick</th><th>Punti</th></tr>
    	";
    	$c = 0;
    	while ($row = mysql_fetch_assoc($result))
    	{
    		$c++;
    		echo "
    			<tr><td>$c</td><td>{$row['nick']}</td><td>{$row['punti']}</td></tr>
    		";
    	}
    	echo "
    		</table>
    	";
    }
    
    function register()
    {
    	global $my_ip;
    	$errors = -1;
    	$nick = $_POST['nick'];
    	$pass = $_POST['pass'];
    	$pass2 = $_POST['pass2'];
    	$mail = $_POST['mail'];
    	if ($_POST['submit'] == 1)
    	{
    		$errors = 0;
    		$sql = "SELECT * FROM tblUtente WHERE nick='$nick'";
    		$result = mysql_query($sql);
    		if (mysql_num_rows($result) > 0)
    		{
    			$errors = 1;
    			echo "<span style=\"color:red\">Username gi&agrave; esistente</span>
    ";
    		}
    		if (!check_mail($mail))
    		{
    			$errors = 1;
    			echo "<span style=\"color:red\">Email non corretta</span>
    ";
    		}
    		if ($pass != $pass2)
    		{
    			$errors = 1;
    			echo "<span style=\"color:red\">Password non corrispondenti</span>
    ";
    		}
    	}
    	if (!$errors)
    	{
    		$passc = sha1($pass);
    		$data = date("U");
    		$sql = "INSERT INTO tblUtente(nick, password, email, data, ip) ";
    		$sql .= "VALUES('$nick', '$passc', '$mail', $data, '$my_ip')";
    		mysql_query($sql);
    
    		$sql = "SELECT * FROM tblUtente WHERE data=$data";
    		$result = mysql_query($sql);
    		$row = mysql_fetch_assoc($result);
    
    		$code = "\${$row['ID_UTENTE']}\$" . sha1($nick . $data);
    
    		$dest = $mail;
    		$oggetto = "Attivazione utente";
    		$messaggio = "Clicca link per attivare utente\n\n";
    		$messaggio .= "http://easyprog.altervista.org/pgw_classifica/index.php?op=activate&code=$code";
    		mail($dest, $oggetto, $messaggio);
    
    		echo "Registrazione effettuata con successo
    ";
    		echo "Seguire istruzioni nella mail per attivare utente.";	
    	}
    	else
    	{
    		echo "
    			<form action=\"\" method=\"post\">
    				<input type=\"hidden\" name=\"submit\" value=\"1\">
    				Nick: <input type=\"text\" name=\"nick\">
    
    				Password: <input type=\"password\" name=\"pass\">
    
    				Password2: <input type=\"password\" name=\"pass2\">
    
    				Email: <input type=\"text\" name=\"mail\">
    
    				<input type=\"submit\" value=\"Registrati\">
    			</form>
    		";
    	}
    }
    
    function login()
    {
    	global $login, $my_ip, $my_id;
    	if ($my_id != -1)
    	{
    		error(ERR_LOGIN);
    		return;
    	}
    
    	$errors = -1;
    	$nick = $_POST['nick'];
    	$pass = $_POST['pass'];
    	$passc = sha1($pass);
    	if ($_POST['submit'] == 1)
    	{
    		$errors = 0;
    		$sql = "SELECT * FROM tblUtente WHERE nick='$nick' AND password='$passc' AND attivo=1";
    		$result = mysql_query($sql);
    		if (mysql_num_rows($result) == 0)
    		{
    			$errors = 1;
    			echo "<span style=\"color:red\">Username e/o password errati</span>
    ";
    		}
    	}
    	if (!$errors)
    	{
    		$data = date("U");
    		$sql = "SELECT ID_UTENTE FROM tblUtente WHERE nick='$nick'";
    		$result = mysql_query($sql);
    		$row = mysql_fetch_assoc($result);
    		$idnick = $row['ID_UTENTE'];
    		$sql = "INSERT INTO tblSession(nick, data, ip) ";
    		$sql .= "VALUES('$idnick', $data, '$my_ip')";
    		mysql_query($sql);
    
    		echo "
    			Login effettuato con successo
    
    			Ora sarai reindirizzato alla home page tra 5 secondi oppure clicca <a href=\"index.php\">qui</a>.
    			<script language=\"javascript\">
    				setInterval(\"location.href = 'index.php'\", 5000);
    			</script>
    		";	
    		
    	}
    	else
    	{
    		echo "
    			<form action=\"\" method=\"post\">
    				<input type=\"hidden\" name=\"submit\" value=\"1\">
    				Nick: <input type=\"text\" name=\"nick\">
    
    				Password: <input type=\"password\" name=\"pass\">
    
    				<input type=\"submit\" value=\"Login\">
    			</form>
    		";
    	}	
    }
    
    function logout()
    {
    	global $login, $my_ip, $my_id;
    	
    	if ($my_id == -1)
    	{
    		error(ERR_LOGOUT);
    		return;
    	}
    	
    	$sql = "DELETE FROM tblSession WHERE ip='$my_ip'";
    	mysql_query($sql);
    	echo "
    		Logout effettuato con successo
    
    		Ora sarai reindirizzato alla home page tra 5 secondi oppure clicca <a href=\"index.php\">qui</a>.
    		<script language=\"javascript\">
    			setInterval(\"location.href = 'index.php'\", 5000);
    		</script>
    	";
    }
    
    function submit()
    {
    	global $login, $my_ip, $my_id, $my_nick;
    	if ($my_id == -1)
    	{
    		error(ERR_SUBMIT);
    		return;
    	}
    
    	$nick1 = $_POST['nick1'];
    	$nick2 = $_POST['nick2'];
    	$ris = $_POST['ris'];
    	if ($_POST['submit'] == 1)
    	{
    		$data = date("U");
    		$sql = "INSERT INTO tblRisultato(nick1, nick2, ris, data) ";
    		$sql .= "VALUES($nick1, $nick2, $ris, $data)";
    		mysql_query($sql);
    
    		$sql = "UPDATE tblUtente SET punti=punti+$ris WHERE ID_UTENTE=$nick1";
    		mysql_query($sql);
    		$sql = "UPDATE tblUtente SET punti=punti-$ris WHERE ID_UTENTE=$nick2";
    		mysql_query($sql);
    
    		echo "ok";
    	}	
    	else
    	{
    		echo "
    			<form action=\"\" method=\"post\">
    				<input type=\"hidden\" name=\"submit\" value=\"1\">
    				Nick1: <select name=\"nick1\">
    						<option selected=\"selected\" value=\"$my_id\">$my_nick</option>
    					</select>
    				Nick2: <select name=\"nick2\">
    		";
    		$sql = "SELECT * FROM tblUtente WHERE ID_UTENTE<>'{$my_id}' AND attivo=1 ORDER BY nick";
    		$result = mysql_query($sql);
    		while ($row = mysql_fetch_assoc($result))
    		{
    			echo "<option value=\"{$row['ID_UTENTE']}\">{$row['nick']}</option>";
    		}
    		echo "
    					</select>
    				Risultato: <select name=\"ris\">
    						<option selected=\"selected\" value=\"2\">2 - 0</option>
    						<option value=\"1\">2 - 1</option>
    						<option value=\"-1\">1 - 2</option>
    						<option value=\"-2\">0 - 2</option>
    					</select>
    
    				<input type=\"submit\" value=\"Invia\">
    			</form>
    		";
    	}
    }
    
    function activate()
    {
    	$code = $_GET['code'];
    	$dol = strpos($code, '$', 1);
    	if ($dol === false)
    	{
    		error(ERR_CODE);
    		return;
    	}
    	$id = substr($code, 1, $dol - 1);
    	$cript = substr($code, $dol + 1);
    
    	$sql = "SELECT * FROM tblUtente WHERE ID_UTENTE=$id";
    	$result = mysql_query($sql);
    	$row = mysql_fetch_assoc($result);
    	if ($row['attivo'] != 0)
    	{
    		error(ERR_CODE2);
    		return;
    	}
    	$cript2 = sha1($row['nick'] . $row['data']);
    	if ($cript != $cript2)
    	{
    		error(ERR_CODE);
    		return;
    	}
    	$sql = "UPDATE tblUtente SET attivo=1 WHERE ID_UTENTE=$id";
    	mysql_query($sql);
    }
    
    function error($type = ERR_DEFAULT)
    {
    	echo "
    
    ERRORE: ";
    	switch($type)
    	{
    		case ERR_VIEW:
    		case ERR_LOGOUT:
    		case ERR_SUBMIT:
    			echo "login non effettuato";
    			break;
    		case ERR_LOGIN:
    			echo "login gi&agrave; effettuato";
    			break;
    		case ERR_CODE:
    			echo "codice non valido";
    			break;
    		case ERR_CODE2:
    			echo "partita gi&agrave; registrata";
    			break;
    	}
    	echo "</p>";
    }
    
    function check_mail($email)
    {
    	if (preg_match("/[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}/", $email))
    		return true;
    	return false;
    }
    
    function clean_online()
    {
    	$data = date("U") - 15*60; // 15 min * 60 sec
    	$sql = "DELETE FROM tblSession WHERE data<$data";
    	mysql_query($sql);
    }
    
    ?>
    [/SPOILER]

    Sono necessarie tre tabelle:
    [SPOILER]
    codice:
    CREATE TABLE `tblRisultato` (
      `ID_RISULTATO` int(11) NOT NULL auto_increment,
      `nick1` int(11) NOT NULL default '0',
      `nick2` int(11) NOT NULL default '0',
      `ris` int(11) NOT NULL default '0',
      `data` int(11) NOT NULL default '0',
      `data2` int(11) NOT NULL default '0',
      PRIMARY KEY  (`ID_RISULTATO`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    
    CREATE TABLE `tblSession` (
      `ID_SESSION` int(11) NOT NULL auto_increment,
      `nick` int(11) NOT NULL default '0',
      `data` int(11) NOT NULL default '0',
      `ip` varchar(20) NOT NULL default '',
      PRIMARY KEY  (`ID_SESSION`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    
    CREATE TABLE `tblUtente` (
      `ID_UTENTE` int(11) NOT NULL auto_increment,
      `nick` varchar(50) NOT NULL default '',
      `password` varchar(50) NOT NULL default '',
      `email` varchar(255) NOT NULL default '',
      `attivo` int(11) NOT NULL default '0',
      `data` int(11) NOT NULL default '0',
      `ip` varchar(20) NOT NULL default '',
      `punti` int(11) NOT NULL default '0',
      PRIMARY KEY  (`ID_UTENTE`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    2
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.