Consiglio su tenere una pag protetta

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Ho creato un sito in HTML e PHP dove i post (gli argomenti) vengono modificati attraverso un interfaccia grafica semplificata. Ora il fatto è che chiunque teoricamente digitando:
www.miosito.it/interfaccia può modificare i contenuti. Come posso fare per proteggere quella pagina ? Avevo pensato ad una password e user prestabilito (tanto solo io ci entro) che mi faccia andare alla pagina richiesta. Ho trovato qualche codice per questo fatto ma con un semplice tasto (visualizza sorgente pagina) è verificabile quale è la pssword e l'user. Quindi, come al solito chiedo a voi!

Grazie!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se la pag è php non vedi l'user e pass
ti fai il classico form per inserire l'user e la pass che punta alla pagina che ti interessa
la pag che ti interesssa deve essere .php
es.
PHP:
<?php
/*
ti conviene in una pag a parte, farti un poccolo script con le seguenti due righe, lanciarlo e copiare i due risultati
echo sha1("username che utilizzerai")."<br>";
echo sha1("password che utilizzerai")."<br>";
questo impedisce comunque di conoscere quale è l'user e la pass anche se uno riuscisse a scaricare la pagina via fpt
*/

$user="qui copi il risultato dell'user";
$pass="qui copi il risultato della pass";
if(isset($_POST['user']) && isset($_POST['pass']){
	if(sha1($_POST['user'])== $user && sha1($_POST['pass'])== $pass){
		/*e qui metti tutto quello che devi fare
		.................
		.................
		*/
	}else{
		header("location:nome_pag_che vuoi.php");
		exit();
	}
}else{
	header("location:nome_pag_che vuoi.php");
	exit();
}
?>
se poi ti interessa anche altre pagine riservato su cui puoi navigare
puoi usare le sessioni da trasmettere da una riservata ad un altra riservata
 

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Ciao,
Grazie per la risposta, però sono molto ignorante sul punto degli script. Come faccio per creare il medesimo script? poi che estensione devo darli?

Grazie e scusa per l'incompetenza ma sono alle prime armi con il php e script.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se nello script c'è del php la pagina DEVE avere estenzione .php
se es chiami una pag con dentro del php pinco.htm il bw NON interpreta il php che appare quindi come se fosse un semplice testo e quindi lo vedi.
al contrario se in una pag. php ci può stare perfettamente del codice html, il bw , quando incontra i tag <?php .... ?> chiama l'interprete e se lo fa tradurre in html.
(il bw è un po' gnocco conosce solo l'html e quindi ha bisogno di qualcuno che traduca il codice php in html, un po' come faccio io con la lingua inglese)
quindi (non so che editor usi, io uso dream) comunque per scrivere codice php ti basta il semplice blocco note, NON word)
quindi venendo a noi.
1. scrivi con blocco note la parte per ricavere l'user e pass codificata (al posto di username che utilizzerai scrivi il tuo user e la tua pass)
PHP:
<?php
echo sha1("username che utilizzerai")."<br>";
echo sha1("password che utilizzerai")."<br>"; 
?>
la salvi con nome (es) codPass.txt, lo rinomini in codPass.php lo carichi e lo lanci, e ti scrivi quell'accozaglia di numeri e lettere da qualche parte (copy/paste)
2. poi fai la pag riservata.php che è quella che ti ho postato prima
nella variabili $user e $pass metti rispettivamente quell'accozaglia di numerei che ti eri scritto
nella parte tra i commenti /* qui metti.......*/ scrivi quello che devi fare, se ti serve scrivere dall'html puro esci da php e poi rientri, es.

PHP:
<?php
//........
if(sha1($_POST['user'])== $user && sha1($_POST['pass'])== $pass){ 
/*e qui metti tutto quello che devi fare...*/
?>
<a haref="pinco.php">clicca</a>
<?php
    }else{
//...
?>
comunque prova a fare qualcosa e postalo
 

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Ciao,
Allora la situazione che ho è la seguente:

File di autenticazione:
Codice:
<?php 
/* 
ti conviene in una pag a parte, farti un poccolo script con le seguenti due righe, lanciarlo e copiare i due risultati 
echo sha1("username che utilizzerai")."<br>"; 
echo sha1("password che utilizzerai")."<br>"; 
questo impedisce comunque di conoscere quale è l'user e la pass anche se uno riuscisse a scaricare la pagina via fpt 
*/ 

$user="d033e22ae348aeb5660fc2140aec35850c4da997"; 
$pass="5f5fef3b5e053d07eaaf1f65bb872c0b74f8b0a2"; 
if(isset($_POST['user']) && isset($_POST['pass']){ 
    if(sha1($_POST['user'])== $user && sha1($_POST['pass'])== $pass){ 
     
	 header("location:software/index.php");
	 
    }else{ 
        header("location:nome_pag_che vuoi.php"); 
        exit(); 
    } 
}else{ 
    header("location:nome_pag_che vuoi.php"); 
    exit(); 
} 
?>

Avviato questo file dovrei visualizzare la pag con la richiesta di autenticazione e dopo poter entrare nella cartella software (che è quella che gestisce i post).Mi viene un dubbio ovvero:
Se io digito sul browser www.miosito.it /PAGAUTENTICAZIONE lui mi farebbe accedere ma se digito www.miosito.it/software lui mi va cmq senza passare dall'autenticazione giusto?

Grazie borgo!

P.S Se ti chiedessi anche il form per l'autenticazione chiederei troppi dici?
 
Ultima modifica:

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Allora, sto facendo un po di prove e sono arrivato qui ed ho un problema.
Ricapitolando io voglio arrivare ad avere:
- Un sito che ha una sezione riservata cui deve essere accedibile solo a me con relative password e user.
- Una cartella (la sezione riservata) che contiene diverse pagine, denominata software

Allo stato attuale, la cartella è visualizzabile scrivendo www.miosito.it/SOFTWARE

allora ho creato un file, muro.php con queste caratteristiche:

Codice:
<html>
<head>
<title>CONTROLLO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php 
/* 
ti conviene in una pag a parte, farti un poccolo script con le seguenti due righe, lanciarlo e copiare i due risultati 
echo sha1("username che utilizzerai")."<br>"; 
echo sha1("password che utilizzerai")."<br>"; 
questo impedisce comunque di conoscere quale è l'user e la pass anche se uno riuscisse a scaricare la pagina via fpt 
*/ 

$user="d033e22ae348aeb5660fc2140aec35850c4da997"; 
$pass="5f5fef3b5e053d07eaaf1f65bb872c0b74f8b0a2"; 
if(isset($_POST['user']) && isset($_POST['pass'])){ 
    if(sha1($_POST['user'])== $user && sha1($_POST['pass'])== $pass){ 
     
	 header("location:software/index.php");
	 
    }else{ 
        header("http://www.miosito.it/"); 
        exit(); 
    } 
}
?>
<form id="accesso" method="post" action="">
<fieldset>
<legend>Login</legend>
<label for="user">username:</label>
<input name="user" class="text" value="user" type="text" id="user" />


<label for="pass">password:</label>
<input name="pass" class="text" value="pass" type="pass" id="pass" />

<input class="submit" title="invia username e password per controllo autanticita'" type="submit" name="action" value="Invia" />
</fieldset>
</form>
</body>
</html>

Il fatto è che ora quando vado a lanciare il file: muro.php mi da questo errore:
Codice:
Warning: Cannot modify header information - headers already sent by (output started at /home/mhd-01/www.miosito.it/htdocs/muro/index.php:7) in /home/mhd-01/www.miosito.it/htdocs/muro.php on line 20

Oltre questo errore comunque sia resta il fatto che se vado a scrivere www.miosito.it/software in ogni caso non mi chiede nessuna autorizzazione...

Grazie!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
pensavo che tu volessi fare una unica pagina riservata.
comunque la pag del form schematicamente:
HTML:
<h1>loggati</h1>
<form action="controllo.php" method="post">
username: <input name="user" type="text"><br>
password: <input name="pass" type="password"><br>
<input name="log" type="submit" id="log" value="log">
</form>
poi fai la pag controllo.php (che è quella che hai postato con alcune modifiche)
PHP:
<?php 
session_start();//sessione che vedrai serve alla pag index.php e anche per altre riservate
$user="d033e22ae348aeb5660fc2140aec35850c4da997"; 
$pass="5f5fef3b5e053d07eaaf1f65bb872c0b74f8b0a2"; 
if(isset($_POST['user']) && isset($_POST['pass']){ 
    if(sha1($_POST['user'])== $user && sha1($_POST['pass'])== $pass){ 
     $_SESSION['password']=$_POST['pass'];//genero la sessione
	 header("location:software/index.php");
	 exit();//meglio un exit anche qui
    }else{ 
        header("location:nome_pag_che vuoi.php"); 
        exit(); 
    } 
}else{ 
    header("location:nome_pag_che vuoi.php"); 
    exit(); 
} 
?>
poi fai la pag index.php (con il php e/o l'html che ti serve)
PHP:
<?php
session_start();//inizializzi la sessione
if(!isset( $_SESSION['password']){//la sessione NON esite quindi vieni reindirizzato a dove vuoi tu
	//in una certa misura impedisce l'accesso diretto es con http://www.tuo_sito.it/software/index.php
	header("location:nome_pag_che vuoi.php"); 
    exit();
}
//e qui puoi mettere tutto il php che vuoi....
?>
<!-- e l'html -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- eccetera, intervallato o meno da codice php -->

se le pag riservate sono più di una (tramite menu) in tutte metti
PHP:
<?php
session_start();//inizializzi la sessione
if(!isset( $_SESSION['password']){//la sessione NON esite quindi vieni reindirizzato a dove vuoi tu
	//in una certa misura impedisce l'accesso diretto es con http://www.tuo_sito.it/software/index.php
	header("location:nome_pag_che vuoi.php"); 
    exit();
}
//e qui puoi mettere tutto il php che vuoi....
?>

esistono anche sistemi più sicuri, ma tutto dipende dall'importanza

p.s.
non usare il tag CODE (va bene es per js) ma se solo html <> o PHP
 

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Ottimo grazie però mi sa che ho sbagliato qualcosa.
Allora, ho rinominato il controllo.php con index.php in quanto l'altra index risiede nella cartella software quindi ho questa situazione:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Controllo</title>
</head>
<body>

<?php  
session_start();//sessione che vedrai serve alla pag index.php e anche per altre riservate 
$user="d033e22ae348aeb5660fc2140aec35850c4da997";  
$pass="5f5fef3b5e053d07eaaf1f65bb872c0b74f8b0a2";  
if(isset($_POST['user']) && isset($_POST['pass'])){  
    if(sha1($_POST['user'])== $user && sha1($_POST['pass'])== $pass){  
     $_SESSION['password']=$_POST['pass'];//genero la sessione 
     header("location:software/index.php"); 
     exit();//meglio un exit anche qui 
    }else{  
        header("http://www.miosito.it/");  
        exit();  
    }  
}else{  
    header("http://www.miosito.it/");  
    exit();  
}  
?>

<h1>loggati</h1>
<form action="index.php" method="post">
username: <input name="user" type="text"><br>
password: <input name="pass" type="password"><br>
<input name="log" type="submit" id="log" value="log">
</form>
</body>
</html>

e sulla cartella software, nella index nel body ho messo questo codice:
PHP:
<?php 
session_start();//inizializzi la sessione 
if(!isset( $_SESSION['password']){//la sessione NON esite quindi vieni reindirizzato a dove vuoi tu 
    //in una certa misura impedisce l'accesso diretto es con http://www.tuo_sito.it/software/index.php 
    header("location:nome_pag_che vuoi.php");  
    exit(); 
} 
//e qui puoi mettere tutto il php che vuoi.... 
?>

il fatto è che quando avvio l'index del controllo mi da pagina bianca e nulla piu'..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao scusa, ma mi sono accorto di un paio di cose
sia l'istruzione session_start() che header DEVONO venire prima di QUALSIASI output html e tu hai messo in testa:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> ecc.......
per semplificare ti conviene fare due pagine
una con il form (es. loggati.php)
e una con il controlllo controllo.php

nella pag controllo NON mettere tutto l'ambaradan
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
ma solo i tag <?php .... ?>
 
Ultima modifica:

Frank10

Utente Attivo
4 Mar 2011
190
1
18
(Scusami se sono impedito, ma sono alle prime armi)
Allora ho:

controllo.php
PHP:
<?php  
session_start();//sessione che vedrai serve alla pag index.php e anche per altre riservate 
$user="d033e22ae348aeb5660fc2140aec35850c4da997";  
$pass="5f5fef3b5e053d07eaaf1f65bb872c0b74f8b0a2";  
if(isset($_POST['user']) && isset($_POST['pass'])){  
    if(sha1($_POST['user'])== $user && sha1($_POST['pass'])== $pass){  
     $_SESSION['password']=$_POST['pass'];//genero la sessione 
     header("location:software/index.php"); 
     exit();//meglio un exit anche qui 
    }else{  
        header("http://www.sito.it/");  
        exit();  
    }  
}else{  
    header("http://www.sito.it/");  
    exit();  
}  
?>

e index.php
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title>Controllo</title> 
</head> 
<body> 
<h1>loggati</h1>
<form action="controllo.php" method="post">
username: <input name="user" type="text"><br>
password: <input name="pass" type="password"><br>
<input name="log" type="submit" id="log" value="log">
</form>
</body> 
</html>

Mi da qualche errore nell'index di quella software che l'ho messa all'interno della cartella software.. sicuramente ho sbagliato qualcosa quindi
 

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Nella index del sw ho messo dopo il body questo codice:
PHP:
<?php 
session_start();//inizializzi la sessione 
if((!isset( $_SESSION['password'])){//la sessione NON esite quindi vieni reindirizzato a dove vuoi tu 
    //in una certa misura impedisce l'accesso diretto es con http://www.tuo_sito.it/software/index.php 
    header("location:nome_pag_che vuoi.php");  
    exit(); 
} 
//e qui puoi mettere tutto il php che vuoi.... 
?>

Non so cosa devo mettere in nome_pag_che vuoi poichè.
La struttura è:
root-->index.php e controllo.php-->software-->index.php--->cartelle e pagine php

In questo caso mi trovo nella index del sw quindi cosa dovrei mettere?
 

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Scusami, che sbadato c'era anche scritto :).

Ok funziona in parte, perchè mi accede all'index del php e fa l'accesso e tutto ma se io faccio
www.miosito.it/muro
lui mi chiede l'accesso

se faccio invece
www.miosito.it/muro/software

lui mi entra direttamente sull'index senza richiesta di autenticazione

Lo schema è:

root-->muro(contiene controllo e index)-->sofware(index ed altre cartelle)

nell'index sw ho messo dopo il body:
PHP:
<?php 
session_start();//inizializzi la sessione 
if(!isset( $_SESSION['password'])){ 
    header("location:www.miosito.it");  
    exit(); 
} 
//e qui puoi mettere tutto il php che vuoi.... 
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Nella index del sw ho messo dopo il body questo codice
non dopo il body ma SEMPRE prima

PHP:
<?php 
session_start();//inizializzi la sessione 
if(!isset( $_SESSION['password'])){ 
    header("location:www.miosito.it");  
    exit(); 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title>Controllo</title> 
</head> 
<body>
eccetera.........
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se guardi lo zip funzia.
comunque se ti logghi e poi torni alla index nella root puoi accedere alla riservata in quanto hai creto la sessione e ti sei gia loggato.
ma un pinco pallo qualsiasi se prima non si è loggato non puo accedere direttamente.
per provare quello che dico
prima ti logghi e accedi
torni alla index e provi ad accedere direttamente alla index riservata e vedi che puoi farlo.
chiudi il bw.
lo riapri (come se tu fossi un pinco pallo qualsiasi) e provi ad accedere direttamente alla riservata, vedrai che si rimandato alla home.
solo chi si è loggato e che quindi conosce user e pass (prima di chiudere il bw) può accedere anche direttamente
 

Allegati

  • root.zip
    2,2 KB · Visite: 196

Frank10

Utente Attivo
4 Mar 2011
190
1
18
Si infatti, ho visto prima e funziona alla grande!
Ora, se posso, ti chiedo altre due cose anche se sono semplici curiosità.
- Se dovessi in futuro gestire più user ad es 2 dov'è che dovrei modificare il codice?
- Ultimo ma non ultimo punto, io sto lavorando in php grazie a te che mi stai aiutando ma di php come vedi ne so ben poco, conosci qualche guida ben fatta molto online?

Ciao!
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
Discussioni simili
Autore Titolo Forum Risposte Data
S Consiglio si relazione tabelle MS Access 1
A Consiglio curvatura monitor Programmazione 0
G Consiglio su piattaforma forum da utilizzare CMS (Content Management System) 1
A Consiglio per creazione sito web CMS (Content Management System) 1
C [Diagramma E/R] Consiglio su progetto Database 0
sbolde91 Consiglio gestione Hosting Hosting 2
B Richiesta Consiglio E-commerce CMS (Content Management System) 1
A consiglio su telecamere ip wi-fi Presentati al Forum 0
S Consiglio esercizio Javascript Javascript 2
M Consiglio sulla gestione di Gerarchie Database 0
L Consiglio SEO gestione dominio + free hosting SEO e Posizionamento 6
M [DIAGRAMMA ER] Consiglio su progetto Presentati al Forum 1
R Consiglio Hosting per e-commerce Hosting 8
L Ciao, chiedo consiglio Presentati al Forum 1
Web93 RICHIESTA CONSIGLIO - FARE UN SITO WEB CMS (Content Management System) 1
F Consiglio IP camera per timelapse (anche notturno) IP Cam e Videosorveglianza 0
M [PHP] Consiglio su come istanziare un Bottone PHP 0
S [PHP] Richiesta consiglio PHP 1
M Consiglio su problematica impianto videosorveglianza IP Cam e Videosorveglianza 4
M [HTML] consiglio su label e checkbox riguardo l'allineamento HTML e CSS 3
D consiglio evitare truffe Annunci servizi di Social Media Marketing 11
A [Visual Basic] Consiglio sul datagridview Visual Basic 0
G [Diagramma ER] Consiglio su progetto Database 0
G consiglio acquisto telecamera nascosta in sensore allarme IP Cam e Videosorveglianza 0
N Consiglio struttura database WFM Database 1
Q consiglio per python Programmazione 1
C Consiglio configurazione IPCam on line su pagina web IP Cam e Videosorveglianza 2
A Consiglio hosting offshore?? Hosting 3
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
S Consiglio Gestionale/ERP su commessa Windows e Software 0
A Richiesta consiglio per kit videosorveglianza IP Cam e Videosorveglianza 0
D [Photoshop] Consiglio acquisto tavoletta grafica de xp-pen Photoshop 0
R Consiglio rete cablata Reti LAN e Wireless 4
D Consiglio per rete ufficio Reti LAN e Wireless 0
W [CMS] Un consiglio per il CMS più adatto a me CMS (Content Management System) 2
E Consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 0
D [HTML] Consiglio su sito Joomla Joomla 6
M [MS Access] consiglio sviluppo query MS Access 1
D Consiglio su come impostare IP statico Reti LAN e Wireless 0
G [PHP] Consiglio su Qry/array PHP 3
M Consiglio su creazione rete Reti LAN e Wireless 0
trattorino Consiglio e parere Annunci servizi di Social Media Marketing 4
Ibernato Consiglio host Hosting 7
M consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 1
andreas88 Consiglio valore in euro di un Notebook usato Discussioni Varie 3
G consiglio telecamere per esterno IP Cam e Videosorveglianza 4
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
E Consiglio telecamera wifi motorizzata esterno con power bank IP Cam e Videosorveglianza 5
felino TV Box Android: consiglio su quale acquistare Discussioni Varie 0
A Ciao a tutti, volevo chiedervi un consiglio riguardo l'errore che viene fuori quando tento di lancia Presentati al Forum 1

Discussioni simili