Impedire l'accesso a una pagina dalla barra degli indirizzi

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
Ciao, vorrei sapere se esiste un modo per impedire a chi inserisce l'indirizzo di una pagina nella barra degli indirizzi di visualizzare la pagina stessa. Mi spiego meglio: ho una pagina protetta a cui si può accedere tramite password, soltanto che se si digita l'indirzzo di questa pagina protetta nella barra degli indirizzi la pagina si apre tranquillamente. Ecco io vorrei che questo non fosse possibile, per esempio reindirizzando l'utente che apre la pagina dalla barra degli indirizzi alla pagina di login dove inserire user e password. C'è qualcuno che può aiutarmi?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
io faccio così, anche se forse esistono sistemi migliori.
1. nella pagina di partenza creo una sessione con una parola strana
es. $_SESSION['autorizzato']="birillo";

2. nella pagina prima pagina riservata (prima di qualsiasi output html) verifico che la sessione esista e che questa sia uguale a "birillo", se non esiste, o diversa, con header location rimando alla pag di log. questo mi fa accedere alla pagina solo se passo attraverso la pagina di creazione della sessione


p.s.
comunque non ti preuccupare tanto interviene alex:D
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
PHP:
<?php
session_start();
if((!isset($_SESSION['autorizzato'])) || ($_SESSION['autorizzato']!='birillo') )
{
header('Location: login.php');
}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao,
eliox mi ha preceduto, solo una cosa io metto in più così

PHP:
<?php
session_start();
if((!isset($_SESSION['autorizzato'])) || ($_SESSION['autorizzato']!='birillo') )
{
unset($_SESSION['autorizzato']);
header('Location: login.php');
}
?>

cioè annullo la sessione
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
il codice $_SESSION['autorizzato']="birillo"; devo inserirlo così come l'hai scritto tu o devo mettere anche include ecc?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
nella pagina di partenza devi scrivere

session_start();
$_SESSION['autorizzato']='birillo';

il codice che ha scritto eliox nella pag riservata

ricordati che in tutte le pagine che utilizzano le sessioni deve esserci l'istruzione session_start();
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
ho fatto come mi avete detto però:
inserisco user e pass nella pagina dove ho il form di accesso e dove ho messo

<? php
session_start();
$_SESSION['autorizzato']='birillo';
?>

prima del tag di <html>

e mi porta alla pagina protetta dove ho messo il codice

<?php
session_start();
if((!isset($_SESSION['autorizzato'])) || ($_SESSION['autorizzato']!='birillo') )
{
unset($_SESSION['autorizzato']);
header('Location: login.php');
}
?>

solo che mi dà lo stesso errore (mi dice login fallito) di quando cerco di accedere alla pagina protetta tramite la barra degli indirizzi. Praticamente adesso , pur inserendo user e pass corretti nel form, mi dice login effettuato, carica 2 secondi la pagina protetta e poi mi dice login fallito
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
...Praticamente adesso , pur inserendo user e pass corretti nel form, mi dice login effettuato, carica 2 secondi la pagina protetta e poi mi dice login fallito

se ti dice logn fallito non dovrebbe dipendere dal codice che hai scritto.

immagino che tu abbia la pagina di loging con il classico form in cui due campi per inserire user e password + pulsante di submit, il form indirizza alla pagina riservata
nella pag riservata avrai il controllo dell'user e pass immessi e se questi non validi torni alla pg di login. è cosi?

se hai problemi posta i codici delle due pagine (la parte che interessa) così si vede cosa c'è di sbagliato, in quanto a me il metodo funzia.

eventualmente commenta per provare
//unset($_SESSION['autorizzato']);
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
esattamente la pagina è impostata come hai appenba scritto. Prima di inserire i codici che mi avete consigliato funzionava bene, poi, inseriti i codici, mi fa questo scherzo. Qui sotto ti scrivo il codice del file login.php che gestisce tutto:

<?php
//crei array per pass e uno per user
$pass_l=array();
$usrn_l=array();
//metto dei nomi a caso
$pass_l['pinco']="123";
$usrn_l['pinco']="piripacchio";
$pass_l['pallino']="777";
$usrn_l['pallino']="abracadabra";
//...eccetera.......
//cosi vedi a chi attribuisci la pass e user
// potresti fare anche una pagina chiamata password_user.php
//dove metti le righe sopra
// e poi fai
//include_once "password_user.php";
//metti $_POST, anche nel method= del form ( method="post" )
$pass = (isset($_GET['pass'])) ? $_GET['pass'] : '';
$user = (isset($_GET['user'])) ? $_GET['user'] : '';

//e verifichi che le pass e user esistano nell'array

