$_SESSION['sessione'][1] possibile? Sessioni con indice.

Malware

Utente Attivo
19 Lug 2012
112
0
0
Buon pomeriggio a tutti.

Dal titolo non si capisce molto, quindi spiego meglio ora.

PS: se non volete legge tutto, passate direttamente alla fine:fonzie:

Ho un browsergame in fase di sviluppo.
Ho implementato un sistema che alla registrazione permette di scegliere il mondo in cui giocare (Alpha, Beta...).
Ho inserito un semplice select, e in base al suo option decido tre variabili, una per il nome delle tabelle del database, una per la cartella del server e un'altra per l'indice delle sessioni.

Ecco la parte interessata:

PHP:
//$server è il valore dell'option richiamato prima...

if ($server == 1) { $prefix_table = 's1_'; $prefix_url='s1'; }

Fatto questo, creo le sessioni e reindirizzo l'utente alla cartella del server.
Ogni server ha una cartella, es:
Mondo Alpha - www.sito.it/s1/game.php
Mondo beta - www.sito.it/s2/game.php
...

Ogni cartella ha un file, server.data.php che contiene le costanti del mondo:

PHP:
// General Data For Server Alpha

//Prefix of tables - server n.1
const prefix_tb='s1_';

//Prefix of index of sessions
const prefix_s=1;

//Speed
const speed=1;

Ecco la parte dove creo le sessioni e reindirizzo l'utente alla cartella giusta:

PHP:
//creo sessioni
session_start();
$_SESSION['city'][$server] = $idcittadamettere;
$_SESSION['username'][$server] = $username;
$_SESSION['playerid'][$server] = $idplayer; 

//reindirizzo in game
$url = $prefix_url."/game.php?func=reg&view=city&id_polis=".$_SESSION['city'][$server];        
header("Location: $url");

Il mio problema è....posso creare le sessioni così?
Nel file game.php controllo le sessioni, ma mi da sempre errore, dicendo che non esistono:

PHP:
require["server.data.php"];
if ((!isset($_SESSION['username'][prefix_s])) or (!isset($_SESSION['playerid'][prefix_s])) or (!isset($_SESSION['city'][prefix_s]))) {
header("Location: ../index.php?mex=La tua sessione è scaduta.");
}

Ho cercato di spiegare il meglio possibile.
Sbaglio qualcosa? Posso aggirare il problema?
Grazie a tutti in anticipo!
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
si, non crei altro che un array di array

edit
anzi no es. se in

$_SESSION['city'][prefix_s]

prefix_s è una variabile devi scriverla $prefix_s se invece è una chiave

$_SESSION['city']['prefix_s']
 
Ultima modifica:

Malware

Utente Attivo
19 Lug 2012
112
0
0
E allora non capisco perché non funziona :crying:

Se elimino l'indice, e tengo soltanto $_SESSION['username'], funziona tutto a meraviglia.
Se invece utilizzo una sessione formato array, niente da fare.

Provo a copiare qui tutto il codice?
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
Ecco qua.

File Game.php presente in /s1/:


PHP:
<?php
session_start();

			require("server.data.php");
			require("../config.php");
			require("function.php");

			sessione();

?>
File reg.php presente nella directory principale:

PHP:
if ($server == 1) { $prefix_table = 's1_'; $prefix_url='s1'; }

require("config.php");

//......

//creo sessioni
session_start();
$_SESSION['city'][$server] = $idcittadamettere;
$_SESSION['username'][$server] = $username;
$_SESSION['playerid'][$server] = $idplayer; 

//reindirizzo in game
$url = $prefix_url."/game.php?func=reg&view=city&id_polis=".$_SESSION['city'][$server];        
header("Location: $url"); 

?>


File server.data.php presente in /s1/:

PHP:
<?php

// General Data For  Server Alpha

//Prefix of tables of the server n.1
const prefix_tb='s1_';

//Prefix of index of sessions
const prefix_s=1;

//Speed
const speed=1;


?>

File function.php presente in /s1/:

PHP:
function sessione() {
//$_SESSION['city'] = $idcittadamettere;
//$_SESSION['username'] = $username;
//$_SESSION['playerid'] = $idplayer; 

echo $_SESSION['username'][1];

if ((!isset($_SESSION['username'][prefix_s])) or (!isset($_SESSION['playerid'][prefix_s])) or (!isset($_SESSION['city'][prefix_s]))) {
header("Location: ../index.php?mex=La tua sessione è scaduta.");
}

} //fine funzione sessione


