Nessuna session start in login PHP

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Salve ragazzi, non riesco a capire dov'è l'errore.
Non mi apre la sessione il php e proprio non capisco perchè.
Potreste analizzare lo script cortesemente?

PHP:
<?php
    session_start();
    require_once("config.inc.php"); 
    
	 $user=$_REQUEST["$User_utente"];
	
	 if( (isset($_POST['user']) ) && ( isset($_POST['pass']) ) ){
	  
                $User_utente = $_POST['user'];
	  $Password_utente =$_POST['pass'];
	  $user=$User_utente;
	  
	  $sql1=mysql_query("SELECT id FROM iscritti WHERE user='$User_utente' AND         pass='$Password_utente'") or die (mysql_error());
	 
	if(mysql_num_rows($sql1)!=0){
	  echo"User=".$user;
	  echo("$user");
	   $riga = mysql_fetch_array($sql1);
	  $_SESSION['id']=$riga['id'];
	 }else{
   }
  }
?>
 
ciao
vuoi dire che non ti entra nell'if dove valorizzi la $_SESSION['id']?
se è così vuol dire che
mysql_num_rows($sql1)è uguale a 0, quindi devi verificare la query.
ti conviene dividerla e mettere dei var_dump così vedi
PHP:
<?php
//....
$sql1_str="SELECT id FROM iscritti WHERE user='$User_utente' AND pass='$Password_utente'";
var_dump($sql1_str);
$sql1=mysql_query($sql1_str) or die (mysql_error());
//...
?>
esempio
se il var_dump ti restituisce
string(xy) "SELECT id FROM iscritti WHERE user='' AND pass='password'"
devi verificare perche non trasmetti/ricevi $User_utente/$_POST['user'], analogamente per la password o se entrambi

non credo che l'errore sia in
session_start();
perche, da quello che dici, se (es.) prima ci fosse anche solo uno spazio, php ti darebbe il warning...
 
sparisce se chiudi la finestra

Scusate ragazzi ma la sessione non dovrebbe restare anche se chiudi la finestra e poi ne riapri una nuova?

http://www.banneranimati.com/000xjzqm/php/phpHtml.html

LOGIN: USER: GUEST PASSWORD: guest

se provate poi a fare il refresh del link che si apre dopo il login la sessione resta ma se poi si chiude la pagina e ci si riconette alla stessa pagina la sessione spariche perchè?

PHP:
<?php
    session_start();
    require_once("config.inc.php"); 
    
	if( (isset($_POST['user']) ) && ( isset($_POST['pass']) ) ){
	  $User_utente = $_POST['user'];
	  $Password_utente =$_POST['pass'];
	  $user=$User_utente;
	  
	
	 $sql1_str="SELECT id FROM iscritti WHERE user='$User_utente' AND pass='$Password_utente'";
     $sql1=mysql_query($sql1_str) or die (mysql_error());
	 echo"User=".$user;
	 if(mysql_num_rows($sql1)!=0){
	  $riga = mysql_fetch_array($sql1);
	  $_SESSION['id']=$riga['id'];
	 }else{
   }
  }
?>
 
ciao
non è che la sessione sparisca al refresh.
facendo il ref in pratica è come se ritrasmettessi i post, ma in questo caso il loro valore è "" per cui
$riga['id'] non viene trovato di conseguenza $riga['id'] =="" così la $_SESSION['id']
prova a mettere
PHP:
<?php 
    session_start(); 
    require_once("config.inc.php");  
    if( isset($_POST['user'])  && isset($_POST['pass']) && ($_POST['user'] !="" || $_POST['pass'] !="")){ 
      //cioè oltre all'isset i due valori non devono essere vuoti
	  $User_utente = $_POST['user']; 
      $Password_utente =$_POST['pass']; 
      $user=$User_utente; //questa riga a che ti serve?
     $sql1_str="SELECT id FROM iscritti WHERE user='$User_utente' AND pass='$Password_utente'"; 
     $sql1=mysql_query($sql1_str) or die (mysql_error()); 
     echo"User=".$user; //non potresti mettere semplicemente echo "User=".$User_utente; ?
     if(mysql_num_rows($sql1)!=0){ 
      $riga = mysql_fetch_array($sql1); 
      $_SESSION['id']=$riga['id']; 
     }else{//qui metti l'echo cosi vedi dove sei
	 echo "I VALORI NON SONO VALIDI";
   } 
  } 