if (in_array($pass, $pass_l) && in_array($user, $usrn_l)){
echo 'Login effettuato, attendere prego... <meta http-equiv="refresh" content="2;url=http://www.*****.altervista.org/Bacheca/bacheca.php">';
//eccetera....
}else{
echo 'Login fallito, ricontrolla username e password inseriti... <meta http-equiv="refresh" content="3;url=http://www.*****.altervista.org/Bacheca/accedi.html">';
//eccetera....
}
?>

come vedi se user e pass sono corretti vieni indirizzato alla pagina bacheca.php(ovvero la pagina protetta) mentre se sono errati torni alla pagina accedi.html in cui c'è il form per inserire user e password e dove ho inserito il comando x inziare la sessione 'birillo'. Mentre in bacheca.html ho messo il codice x verificare se la sessione 'birillo' è stata iniziata. Il codice qui sopra mi pare me l'abbia dato tu stesso poi io ho aggiunto i redirect e modificato gli user e le pass. Comunque ripeto senza qui codici che ho aggiunto adesso alle pagine funziona tutto correttamente, poi inserendo i codici che mi avete dato succede l'errore che ho scritto prima.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Ma non potresti effettuare un semplice controllo sul referer? Praticamente il referer è il link sul quale hai cliccato per arrivare a quella pagina. Quindi se ci accedi direttamente tramite l'URL il referer è vuoto. In ogni caso, visto che gli header HTTP si possono camuffare, è meglio effettuare proprio un controllo sul login, come suggerito da borgo e Eliox.
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
non so io mi affido a voi perchè è la prima volta che utilizzo una funzione del genere, aspettiamo che borgo mi aiuti, ho scritto prima tutto il codice ecc, vediamo se riesce ad aiutarmi, cmq alessandro potresti dirmi come funziona quest'ultimo tuo suggerimento sul refer?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Praticamente era una cosa di questo genere:
PHP:
<?php
if($_SERVER['HTTP_REFERER'] != 'pagina_tuo_sito')
  die('Non puoi accedere direttamente a questo indirizzo.');
?>
Dove al posto di pagina_tuo_sito andrebbe il link dal quale si accede alla pagina protetta. Però l'unica limitazione è che con i redirect non funziona, l'utente deve per forza cliccare su un collegamento nella pagina.
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
ah ho capito, bè non è male come idea basta che al posto del redirect ci metta un link, appena posso (cioè domani) provo e vediamo come và ;) grazie mille ah 1 cosa, in quale pagina devo inserire questo codice? nella pagina protetta o in quella dove si inseriscono user e pass x accedere?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
da quello che capisco ti accedi alla pagina login.php dalla pagina accedi.html e se il log va a buon fine vai alla pagina bacheca.php altrimenti torni alla accedi.html.
vorrei sapere quale è la pagina che devi fare in modo che non venga richiamata da riga di comando.
questo perchè
caso 1:se la pagina è bacheca.php devi fare
nella pagina login.php metti

PHP:
<?php
session_start();
$_SESSION['autorizzato']='birillo';//questa puoi metterla, invece che qui 
//anche nella pos. "A"
//che forse sarebbe meglio

$pass_l=array();
$usrn_l=array();
$pass_l['pinco']="123";
$usrn_l['pinco']="piripacchio";
$pass_l['pallino']="777";
$usrn_l['pallino']="abracadabra";
$pass = (isset($_GET['pass'])) ? $_GET['pass'] : '';
$user = (isset($_GET['user'])) ? $_GET['user'] : '';
if (in_array($pass, $pass_l) && in_array($user, $usrn_l)){
// pos "A"
echo 'Login effettuato, attendere prego... <meta http-equiv="refresh" content="2;url=http://www.*****.altervista.org/Bacheca/bacheca.php">';
}else{
echo 'Login fallito, ricontrolla username e password inseriti... <meta http-equiv="refresh" content="3;url=http://www.*****.altervista.org/Bacheca/accedi.html">';
}
?>
nella pagina bacheca.php
PHP:
<?php
session_start();
if((!isset($_SESSION['autorizzato'])) || ($_SESSION['autorizzato']!='birillo') )
{
	unset($_SESSION['autorizzato']);
	header('Location: login.php');
}
//.......eccetera...............
?>

caso 2: se invece la pagina è login.php, il problema è leggermente diverso in quanto non puoi usare
una pagina chiamata accedi.html ma deve essere chiamata accedi.php

nella pag accedi.php devi mettere
PHP:
<?php
session_start();
$_SESSION['autorizzato']='birillo';
?>
<form action="login.php"..........> tutto il form</form>

e nella pag login.php

PHP:
<?php
session_start();
if((!isset($_SESSION['autorizzato'])) || ($_SESSION['autorizzato']!='birillo') )
{
	unset($_SESSION['autorizzato']);
	header('Location: login.php');
}
//eccetera...................tutto quello che ti serve
?>
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
allora, ho provato il codice proposto da alessando

