Problema con sessioni

Provy

Nuovo Utente
6 Mar 2010
13
0
0
Salve a tutti,
sto svluppando una web app e ho notato una cosa particolarmente strana, ovvero...
Se accedo al sito con l'indirizzo http://nomesito.it tutto va a gonfie vele, mentre se accedo con l'indirizzo http://www.nomesito.it non viene memorizzata alcuna variabile di sessione una volta effettuato il login... Qualcuno sa spiegarmene il motivo???
 
login.php

PHP:
<?php
session_start();
include("../config/config.inc.php");

//Connessione al db
$link = mysql_connect($db_host, $db_username, $db_password);
if (!$link) {
  die ('Impossibile connettersi al DB: ' . mysql_error());
}

$db_selected = mysql_select_db($db_name);
if (!$db_selected) {
  die ("Errore nella selezione del database: " . mysql_error());
}

if($_POST) {
  effettua_login();
}

if(isset($_GET['msg'])){
   echo $_GET['msg'];
}

function effettua_login()
{
  // recupero il nome e la password inseriti dall'utente
  $nome      = trim($_POST['username']);
  $password  = trim($_POST['password']);
  // verifico se devo eliminare gli slash inseriti automaticamente da PHP
  if(get_magic_quotes_gpc()) {
    $nome      = stripslashes($nome);
    $password  = stripslashes($password);
  }

  // verifico la presenza dei campi obbligatori
  if(!$nome || !$password) {
    $messaggio = urlencode("Non hai inserito il nome o la password");
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    exit;
  }
  // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
  $nome     = mysql_real_escape_string($nome);
  $password = mysql_real_escape_string($password);

  // preparo ed invio la query
  $query = "SELECT id FROM utenti WHERE username = '$nome' AND password = MD5('$password')";
  $result = mysql_query($query);
  // controllo l'esito
  if (!$result) {
    die("Errore nella query $query: " . mysql_error());
  }

  $record = mysql_fetch_array($result);

  $query2 = "SELECT id_level FROM utenti WHERE username = '$nome' AND password = MD5('$password')";
  $result2 = mysql_query($query2);
  // controllo l'esito
  if (!$result2) {
    die("Errore nella query2 $query: " . mysql_error());
  }

  if(!$record) {
    $messaggio = urlencode('Nome utente o password errati. Tornare indietro e riprovare.');
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
  } else {
    while ($record2 = mysql_fetch_row($result2)){
	    $level = $record2[0];
    }
    $_SESSION['user_id'] = $record['id'];
    $_SESSION['station'] = $_POST['station'];
    $_SESSION['cod_operatore'] = $_POST['cod_operatore'];
    if(isset($_POST['tel_esterno'])){
      $_SESSION['tel_esterno']=$_POST['tel_esterno'];
    }
    $messaggio = urlencode('Login avvenuto con successo');
    if($level == "3"){
        header("location: ".$sito."scelta.php");
    }else if($level == "2"){
        header("location: ".$sito."admin/index.php");
    }else if($level == "1"){
        header("location: ".$sito."admin/index.php");
    }
  }
}
?>

questo è il codice della pagina login.php... prima c'è solamente una pagina html con il form di inserimento...
 
@micio86 ho testato con opera, firefox, internet explorer e chrome... e tutti danno lo stesso problema...
 
Illuminazione!!

La variabile $sito è definita nel config.inc.php come http://miosito.it può essere questo il problema..? forse sostituendo con $_SERVER['PHP_SELF'] si risolverebbe??
 

Discussioni simili