GDRCD - login.php? postato il 07/12/2006 12:56:19 nel forum programmazione, gdrcd e open source
Salve a tutti! Sono nuovo di questo forum ma è da parecchio che consulto GdR-online. Da tempo mi sono messo in testa di creare un gdr online, quindi ho spulciato un pò fra i tool open source. La mia scelta è ricaduta sul mitico GDRCD. In particolare, sto adoperando il GDRCD Blue. Lo trovo un tool molto interessante e... "relativamente" facile... per lo meno, per chi mastica un pò di php. E non è assolutamente il mio caso. Ad ogni modo, sto cominciando a studiare il php per interesse personale e naturalmente per aumentare le mie possibilità creative sul web. Tuttavia, non mi sembrava male cominciare a dare un'occhiata al GDRCD. Come immaginavo, tuttavia, sono incorso sin da subito in alcuni problemi. Problemi che ad esser sincero dubito siano a me dovuti. Prima di esporli, faccio alcune premesse.
Ho installato EasyPHP, quindi sono fornito di Apache e naturalmente MySQL. Come dicevo prima, ho scaricato GDRCD Blue. Sto tentando di seguire le operazioni descritte in "Prova su strada di GDR-CD", articolo presente qui su GDR-online. Riesco ad arrivare sino al passaggio numero 7, cioè quando dovrei effettuare il Login. Sia inteso che sto lavorando ancora in localhost. Ad ogni modo, dopo aver inserito il nick e la pass, mi compare una pagina con alcuni notice e alcuni errori vari, risolti grazie a qualche dritta trovata sul web. L'unico problema che attualmente permane, proveniente dal file "login.php", è un "Parse error: parse error in [...] on line 214. Ma si da il caso che la riga 214 sia l'ultima! Anche cancellando questa riga, l'errore si ripete ma nella riga precedente. E' da diversi giorni che ci perdo la testa, ma non trovo soluzione. Probabilmente per la mia incompetenza in campo di php, temo di non saper riconoscere eventuali incorrettezze nel file login.php, se ve ne sono e se sono queste a dare problemi. Ad ogni modo, spero che qualcuno di voi possa gentilmente aiutarmi!
Se serve, posso fornire il contenuto del file login.php.
Grazie per l'attenzione.
Pagine → 1
07/12/2006 13:28:56
Ah.. Capito.. Ma se manca la chiusura di un comando php, come faccio a sapere dove metterla? non conosco molto il php...
07/12/2006 13:34:58
Il problema è che non so come correggere il file.. Anche se ci fosse un codice php da chiudere, non saprei dove :P Non sono pratico di php. Posto qui il codice di login.php... Se qualche buona anima può dirmi dov'è l'errore..!
----------------------------------------------------------------------
login.php
----------------------------------------------------------------------
<? session_start();
session_register('Login');
session_register('Luogo');
session_register('Stanza');
session_register('IP');
session_register('LastTime');
session_register('Master');
session_register('Sesso_S');
session_register('IDGilda_S');
session_register('ImgGilda_S');
session_register('DescGilda_S');
session_register('IDRazza_S');
session_register('ImgRazza_S');
session_register('DescRazza_S');
session_register('Super_S');
session_register('Oggetti_S');
session_register('Prigione_S');
session_register('Esilio_S');
session_register('LogFinanza_S');
session_register('LogDoppi_S');
session_register('Gst_AR_S');
session_register('Gst_Razza_S');
session_register('Admin_S');
session_register('AdminExt_S');
include ('inc/parametri.inc.php');
#controllo di provenienza dallo stesso dominio
/*
if (strtolower(substr($_SERVER['HTTP_REFERER'], 0, strlen($par_SiteURL)))!=strtolower($par_SiteURL)) {
echo '<b>Login non avvenuto dal sito '.htmlspecialchars($par_SiteURL).' ma dal sito '.substr($_SERVER['HTTP_REFERER'], 0, strlen($par_SiteURL)).'</b><br>';
echo 'In caso di problemi, mandare il copia-e-incolla di questa pagina per email a lovetown@hotmail.it<br>';
echo '<a href="'.$par_SiteURL.'" target=_top>Vai alla home page</a>';
exit();
}
*/
include ('inc/open2.php');
$MySql = "SELECT * FROM BlackList WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND Granted = 0";
$Login1 = $_POST['Login1'];
$Pass1 = $_POST['Pass1'];
$Result = mysql_query($MySql);
if (mysql_num_rows($Result) == 1) {
$MySql = "INSERT INTO LogErrori (Nome, Errore, DataEvento, IP) VALUES ('".$Login1."', '<Bloccato>', NOW(), '".$_SERVER['REMOTE_ADDR']."')";
mysql_query($MySql);
#$target="info@2citta.it";
#$subject = "Le due città - Tentativo ".$Login1."-".$Login."-".$HTTP_COOKIE_VARS['lastlogin'].': '.$rs['Nota'];
#mail($target, $subject, strftime("%d/%m/%Y %H:%M:%S %p").': segnalato tentativo di '.$HTTP_COOKIE_VARS['lastlogin'].'-'.stripslashes($Login1).'-'.$Login." di entrare\nIP ".$_SERVER['REMOTE_ADDR']."(".gethostbyaddr($_SERVER['REMOTE_ADDR']).")\nPass:".stripslashes($Pass1)."\n".$rs['Nota']);
exit();
$rs->close;
$MySql = "SELECT * FROM Personaggio";
$MySql .= " WHERE Nome = '$Login1'";
$MySql .= " AND Pass = '$Pass1'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
if ($rs) {
$_SESSION['Login'] = trim($rs['Nome']);
$IDRazza = $rs['IDRazza'];
$IDGilda = $rs['IDGilda'];
$_SESSION['Master'] = $rs['Master'];
$Sesso = strtolower($rs['Sesso']);
$_SESSION['Sesso_S'] = $Sesso;
$_SESSION['Super_S'] = $rs['Super'];
$_SESSION['Admin_S'] = $rs['Admin'];
$Doppio = $rs['Doppio'];
$_SESSION['Pres'] = 'S';
$rs->close;
$MySql = "SELECT * FROM Razza WHERE IDRazza = '$IDRazza'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$ImgRazza = $rs['URLImg'];
$DescRazza = $rs['Razza'];
$rs->close;
if ($IDGilda != "") {
$MySql = "SELECT * FROM Gilda WHERE IDGilda = '$IDGilda'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$ImgGilda = $rs['URLImg'];
$DescGilda = $rs['Gilda'];
$_SESSION['Oggetti_S'] = $rs['Oggetti'];
$_SESSION['Super_S'] = $rs['Super'];
$_SESSION['Esilio_S'] = $rs['Esilio'];
$_SESSION['Prigione_S'] = $rs['Prigione'];
$_SESSION['LogFinanza_S'] = $rs['LogFinanza'];
$_SESSION['LogDoppi_S'] = $rs['LogDoppi'];
$_SESSION['Gst_AR_S'] = $rs['Gst_AR'];
$_SESSION['Gst_Razza_S'] = $rs['Gst_Razza'];
$rs->close;
} else {
$ImgGilda = 'nessuno.gif';
$DescGilda = 'Cittadino';
$_SESSION['Oggetti_S'] = 0;
$_SESSION['Super_S'] = 0;
$_SESSION['Esilio_S'] = 0;
$_SESSION['Prigione_S'] = 0;
$_SESSION['LogFinanza_S'] = 0;
$_SESSION['LogDoppi_S'] = 0;
$_SESSION['Gst_AR_S'] = 0;
$_SESSION['Gst_Razza_S'] = 0;
}
$_SESSION['IDGilda_S'] = $IDGilda;
$_SESSION['ImgGilda_S'] = $ImgGilda;
$_SESSION['DescGilda_S'] = $DescGilda;
$_SESSION['IDRazza_S'] = $IDRazza;
$_SESSION['ImgRazza_S'] = $ImgRazza;
$_SESSION['DescRazza_S'] = $DescRazza;
$Doppio = 0 + $Doppio;
$IP = $_SERVER['REMOTE_ADDR'];
$Host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$MySql = 'INSERT INTO LogEntrate (Nome, DataEvento, IP, Host) VALUES (\''.$_SESSION['Login'].'\', NOW(), \''.$_SERVER['REMOTE_ADDR'].'\', \''.$Host.'\')';
$Result = mysql_query($MySql);
if (($HTTP_COOKIE_VARS['lastlogin'] != $_SESSION['Login'])
&&($HTTP_COOKIE_VARS['lastlogin'] != "")) {
$MySql = 'SELECT COUNT(*) AS NumDoppi FROM Personaggio WHERE (Nome = \''.$_SESSION['Login'].'\'';
$MySql .= ' OR Nome = \''.pars($HTTP_COOKIE_VARS['lastlogin']).'\')';
$MySql .= ' AND Doppio = \''.$Doppio.'\' AND Doppio > 0';
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
if ((0 + $rs['NumDoppi']) < 2) {
$MySql = 'INSERT INTO LogDoppi (Nome, Doppio, DataEvento, IP, Host) VALUES ';
$MySql .= '(\''.$_SESSION['Login'].'\', \''.pars($HTTP_COOKIE_VARS['lastlogin']).'\', NOW(), \''.$_SERVER['REMOTE_ADDR'].'\', \''.$Host.'\')';
$Result = mysql_query($MySql);
};
$rs->close;
}
setcookie('lastlogin',$_SESSION['Login'],0,'','',0);
include ('inc/controlloesilio.php');
} else {
$rs->close;
$_SESSION['Login'] = '';
if (($Login1 != '') && ($Pass1 != '')) {
$MySql = 'INSERT INTO LogErrori (Nome, Errore, DataEvento, IP) VALUES (\''.$Login1.'\', \''.$Pass1.'\', NOW(), \''.$_SERVER['REMOTE_ADDR'].'\')';
$Result = mysql_query($MySql);
$MySql = 'SELECT count(*) FROM LogErrori WHERE IP = \''.$_SERVER['REMOTE_ADDR'].'\' AND DATE_ADD(DataEvento, INTERVAL 360 MINUTE) > NOW()';
##### si conteggiano solo i tentativi delle ultime sei ore #####
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
if ($rs[0]>9) {
$MySql = 'INSERT INTO BlackList (IP, Nota, Ora, Host) VALUES ';
$MySql .= '(\''.$_SERVER['REMOTE_ADDR'].'\', \''.$Login1.' (tenta password)\', NOW(), \''.$Host.'\')';
$Result = mysql_query($MySql);
}
}
};
include('inc/cambiastanza.php');
$cambiastanzainc = true;
if ($_SESSION['Login'] != '') {
if ($_SESSION['Stanza'] == '') {
cambiastanza(1,$_SESSION['Login']);
//cambiastanza(400,$_SESSION['Login']);
};
### Da lanciare prima del controllo esilio ###
$MySqlPersonaggio = "UPDATE Presenti SET ";
$MySqlPersonaggio .= "Pres='$Pres', ";
$MySqlPersonaggio .= "IDRazza='$IDRazza', ";
$MySqlPersonaggio .= "DescRazza='$DescRazza', ";
$MySqlPersonaggio .= "ImgRazza='$ImgRazza', ";
$MySqlPersonaggio .= "Master='".$_SESSION['Master']."', ";
$MySqlPersonaggio .= "Sesso='$Sesso', ";
$MySqlPersonaggio .= "IDGilda='$IDGilda', ";
$MySqlPersonaggio .= "DescGilda='$DescGilda', ";
$MySqlPersonaggio .= "ImgGilda='$ImgGilda', ";
$MySqlPersonaggio .= "LastIP='".$_SERVER['REMOTE_ADDR']."', ";
$MySqlPersonaggio .= "UltimoRefresh=NOW(), ";
$MySqlPersonaggio .= "OraEntrata=NOW(), ";
$MySqlPersonaggio .= "OraUscita='2037-12-31 00:00:00' ";
$MySqlPersonaggio .= "WHERE Nome = '".pars($_SESSION['Login'])."'";
mysql_query($MySqlPersonaggio);
# if (mysql_affected_rows() != 1) {
# echo "Problemi tecnici nell'aggiornamento del personaggio<br><a href='Javascript:location.reload()'>riprova</a>";
# } else {
header("Location: main.php?", true);
exit();
# }
} else { ?>
<center>Utente non riconosciuto<br>
<br>
Per recuperare la password, utilizzare il modulo presente nella home page<br>o scrivere all'indirizzo di <a href="mailto:<?=$par_WebmasterEmail?>">email</a>.<br>
<br>
Non tentare la password troppe volte, o questa postazione sarà automaticamente esclusa.
<a href="index.php">Rientra</a>
</center>
<? session_destroy(); ?>
}
07/12/2006 16:28:02
Mitica sintax highlitght di Np++..
Comunque l errore è nell ultima riga, hai chiuso il tag php prima di chiudere la parentesi.
Cambia le ultime due righe cosi: <? session_destroy();
}?>
07/12/2006 17:01:24
GDRCD ha comunque seri problemi di compatibilita' con le versioni dei server su EasyPHP, ti consiglio di usare WMServer.
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
steamdoll ha risposto alla discussione: Perché non avete più voglia di giocare?