salve a tutti! mi sono appena iscritto e sto seguendo il corso di phpio 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?
[/SPOILER]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(); ?>
<u>config.php</u>
[SPOILER][/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 = ""; ?>
<u>functions.php</u>
[SPOILER][/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à 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à effettuato"; break; case ERR_CODE: echo "codice non valido"; break; case ERR_CODE2: echo "partita già 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); } ?>
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 ;

io volevo creare una classifica autoggiornabile come questa
Rispondi quotando