area riservata

SolidSnake4

Utente Attivo
23 Ott 2007
505
0
0
Salve a tutti allora ho realizzato uno script per un'area riservata, dopo il login entro nella mia pagina privata. Ora per far scadere la sessione se l'utente dovesse cliccare su torna indietro una pagina del browser, come si può fare ?
 
ciao
essendo il ponte del 1° maggio credo che tutti i moderatori (e super) siano in ferie:rolleyes:, quindi prenditi questa mia balzana idea
non scrivo tutto il codice, ma credo che tu capisca

pagina log
PHP:
<?php
// inizio pagina_di_log.php
//Inizio col solito

if(!isset($_SESSION)){
session_start ();
}
$_SESSION['accesso']="";// valorizzo questa sessione a stringa vuota

if(isset($_POST['submit'])){

//verifico la password e l'username

if($password==TRUE && $username==TRUE){//ho scritto tru per indicare password e user giusti dal db
$_SESSION['accedi']="abcdefghi"; //do un valore arbitrario alla session accedi
//il valore viene dato solo se pass e user sono esatte
//se serve posso fare le sessioni della pass e dell'user
//scrivo il link <a href="pagina_riservata.php">accedi a riservata</a>
//oppure link per exit
}else{
//indico accesso non consentito e rimando o al form di log o da altra parte
}//fine if else verifica pass e user
}// fine if  submit
//qui scrivo il form di log
//fine pagina_di_log.php
?>

e la pag riservata
PHP:
<?php
//mia_pagina_riservata.php
if(!isset($_SESSION)){
session_start ();
}

if($_SESSION['accesso'] !="abcdefghi"){
//la session accesso è diversa da quanto impostato in pagina_di_log.php
//quindi rimando indietro
header("Location: http://www.mio_sito.it/dove_voglio.php");

}else{
//faccio tutto quello che devo fare
}
//fine pagina_riservata.php
?>

la variabile $_SESSION['accedi'], se torno indietro col bw torna ad essere = stringa vuota
quindi o rimetto pass e user rifacendo tutto il ciclo o non posso ritornare

prova così, mal che vada non funzia

p.s.
ci sto studiando anche io, se risolvo al meglio ti faccio sapere
 
si è proprio come sto facendo io, però a me una volta fatto il login entro nella pagina riservata salvo una variabile in $_SESSION che attivi l'entrata nella zona riservata, e nella pagina di login svuoto la variabile ma non me lo fa subito devo aggiornare la pagina e poi funge. XD io sto studiandolo per l'esame della ZEND XD
 