Grazie Borgo. Disponibile come sempre :D
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
scusa una cosa vedo l'istruzione
PHP:
const prefix_tb='s1_';
stai usando delle classi?
se no la definizione di costante è
a)
PHP:
define("NOME_COSTANTE", "valore");//qui è case sensitive (il nome dve corrispondere anche come maiuscole/minuscole)
b)
PHP:
define("NOME_COSTANTE", "valore", true);//qui è case insensitive (puoi usare es. NOME_COSTANTE o Nome_costante)
se invece stai usando delle classi il discorso è diverso (e poi non posso aiutarti molto perchè uso molto poco le classi)
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
ciao e grazie
ho provato a correggere, ma niente da fare.

Prima dell'if nella sessione ho inserito:

PHP:
echo $_SESSION['username'][1];
exit;

L'errore che da è:

Codice:
Notice: Undefined offset: 1 in D:\programmi\EasyPHP-5.4.0beta2\www\b...\s1\function.php on line 30
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
prova a verificare $server che da quello che ho capito dovrebbe essere 1 e poi una (o piu) sessioni

PHP:
//....
//creo sessioni
session_start();
var_dump($server);
$_SESSION['city'][$server] = $idcittadamettere;
var_dump($_SESSION['city'][$server]);
$_SESSION['username'][$server] = $username;
$_SESSION['playerid'][$server] = $idplayer;
//.....
 

Malware

Utente Attivo
19 Lug 2012
112
0
0
Zio trenoooo

con echo $server esce 'localhost', questo perchè nel file config.php avevo utilizzato $server come una delle variabili per le connessioni al db...

Pazzesco.
E' da domenica scorsa che smanettavo e non trovavo la mia stupidità in quel cavolo di file.

Grazie mille Borgo, ottimo come sempre:rolleyes:
 
Discussioni simili
Autore Titolo Forum Risposte Data
L login e session PHP 4
max1974 Session Timeout Javascript 0
L [PHP] login e protezione pagine con session PHP 3
P [PHP] Multi-session PHP 1
Y [PHP] The session is lost PHP 8
G [PHP] Problema - Warning: session_start() [function.session-start] PHP 9
L [WordPress] creare un plugin , come faccio ad utilizzare le session. WordPress 5
M [Java] Session Attribute Spring MVC Java 1
M [PHP] ID in SESSION PHP 1
P Session e cookie funzionano solo dopo passaggio valori tramite POST PHP 8
W Session e htaccess PHP 2
M Non aggiorna valore session PHP 5
Nik Cannot send session cache limiter - ERRORE utilizzando session_start(); PHP 3
I registrazione (SESSION) PHP 5
K problemi con nome della session PHP 3
N Problema con le SESSION PHP 6
P problema salvataggio e richiamo SESSION PHP 0
M Session timeout in ASP.NET ASP.NET 1
S VS2010: Variabili Session in ASP net ASP.NET 2
Emix Problema Session PHP 1
S codeigniter session problem PHP 1
A session hijacking PHP 0
A Problema SESSION e LOGIN PHP 1
T Cambiare session id PHP 1
Monital Errore solo per alcuni utenti, colpa delle session? PHP 5
Fabrizio Fiorita header e session funzionano perfettamente in locale ma creano problemi in remoto PHP 32
J PhPBB , e le session di login phpBB 1
helpdesk Nessuna session start in login PHP PHP 12
S session come mettere l'id utente PHP 1
G problema con session.gc_maxlifetime PHP 3
T problema con le session PHP 3
ciacos74 PHP errore function.session-start PHP 25
max_400 blog con session si può fare? PHP 10
M problema con Session PHP 3
M Problema con l'utilizzo delle Session PHP 3
H Warning: session_start() [function.session-start]: Cannot send session cache limiter PHP 8
foki problema misterioso session ID PHP 30
A session sid PHP 12
borgo italia session evanescente PHP 4
G problema con session.cookie_lifetime PHP 1
A session start() PHP 7
L Session o cookie? Classic ASP 3
M Warning: session_start(): Cannot send session cache... ???? PHP 5
P problema sessioni php [function.session-start] PHP 2
L Abbinare ad una session un determinato valore Classic ASP 16
L Più session Classic ASP 1
A problema con Session Classic ASP 4
T variabili session Classic ASP 2
E passaggio parametro con session Classic ASP 0
D Aprire più session..come?? Classic ASP 9

Discussioni simili