PDA

View Full Version : [PHP] probelam con le sessioni...


Fire Fox II
15-05-2007, 14:15
Salve raga :)

allora, ho una pagina html che tramite form chiama una pagina php per effettutare la login.

la pagina php è la seguente


<?php
session_start();
include("connessione.php");
$login = $_POST['login'];
$password = $_POST['password'];
$query_user = "select * from account where email='$login' and password='$password'";
$ris_user= mysql_query($query_user,$connection);
$num_righe_user = mysql_num_rows($ris_user);
if ($num_righe_user != 0){
$riga_user = mysql_fetch_array($ris_user);
$tipo_accesso = $riga_user["tipo"];
$nome = $riga_user["nome"];
session_register("nome");
$_SESSION [ "nome" ] = $nome;
$_SESSION["tipo"] = $tipo_accesso;
$id=session_id();
$_SESSION["id_session"] = $id;
header("Location: ../Prove/ucTEST.php");
}
else {
echo "errore nella login";
}
mysql_close($connection);
?>


La pagina chiamata dall'header è questa


<?php
if (isset($_SESSION["nome"])){
echo "Il nome è: " . $_SESSION["nome"] ;}
else{
echo "errore nella sessione";}
?>


Perchè non mi viene visualizzato il nome registrato nella sessione? :(

andbin
15-05-2007, 14:20
Perchè non mi viene visualizzato il nome registrato nella sessione? :(session_start(); devi metterla in ogni pagina in cui vuoi gestire le sessioni e le relative variabili in $_SESSION.

Fire Fox II
15-05-2007, 14:29
ho modificato in questo modo


<?php
session_start();
if (isset($_SESSION["nome"])){
echo "Il nome è: " . $_SESSION["nome"] ;}
else{
echo "errore nella sessione";}
?>


ma ancora niente :(

toruntu
15-05-2007, 14:39
(non c'entrerà un cazzo) ma non è che non gli piacciono gli spazi di questa riga?

$_SESSION [ "nome" ] = $nome;

(prima e dopo "nome")

andbin
15-05-2007, 14:44
ma ancora niente :(Non usare session_register(), usa solo $_SESSION.

La documentazione dice: "If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled."

Fire Fox II
15-05-2007, 14:55
ancora niente :( anche così...


<?php
session_start();
include("connessione.php");
$login = $_POST['login'];
$password = $_POST['password'];
$query_user = "select * from account where email='$login' and password='$password'";
$ris_user= mysql_query($query_user,$connection);
$num_righe_user = mysql_num_rows($ris_user);
if ($num_righe_user != 0){
$riga_user = mysql_fetch_array($ris_user);
$tipo_accesso = $riga_user["tipo"];
$nome = $riga_user["nome"];
$_SESSION["nome"] = $nome;
$_SESSION["tipo"] = $tipo_accesso;
$id=session_id();
$_SESSION["id_session"] = $id;
header("Location: ../Prove/ucTEST.php");
}
else {
echo "errore nella login";
}
mysql_close($connection);
?>

Fire Fox II
16-05-2007, 10:55
:(

Fire Fox II
17-05-2007, 12:25
:cry:

andbin
17-05-2007, 12:46
In genere in questi casi è meglio "fermarsi" un momento e provare un qualcosa di più semplice per capire dove sta il problema.

Questo funziona (provato):

prova1.php
<?php
session_start ();

$_SESSION['msg1'] = "Ciao, prova sessione";
$_SESSION['var2'] = 123;

header ("Location: prova2.php");
?>
prova2.php
<?php
session_start ();

foreach ($_SESSION as $k => $v)
echo htmlentities ($k) . " = " . htmlentities ($v) . "<br>\r\n";
?>

Fire Fox II
17-05-2007, 17:35
non funziona... :(

da cosa può dipendere?

Fire Fox II
17-05-2007, 17:59
Ho risolto :)

mancava la cartella dove venivano memorizzati i file temporanei delle sessioni :)

Ora fuziona il tutto

Grazie comunque :)

Gremo
18-05-2007, 02:18
un consiglio.
non so se il tuo frammento di codice è quello che attualmente usi o un esempio, tuttavia dovresti preoccuparti dell' http://it.wikipedia.org/wiki/SQL_injection.

usa mysql_escape_string. è una problema che devi porti con qualsiasi linguaggio (forse escluso vb.net :Prrr: )