?>

p.s.
poi trattandosi di log con accesso la db fai altri controlli sui post e come minimo metti
PHP:
$User_utente = addslashes($_POST['user']); 
$Password_utente =addslashes($_POST['pass']);
 
No la sessione non sparice al refresh perdo la sessione se chiudo la pagina e mi riconnetto alla pagina
dove c'è scritto USER=GUEST
 
ciao
scusa, mi sono confuso io, ma per vedere dove sei devi mettere
PHP:
//...
      $_SESSION['id']=$riga['id']; 
     }else{//qui metti l'echo cosi vedi dove sei
     //echo "I VALORI NON SONO VALIDI";
   }
   echo "I VALORI NON SONO VALIDI";
  } 
?>
chiamando
http://www.banneranimati.com/000xjzqm/php/login.php
dovrebbe apperirti il messaggio I VALORI NON SONO VALIDI
eventalmente prima dell'echo metti un
var_dump($_SESSION['id']);
così vedi cosa succede alla sessione
 
Ho inserito il tuo script, che se ho ben capito evidenzia che non entra nella if valida
quindi c'è qualcosa che non permette alla condizione di aprire la sessione giusto?
poichè il valore è diverso da 0? e non dovrebbe esserlo?

PHP:
<?php  
    session_start();  
    require_once("00xj_config.inc.php"); 
    if( isset($_POST['user'])  && isset($_POST['pass']) && ($_POST['user'] !="" || $_POST['pass'] !="")){ 
      
      $User_utente = $_POST['user'];  
      $Password_utente =$_POST['pass'];  
      $sql1_str="SELECT id FROM iscritti WHERE user='$User_utente' AND pass='$Password_utente'"; 
      $sql1=mysql_query($sql1_str) or die (mysql_error());  
      echo"User=".$User_utente;
      if(mysql_num_rows($sql1)!=0){  
      $riga = mysql_fetch_array($sql1);  
     $_SESSION['id']=$riga['id'];  
     var_dump($_SESSION['id']);
     }else{
    } 
   echo "I VALORI NON SONO VALIDI"; 
  }  
?>
 
ciao
la session non c'entra
per cercare di risolvere conviene mettere in giro dei ver_dump o degli echo per vedere dove lo script si incastra
ti stampa sempre I VALORI NON SONO VALIDI ? se sì ancora non trasmetti/ricevi i $_POST del'user e delle pass o suono vuoti, verifica i nomi dei campi di input e quelli dentro ['...']
oppure ti stampa la riga con echo"User=$User_utente password=$Password_utente<br>";? quindi da verificare cosa risulta alla riga
echo "trovati $numero<br>";
se questa risulta 0 vuol dire che la query non è giusta o che non c'è un record come richiesto, verifica la corripondenza tra i nomi dei campi nella query e quelli in tabella (comprese minuscole/maiuscole) e/o il record esista
PHP:
<?php  
    session_start();  
    require_once("00xj_config.inc.php"); 
    if( isset($_POST['user'])  && isset($_POST['pass']) && ($_POST['user'] !="" || $_POST['pass'] !="")){ 
      echo "sono dentro il primo if<br>";
      $User_utente = $_POST['user'];  
      $Password_utente =$_POST['pass']; 
      $sql1_str="SELECT id FROM iscritti WHERE user='$User_utente' AND pass='$Password_utente'"; 
      $sql1=mysql_query($sql1_str) or die (mysql_error());  
      echo"User=$User_utente  password=$Password_utente<br>";
      $numero=mysql_num_rows($sql1);
	  echo "trovati $numero<br>";
	  if(mysql_num_rows($sql1)!=0){  
      $riga = mysql_fetch_array($sql1);  
	  $_SESSION['id']=$riga['id'];  
      var_dump($_SESSION['id']); echo "la sessione<br>";
     }else{
	  echo "non trovata corrispondenza nella tabella <br>";
     } 
   echo "I VALORI NON SONO VALIDI"; 
  }  
?>
provalo e verifica e posta i vari risultati
 
Ciao Borgo e grazie, funziona e funzionava anche prima solo che io pretendevo che riconoscesse l'id di sessione
dell'utente senza registrarlo da nessuna parte. Mentre registrandolo nel database e poi andandolo a recuperare con una query di select lo tiene :)

Grazie mille per la pazienza e per l'aiuto.
 

Discussioni simili