problema lettura cookie

processore

Utente Attivo
11 Ott 2012
51
0
0
salve.
sto implementando un sistema di login in php.
e vorrei mettere la possibilita di restare loggato anche quando uno chiude la pagina.
quando uno si logga ho messo un chekbox se viene spuntato la pagina di login crea un cookie per ricordare user e pass,
poi quando si riapre il sito la pagina controlla se esiste quel cookie se esiste rimette in sessione user e pass e l'utente e gia loggato , altrimenti chiede di fare il login.
solo che ho un problema creo il cookie poi faccio una stampa della variabile $_cookie e mi stampa il contenuto quindi penso che il cookie e stato creato correttamente.
pero quando vado nella index e cerco di stampare il contenunto del cookie mi da errore , poi cerco di fare if(isset($_cookie)){echo("prova")}
e non mi stampa niente , mentre se faccio cosi if(!isset($_cookie)){echo("prova")} mi stampa prova.

questo e il codice della creazione del cookie:

PHP:
if(isset($_POST['ricorda'])){
		
		$nome= stripslashes($_POST['utente']);
		$pass = $_POST['password'];
		$cok =$nome."%%".$pass;
		setcookie("login",$cok,time()+31536000);
	
		}

questo e quello della index :

PHP:
<?php
							
                                         if(!isset($_SESSION['utente'])) {
											 if(isset($_COOKIE["login"])){
											
											//include 'funzioni/cookie.php';
											echo("ciao");
											
											}
											else{
										
											
                        	?>	
?>	
                        	
                            <img src="img/logo.gif" /><span id="benvenuto">Benvenuto! <a href="accedi.php">Accedi</a> o <a href="registrazione.php">registrati</a></span>
                            <?php } 
								} 
								?>

cosa devo fare ?
grazie
 
ciao
se non erro così a naso perchè prima ti legge se esiste la sessione (che sparisce quando esci dal bw) quindi non ti legge il cookie
 
pero se faccio cosi.

PHP:
if(!isset($_SESSION['utente'])) {
											 if(!isset($_COOKIE["login"])){
											
											//include 'funzioni/cookie.php';
											echo("ciao");
											
											}
mi stampa ciao.
quindi nel primo if entra.
non riesco a capire .
ce qualche altro metodo oppure questo e l'unico modo per restare loggato ?

e come se il cookie non esiste perche non lo trova.
 
ciao
da quello che ho capito, se non ho capito male, io proverei a fare così
PHP:
<?php
session_start();
if(isset($_SESSION['utente']) || isset($_COOKIE["login"])) {//esiste la sessione o già passato e rientrato quindi può accedere
?>
	<img src="img/logo.gif" /><span id="benvenuto">Benvenuto! <a href="accedi.php">Accedi</a></span>
<?php
}else{//non registrato
?>
	<a href="registrazione.php">registrati</a>
<?php
}
?>
poi nella pag accedi.php e in tutte le altre riservate in cui solo l'utente registrato può navigare
PHP:
<?php
session_start();
if(isset($_SESSION['utente']) || isset($_COOKIE["login"])) {//esiste la sessione o già passato e rientrato
	//.........tutto quello che devi fare..............
}else{//tentativo di accesso fraudolento (es url diretto alla pagina tipo http://www.tuo_sito.it/accedi.php)
	header("location:index.php");
	exit();
}
?>
 
ho fatto come hai detto tu e ho modificato il codice in questo modo.
PHP:
<?php
								if(isset($_SESSION['utente']) || isset($_COOKIE["login"])) {
							?>
								<img src="img/logo.gif" /><span id="benvenuto">Benvenuto, <?php echo $_COOKIE["login"];  ?> (<b><?php echo $_SESSION['utente'];  ?></b>)! <a href="funzioni/logout.php">Esci</a> </span>
                                
                              <?php
								}
								else{
				
                        	?>	
                        	
                            <img src="img/logo.gif" /><span id="benvenuto">Benvenuto! <a href="accedi.php">Accedi</a> o <a href="registrazione.php">registrati</a></span>
                            <?php } 
								
								?>

ho messo questo pezzo di codice Benvenuto, <?php echo $_COOKIE["login"]; ?>
per vedere se mi stampa il contenuto del cookie e invece nella index mi da questo errore.

Benvenuto,
Notice: Undefined index: login in C:\Programmi\EasyPHP-5.3.8.1\www\sito\index.php on line 31
 
ho risolto.
grazie mille per l'aiuto :).
il problema era che il cookie lo creava una funzione che si trovava nella cartella funzioni quindi il cookie lo salvava dentro questa cartella.
mentre la funzione $_cookie lo cercava nella stessa cartella dove si trovava l'index.
e ho risolto mettendo quando creo il cookie il percorso e facendolo creare nella root.
 
Ultima modifica:
e possibile dare il percorso alla funzione $_cookie per leggere un cookie in una cartella diversa dalla root ??
perche vorrei creare una cartella apposta per i cookie
 
ciao
ti cito dal manuale php

The path on the server in which the cookie will be available on. If set to '/', the cookie will be available within the entire domain. If set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain. The default value is the current directory that the cookie is being set in.
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
 
quindi se non ho capito male per leggere i cookie da qualsiasi cartella li devo mettere per forza nella root
 
ciao
invece, da quello che ho capito io, se metti il nome di una cartella i cookie li salvi nella cartella

PHP:
<?php
setcookie( "pinco" , "pallo" , 3333333 , "mia_cartella_cookie");
//.......
?>

p.s.
almeno credo, il sistema migliore è "prova e vedi"
 
si questo lo avevo capito.
quello che non riesco a capire è se io salvo i cookie per esempio nella cartella cookie.
poi quando cerco di leggere i cookie per esempio da una pagina che si trova nella root. come faccio a leggere i cookie ??
perche se io scrivo $_cookie[login] lui cerca i cookie nella cartella root.
non riesco a capire come farli leggere dalla cartella cooki.
 
ciao
forse c'è un qui pro quo.
i cookie (alias biscottini) vengono salvati sul pc dell'utente. tu parli della root del sito sul server dove è ostato?
dove vengono salvati dipende, mi sembra, anche dal bw, es. firefox li salva in
C:\Documents and Settings\Tuonomeutente\Impostazioni locali\Dati applicazioni\Mozilla\Firefox\Profiles\
ma sempre sul pc utente
 

Discussioni simili