Function session_is_registered() is deprecated

  • Creatore Discussione Creatore Discussione Fabio90
  • Data di inizio Data di inizio

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
if(session_is_registered(Logged)) {

}

come posso sostituire questa riga di codice per evitare la visualizzazione del notice?
Non voglio utilizzare stratagemmi come mettere la @

grazie dell'aiuto :)
 
ciao
scusate ma c'è qualcosa che non torna (a parte il deprecate)
session_is_registered() returns TRUE if there is a global variable with the name name registered in the current session, FALSE otherwise
(restituisce TRUE se c'è una variabile globale con il nome nome registrato nella sessione corrente, FALSE in caso contrario)
isset() returns TRUE if var exists and has value other than NULL, FALSE otherwise
(restituisce TRUE se var esiste e ha valore diverso da NULL, FALSE altrimenti)
quindi se la sessione esiste (es. $_SESSION['pinco']="pallo") sia
session_is_registered('pinco')
che
isset($_SESSION['pinco'])
ritornano TRUE, mentre se non esiste FALSE o NULL
quindi (sempre a parte il deprecate)
PHP:
<?php
session_start();
$_SESSION['Logged']="abracadabra";
if(session_is_registered('Logged')) {
	echo "utente loggato";
}else{
	echo "utente NON loggato";
}

if(isset($_SESSION['Logged'])) {
	echo "utente loggato";
}else{
	echo "utente NON loggato";
}
?>

danno entrambe utente loggato
se non mi sbaglio

alex mi ha preceduto con "sicuro che non funzi?"
 
No, era giusta la prima versione. Sei sicuro che non ti funzioni? Avvii la sessione prima di effettuare il controllo?
Pensavo anche io, ma facendo una prova ho visto che isset() restituisce lo stesso di !session_is_registered() e non di session_is_registered(); è possibile?
 
Ah si scusate ho riprovato e mi da lo stesso risultato, non so che cavolo avevo scritto prima :confused:
 
session_start();
if (isset($_SESSION['Logged'])) {

si certo che ho avviato la sessione però mi dice sempre che non sono autenticato anche se in realtà sono loggato!
 
Questo è tutto il codice. Il codice commentato funziona al contrario di quello che ho sostituito

PHP:
  <?php 
  
   
	session_start();
	
	
	/*if(session_is_registered('Logged'))*/ 
	if(isset ($_SESSION['Logged'] ))
	{
				
			echo '<div class="benvenuto">
					<p>
						Benvenuto <br/>' .$_SESSION['username'].'! <br/> sei collegato al sito 
					</p> 
						<br/><a href="/consorzio-bus-car/logout.php">Logout</a>
				 </div>';			
		}
		else {
			if(!isset($_POST['submit'])) {
		echo '<div id="box-login"> 
				<form method="post" action="#" id="accesso_utenti">
					<h3>Accesso Utenti</h3>
					<div id="user"><span> Username </span><input type="text" name="username"> <br /></div>
					<div id="pass"><span> Password</span> <input type="password" name="pass"> <br /></div>
					<input type="submit" value="Entra" name="submit" id="bottone">
				</form>
			</div>';
	}
	else {
		include 'config.php';
		include 'connect.php';
		
		$user = mysql_real_escape_string($_POST['username']);
		$pass = mysql_real_escape_string($_POST['pass']);
		
		$query = "SELECT * FROM utenti WHERE UserName = '{$user}' AND Password = '{$pass}'";
		$result = mysql_query ($query, $conn) or die("Errore nella query");
		$num_rows = mysql_num_rows($result); 
		
	
		if ($num_rows == '1') {
			header("location: http://127.0.0.1/consorzio-bus-car/index.php");
			$_SESSION['username']=$user;
			
			/*session_register("Logged");*/
			$_SESSION['logged'];
			
}
		else {
			
			echo '<div class="benvenuto">
					<p>Dati errati: </p> 
					<a href="index.php">Ritenta</a>
				 </div>';
		}
		
		
	}
}

?>
 
Ultima modifica di un moderatore:
ciao
non valorizzi la $_SESSION['logged']

PHP:
<?php
//.........
		if ($num_rows == '1') {
				header("location: http://127.0.0.1/consorzio-bus-car/index.php");
				$_SESSION['username']=$user;
				/*session_register("Logged");*/
				$_SESSION['logged'];//?? qui metti il valore a NULL
		}else {
//........
?>
visto che valorizzi la $_SESSION['username'] a che ti serve $_SESSION['logged']? potresti usare direttamente la $_SESSION['username']

PHP:
<?php 
session_start();
/*if(session_is_registered('Logged'))*/ 
if(isset ($_SESSION['username'] )){
//.....
?>
c'è poi una cosa che non mi quadra (ma alex può confermare o smentirmi).
tu rimandi alla pagina
header("location: http://127.0.0.1/consorzio-bus-car/index.php");
quindi, secondo me, l'istruzione che la segue
$_SESSION['username']=$user;...
non viene eseguita

p.s.
non sbrodolare il codice in quella maniera e racchiudilo negli appositi tag (seconda riga formattazione post ultime tre iconcine)
 

Discussioni simili