Impedire l'accesso a una pagina dalla barra degli indirizzi

ciao
si in quanto il refer legge il nome della pagina da cui arrivi.
ricordati che nella pag dove metti user e pass non puoi usare (come ha detto alex) il redirect ma inserire un lik da cliccare

PHP:
if (in_array($pass, $pass_l) && in_array($user, $usrn_l)){ 
// pos "A" 
echo"<a href=\"bacheca.php\">login effettuato, clicca per accedere...</a>";
}else{ 
echo 'Login fallito, ricontrolla username e password inseriti... <meta http-equiv="refresh" content="3;url=http://www.*****.altervista.org/Bacheca/accedi.html">'; 
}
 
ho fatto esattamente così ma c'è sempre lo stesso problema, se inserisco user e pass corretti compare la scritta login effettuato entra, clicco su entra e non mi fa accedere (ho messo <a href="bacheca.php">Entra</a>),; se provo ad accedere direttamente da barra degli indirizzi non mi fa accedere ( e questo è giusto).
Non è esiste un modo per evitare che l'url della pagina venga memorizzato nella barra degli indirizzi?
 
ciao
non riesco a capire dove sbagli. ho fatto le seguenti pagine e le ho provate e funziano. prova ad userle cosi come sono e verifica con le tue

pagina di login
PHP:
<?php
//questa è la pagina login.php
$pass_l=array(); 
$usrn_l=array(); 
$pass_l['pinco']="123"; 
$usrn_l['pinco']="piripacchio"; 
$pass_l['pallino']="777"; 
$usrn_l['pallino']="abracadabra";

if(isset($_POST['Submit'])){
	$pass = (isset($_POST['pass'])) ? $_POST['pass'] : ''; 
	$user = (isset($_POST['user'])) ? $_POST['user'] : '';
	if (in_array($pass, $pass_l) && in_array($user, $usrn_l)){ 
		echo "<a href=\"bacheca.php\">entra</a>"; 
	}else{ 
		echo 'Login fallito, ricontrolla username e password inseriti... <meta http-equiv="refresh" content="3;url=login.php">'; 
	} 
}//fine if post
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p>username
    <input name="user" type="text">
    <br>
password
<input name="pass" type="text">
<br>
  </p>
  <p>
    <input type="submit" name="Submit" value="Invia">
  </p>
</form>

pagina bacheca
PHP:
<?php
//questa è la pagina bacheca.php
if(basename($_SERVER['HTTP_REFERER']) != 'login.php'){
	header('Location: login.php'); 
}
echo "sono entrato da ".basename($_SERVER['HTTP_REFERER'])."e faccio quello che devo fare";
?>

cioè
se inserisco user e pass giusti mi da entra e da entra accedo a bacheca e a monitor ho sono entrato da login.php e faccio quello che devo fare

se inserisco user o pass errati mi da Login fallito, ricontrolla username e password inseriti...

se entro in bacheca in qualsiasi altro modo senza vedere nulla torno a login.php
 
ok riprovo, io comunque ho la pagina accedi dove c'è solo il form, poi ho il file login.php che riceve user e pass inseriti e si occupa di controllare se sono corretti ed eseguire i vari redirect (che ho trasformato in link visto che i redirect in questo caso non funzionano) e infine ho la pagina protetta bacheca.php . Adesso riprovo tutto e vedo se funziona
 
ciao
è lo stesso, io ho messo insieme form+log per fare prima

se le hai divise, nella pagina del form al posto di

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
............
metti

<form action="login.php" method="post">
....................

tutto qui
 
adesso funziona, non so cosa sia cambiato rispetto a quando l'ho fatto io, vabbè allora mi faccio bene le pagine e integro questi codici, thanks ;)
 
ciao,
ok:tifoso:, delle volte (anzi spesso) basta "'na cagatella de mosca" e lo script va in pallino.
inoltre,per accontentare eliox che (giustamente) dice che un utente può inserire un user ed una pass (esistenti),
ma non entrambe sue si potrebbe fare così

PHP:
<?php
$utente['piripacchio']="123";//key=user e value=pass di pinco
$utente['abracadabra']="777";//key=user e value=pass di pallino
$utente['vacanziere']="2853";//key=user e value=pass di pancrazio
//eccetera......
if(isset($_POST['Submit'])){ 
    $pass = (isset($_POST['pass'])) ? $_POST['pass'] : '';  
    $user = (isset($_POST['user'])) ? $_POST['user'] : ''; 
    if (array_key_exists($user, $utente) && $utente[{$user}]==$pass){
        echo "<a href=\"bacheca.php\">entra</a>";  
    }else{  
        echo 'Login fallito, ricontrolla username e password inseriti... <meta http-equiv="refresh" content="3;url=login.php">';  
    }  
}//fine if post 
?>

eliox giudicherà se ho fatto giusto:eek:
 
Ultima modifica:
perfetto sono riuscito a utilizzare il codice e tutto funziona alla perfezione, vi ringrazio ancora , tornerò a trovarvi non appena avrò qualche altro problema :D
 

Discussioni simili