per ora sono riuscito a fare questo (anche se è un po' macchinoso)

nella pagina (qualsiasi.php) in cui ho il menu in cui ho il link alla pag_log.php
non è un vero link, ma un mini form con un campo idden (1) di valore int
in qualsisi.php genero una sessione (1) di valore int
(l'hidden con visualizza html lo vedo, ma la session no)

nella pag_log.php leggo la session e il valore di hidden e li moltiplico (posso dividerli, sommarli, sottrarli) e genero un'altra session (2)
nel for di log ho un altro hidden (2) sempre int

nella pag_riservata.php leggo
session (1)
session (2)
hidden (2)
li elaboro (come prima) e verifico il risultato: se ok procedo else header location dove voglio

dall prove che ho fatto con questo sistema accedo solo ED ESCLUSIVAMENTE alla pag_riservata.php facendo il giusto percorso (s'intende con pass ed user true)

qualsiasi.php:link(form) -> pag_log -> pag_riservata.php

scrivendo es.
http://www.miosito.com/pag_log.php
oppure
http://www.miosito.com/pag_riservata.php

anche se non chiudo il bw (quindi non cancello le session) e se mi trovo anche di gia in pag_log

macchinoso, ma sembra funziare


p.s.
in che consiste l'esame della ZEND?
 
XD dai guarda se sei abbastanza bravo da quanto mi è parso di capire perchè non provi a farlo te anche l'esame :elvis: . Senti allora io praticamente la sessione la faccio partire se user e pass sono esatte, se l'esito e positivo creo un cookie in cui ci metto verified user ci metto 1 e in caso contrario rimane a 0 e non ha i permessi per entrare. Poi entro nella pagina riservata faccio torna indietro con il canc sopra l'invio o dal browser, e nella pagina login ci metto verified user settato a guest, il problema è che non me lo cambia subito devo aggiornare la pagina da cosa dipende ?

esame zend:

info
 
il problema è che non me lo cambia subito devo aggiornare la pagina da cosa dipende ?

strano le session, al contrario dei cookie, dovrebbero essere subito disponibili, quindi dovrebbe cambiarsi subito.

sei abbastanza bravo (:confused:ma???) da quanto mi è parso di capire perchè non provi a farlo te anche l'esame...


per due motivi non credo di provare:
1. sono nato agli albori (schede perforate), poi per diversi anni abbandonato
2. di esami... sono stufo di farli:)

comunque do un occhio alle info che mi hai inviato
 
XD ahahah ho capito, io ho incominciato con il vecchio e tanto inutile turbo pascal, poi sono passato all'assembler che casino ahahah scrivere 20 righe di codice solo per far stampare ciao mondo ahahha non ti parlo quando facemmo un programma per fare la somma di 10 numeri. Poi sono passato al c,c++ e un anno fa ho iniziato da autodidatta con il php XD e adesso mi sto specializzando meglio.

ritornado a sto problema. Può essere allora perchè io utilizzo un cookie per stabilire se un utente abbia i permessi o no anzicchè le sessioni ? Perchè io la sessione la apro nella pagina index dell'area riservata non nel form di login
 
vedo che l'esperienza è simile (pascal, assembler)
non dimentichiamo il vecchio (e forse rimpianto) basic con i suoi programmi a spagetto (goto numero riga:))
 
tornando a noi

la session ha effetto dal momento della sua creazione
il cookie è disponibile solo dalla pag successiva (o ricarica), poi c'è sempre il problema di chi non li accetta (risolvibile comunque, se non accetti non entri)
domani (ora vado a letto) eventualmente ti posto quello che faccio io
 
facebook lo fa quello...
con quello che (dice) lo abbiano pagato avrà il fior fiore di progammatori

se ti può servire
ecco come faccio

nella mia pag italia.php (ma potrebbe essere un'altra qualsiasi)

PHP:
<?php
if(!isset($_SESSION)){
session_start ();
}
$_SESSION['verifica01']="222";//genero la prima sessione
?>
<!-- varie cose -->
<!-- menù con vari link e mini form  con hidden, la class rende uguale submit ad altri link-->
<!-- il form punta a adami/logAdmin.php per inserimento pas ed user-->
<form action="adami/logAdmin.php" method="post" name="daITaAdm">
<input name="cost" type="hidden" value="2">
<input name="admin" type="submit" id="admin" value="admin" class="menuIt">
</form>
<!-- altre cose....fine pagina -->

pagina logAdmin.php

PHP:
<?php
if(!isset($_SESSION)){
session_start ();
}
@$code = (int)$_SESSION['verifica01'];//proviene da pag italia =222
@$costante=(int)$_POST['cost'];//proviene dal form menuItalia=2
@$daQui=$_POST['codeQui'];//proviene dal form di questa pagina = 888
//var_dump($daQui);
if($costante==""){$costante=0;}
//var_dump($costante);
$code=$code*$costante;//se tutto ok = 888
if(isset($_POST['codeQui'])){$code=(int)$daQui;}
if($code != 888){//se divero rimando alla pag iniziale
	header("Location: http://localhost:8080/borgo-italia/italia.php");//lavorando in locale, commentare per remoto
	//header("Location: http://www.borgo-italia.it/italia.php");//lavorando in remoto, decommentare
}
$_SESSION['verifica02']=$code;
$user="pinco";//pas e user per comodità, poi da db
$pass="pallo";
?>
<!-- link a css ecc.... -->
<?php

if(isset($_POST['invia']) && $_POST['invia']=="invia"){//dal form inserimento pas ed user
	$userInv=strip_tags(trim($_POST['user']));
	$passInv=strip_tags(trim($_POST['pass']));
	if($userInv==$user && $passInv==$pass){//pas ed user OK
		
		$_SESSION['k']="111"; //genero altra sessione 
		echo "<meta http-equiv='Refresh' content='; URL=scegliCosaFare.php'>";//invio alla pagina scelta cosa fare

	}else{ //se pas e user NO OK non genero $_SESSION['k']="111" e rinvio alla partenza
		
		echo "<h2>USERNAME O PASSWORD NON CORRETTI - ACCESSO NEGATO</h2>";
		echo "<meta http-equiv='Refresh' content='3; URL=../italia.php'>";
	}
}//fine if invia
?>
<!-- form con caselle di input pas ed user, più un campo nascosto -->

<input name="codeQui" type="hidden" id="code" value="888">

<!-- fine form ed altre cose... fine pagina -->

pagina scegliCosaFare.php

PHP:
<?php
if(!isset($_SESSION)){
session_start ();
}
$p1=(int)$_SESSION['k'];//proviene dal form di logAdmin = 111 se pas ed user OK
$p2=(int)$_SESSION['verifica02'];//proviene da logAdmin = 888
$code=$p2-$p1;//diventa = 777
if($code!="777" || $_SESSION['verifica02']!="888"){//se uno è diverso rimando a pag iniziale
	header("Location: http://localhost:8080/borgo-italia/italia.php");//vedi sopra
	//header("Location: http://www.borgo-italia.it/italia.php");
}
//se sono entrato, azzero la session che viene da logAdmin
$_SESSION['k']="0";
?>
<!-- altre cose... fine pagina -->

come vedi è macchinoso, ma per ora non sono riuscito a bypassare entrando in scegliCosaFare.php ove ho tutte quello che serve all'amministratore del sito,
entro solo se faccio il percorso giusto


p.s.
non tener conto dei valori numerici, con il copia incolla posso aver fatto degli errori (quelli giusti non te li do:) )
p.s. al p.s.
chiamando il mio borgo-italia.it per ora non la vedi così, ma la vecchia versione, sono in restiling
 
a volte mi esce questo errore, e non sto capendo da cosa derivi :

The session id contains illegal characters, valid characters are a-z, A-Z, 0-9
 
un altra cosa, come posso fare per far durare una sessione fino a che l'utente non rimane nella pagina ? Ho provato ad usare session set cookie params ma non mi funziona bene come posso fare. Il mio dilemma è questo come faccio a far durare una sessione senza che mi scada dopo un tot di tempo
 
un altra cosa, come posso fare per far durare una sessione fino a che l'utente non rimane nella pagina ? Ho provato ad usare session set cookie params ma non mi funziona bene come posso fare. Il mio dilemma è questo come faccio a far durare una sessione senza che mi scada dopo un tot di tempo
dovresti agire sul php.ini, la durata massima delle sessioni dipende dal valore massimo impostato sul file di configurazione
 

Discussioni simili