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 ;