PHP:
<?php
if($_SERVER['HTTP_REFERER'] != 'pagina_tuo_sito')
  die('Non puoi accedere direttamente a questo indirizzo.');
?>

ok cercando di accede alla pagina dalla barra degli indirizzi mi dà il messaggio "Non puoi accedere direttamente a questo indirizzo." solo che anche dopo aver inserito user e pass corretti compare il messaggio da me impostato "Login effettuato, entra" (dove cliccando su entra si può accede alla pagina protetta) ma anche in questo caso cliccando su entra mi dà comunque l'errore 'Non puoi accedere direttamente a questo indirizzo.' quindi sia ke si inseriscano user e pass corretti sia che si cerchi di accedere alla pagina protetta tramite barra degli indirizzi non è possibile visualizzare la pagina protetta.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
due cose
1. ti conviene mettere
if(basename($_SERVER['HTTP_REFERER']) != 'pagina_tuo_sito'){....
così devi scrivere solo il nome della pagina da cui provieni e non (es.)
http://www.miosito.com/caterlla/mia_pagina.php

2. al posto di 'pagina_tuo_sito' devi scrivere il nome della pagina da cui provieni esempio:
if(basename($_SERVER['HTTP_REFERER']) != 'mia_pagina.php'){
 
Discussioni simili
Autore Titolo Forum Risposte Data
F impedire accesso phpmyadmin PHP 0
G impedire accesso a cartella o file Apache 1
N impedire accesso area riservata a utenti registrati Database 3
P Impedire l'accesso ad un determinato Host HTML e CSS 2
elpirata Impedire inserimento data di oggi e date passate jQuery 39
Giacomo Boccherini Impedire la visualizzazione portrait per alcune mediaqueries jQuery 1
T [PHP] impedire un doppio INSERT INTO dopo reload della pagina PHP 3
M [PHP] Impedire di digitare determinati caratteri nell’input (controllo in tempo reale) PHP 4
V [HTML] impedire il ridimensionamento delle immagini zoom browser HTML e CSS 11
S come impedire download diretto dei file ma non da pagina web PHP 0
Shyson Impedire che il popup sparisca Javascript 0
N impedire invio dati form jQuery 3
xone Impedire di visualizzare pagine php incluse PHP 5
radioButton Impedire nuovo login se si è già loggati PHP 3
F impedire scroll verticale Javascript 0
F impedire scroll verticale jquery Javascript 0
A Impedire download files da siti web Content Management System (CMS) 10
B [PHP] impedire download video PHP 12
G Impedire salvataggio pagina web HTML e CSS 5
I impedire ridimensionamento del browser HTML e CSS 1
Matt89 Impedire lo spam! PHP 2
M impedire al browser di mettere pagine in cache PHP 1
F come impedire la riproduzione ad ogni cambio pagina? Flash 4
M Impedire modifiche nelle maschere MS Access 0
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0
R reindirizzamento accesso facebook Facebook 1
elpirata Gestire permessi accesso alle pagine PHP 3
A Problemi di accesso da remoto a Ipcam IP Cam e Videosorveglianza 6
R Accesso a Mit APP Inventor2 Sviluppo app per Android 0
A Limitare accesso ad alcune pagine web PHP PHP 2
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
O Sricam SP 007 accesso con IP rete IP Cam e Videosorveglianza 0
B Problemi accesso Instagram Smartphone e tablet 1
C [PHP] Accesso ad un file specifico solo in base al server assegnato PHP 2
K Accesso videosorveglianza in mano ad altri IP Cam e Videosorveglianza 1
I Recupero accesso pannello di controllo dominio Leggi, Normative e Fisco 2
I [PHP] CURL per accesso ad area riservata PHP 6
M [PHP] o [APACHE] - Filtro geo per accesso sito PHP 6
F Come funziona in javascript l'accesso alle variabili dell'array Programmazione 1
E [PHP] Sso unico accesso per più siti PHP 8
J Limitare accesso disco condiviso Server Dedicati e VPS 0
G password accesso dvr IP Cam e Videosorveglianza 0
R [WordPress] Accesso al db e verifica credenziali (password criptata) WordPress 1
G Samsung tab 4 - impostazione e cancellazione codice di accesso Smartphone e tablet 0
W [ASP] Accesso a database Classic ASP 0
F IP CAM con accesso da remoto IP Cam e Videosorveglianza 1
base90 [php] phpMyAdmin nega l'accesso PHP 4
base90 [php] phpMyAdmin nega l'accesso Presentati al Forum 1
M Hosting con accesso SSH Hosting 1

Discussioni simili