Salve a tutti, da poco sto sviluppando un browser game, ho creato i file di registrazione e login, tutti e due sono perfettamente funzionanti, il problema è che quando eseguo il login nella index, utilizzando il seguente codice:
index.php
Codice PHP:
<?php
session_start();
require('configurazione.php');
if(!isset($_SESSION['log']))
{
$_SESSION['log'] = 0;
}
if(!isset($_SESSION['username']))
{
$_SESSION['username'] = "Non Registrato";
}
// Ora controlliamo se $_SESSION['log']!=1, cioè se l'utente non è loggato
if ($_SESSION['log'] != 1)
{
// Se non lo è procediamo come segue:
if(isset($_POST['password']) && isset($_POST['username']))
{
$qry_pass = mysql_real_escape_string(md5($_POST['password']));
$qry_user = mysql_real_escape_string($_POST['username']);
$query = "SELECT * " .
"FROM utenti " .
"WHERE username = '$qry_user' " .
"AND password = '$qry_pass' " .
"AND user_reg = 1 ";
$results = mysql_query($query) or die (mysql_error());
if(mysql_num_rows($results) != 0)
{
$row = mysql_fetch_array($results);
$_SESSION['log'] = 1; // utente loggato
$_SESSION['username'] = $row['username'];
$_SESSION['oro'] = $row['oro'];
$_SESSION['livello'] = $row['livello'];
$_SESSION['id'] = $row['id'];
$_SESSION['ip'] = $row['ip'];
}
}
}
echo "Utente on-line: [b]" . $_SESSION['username'] . "[/b]
";
?>
<html>
<head>
<title>Home Page</title>
<SCRIPT LANGUAGE="JavaScript">
function ver()
{
for (i=0; i<document.forms[0].elements.length; ++i)
if(document.forms[0].elements[i].value == "")
{
alert("Inserire username e password!");
document.forms[0].elements[i].focus();
return false;
}
return true;
}
</SCRIPT>
</head>
<body>
<?php
/*A seconda del valore contenuto in $_SESSION['log'] 0/1
possiamo visulizzare alcune parti html piuttosto che altre.*/
if ($_SESSION['log'] != 1)
{
?>
<form name="login" action="index.php" method="post" onSubmit="return ver();">
Username
<input name="username" type="text" size="15" maxlength="11">
Password
<input name="password" type="password" maxlength="8">
<input type="submit" name="submit" value="Login">
</form>
</p>
Non ti sei ancora registrato?</p>
[url="registrazione.php"]Clicca qui e registrati subito![/url]</p>
<?php
}else {
header("Location: vista.php");
?>
<?php
}
?>
</body>
</html>
Come potete vedere se il login ha successo si passa alla pagina vista.php che contiente il seguente codice:
Codice PHP:
<?php session_start(); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<SCRIPT LANGUAGE="JavaScript">
function ver()
{
for (i=0; i<document.forms[0].elements.length; ++i)
if(document.forms[0].elements[i].value == "")
{
alert("Inserire username e password!");
document.forms[0].elements[i].focus();
return false;
}
return true;
}
</SCRIPT>
</head>
<body>
<?php
require('configurazione.php');
$_SESSION['username'] = $row['username'];
if(!isset($_SESSION['log']))
{
$_SESSION['log'] = 0;
}
else {
$_SESSION['log'] = 1;
}
if(!isset($_SESSION['username']))
{
$_SESSION['username'] = "Non Registrato";
}
if ($_SESSION['log'] = 1) {
$_SESSION['username'] = $row['username'];
}
?>
<div align='center'>[img]img/oro.png[/img][b]<?php echo $_SESSION['oro'] ?>[/b]</div>
<div align='center'>[b]Livello: <?php echo $_SESSION['livello'] ?>[/b]</div>
<div align='center'>[b]Username:<?php echo $_SESSION['username'] ?>[/b]</div>
<div align='left'>[url="missione.php"]Missioni[/url][/b]</div>
<form name="logout" action="logout.php" method="post" onSubmit="return ver();">
<input type="submit" name="submit" value="Logout">
</form>
</body>
</html>
Qui vengono visualizzati l'oro che ogni giocatore possiede ed il livello (all'inizio uguali per tutti), il problema è che se provassi a visualizzare l'id, l'username o l'ip non me li farebbe vedere, perchè sono diversi da giocatore a giocatore. Il punto è questo, $_SESSION mostra soltanto i campi che tutti gli utenti hanno uguali cioè oro che parte da 1500 e livello in quanto tutti partono dal livello 1.
Come posso fare in modo che vengano visualizzate anche username ecc. sempre mediante $_SESSION ?
Grazie in anticipo e Buone Feste,
marf