Reindirizzamento a ogni diversa cartella per ogni utente

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Salve,
Sono dei giorni che mi sbatto con questo dilemma, premetto che sono un novello, sto cercando di reindirizzare ogni utente che si logga alla sua cartella sul web dove all'interno c'è una pagina php con il nome privato.php.

esempio: persona x, inserisce il suo username e la sua password, clicca accedi, si apre il file config.php, il file connessione_db.php e infine il file verifica.php, verifica che le credenziali sono ok e indirizza al file privato.php

Fino a qui ci sono mi fuonziona! forse c'è un problema con la sicurezza, cioè il file è accessibile anche direttamente scrivendolo dal link.

ora però io vorrei esempio creare una cartella con l'username o l'id della persona x, e all'interno il file privato.php che lui può solo guardare. non ha permessi per modificare o altro. solo guardare (deve vedere se la sua pratica è in lavorazione o in stallo o altro)

io pensavo che ci fosse una qualche funzione che dice se il login a successo, ti reindirizzo alla cartella che ha lo stesso valore di username e all'interno c'è il file che è ha il nome uguale per tutti o ancora meglio che ha il nome uguale al suo id.

Volevo anche dire che in questo sito non vi è la registrazione, che i benificiari di questo sistema dopo aver stipulato un mandato gli verranno fornite le credenziali che io aggiungerò nel database, successivamente aggiungerò la cartella con il username e il relativo file privato.php modificato opportunamente per visualizzare solo quello di cui è stato accordato. quando il mandato verrà concluso eliminerò il tutto.

Spero di aver detto tutto, non mi mangiate vi prego!
 

Claudio Curci

Nuovo Utente
15 Mar 2013
8
0
0
Puoi lavorare con le variabili di sessione, seguendo questo flusso:

  1. Quando l'utente invia il modulo con la propria user /password, verifichi che i dati siano corretti
  2. Se i dati sono corretti, lo invii nella pagina con il suo username
  3. In questa pagina, per evitare che entrino altre persone non autorizzate, esegui un controllo di sessione
Il controllo di sessione avrà questa sintassi (ipotizzando che l'username sia pippo e quindi il file sia dentro pippo/privato.php):

PHP:
if($_SESSION['username'] != 'pippo'){
die('non sei autorizzato.');
}
 

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Fino a qui ok, però che succede se ho 20 diverse persone? che andranno tutti a quella pagina li.
Ma facendomi il controllo della pagina solo 1 persona avrà l'acesso.
io invece volevo creare:

host:
www. (cartella principale dove c'è il sito internet e i file di login, verifica ecc)
|
[sottocartella]Giuseppe
| |
| [file]Privato.php
|
[sottocartella]Francesco
| |
| [file]Privato.php

ecc
Ora quando L'utente Giuseppe con la password 12345 accede il file verifica controllerà se sul database nella tabella utenti vi è la corrispondenza e mi indirizza alla Sottocartella Giuseppe al file Privato.php. Io volevo creare quindi una connessione tra l'username che viene inserito e la cartella che avrà quell'username quindi mi aprirà il file che ha il nome Privato.php uguale per tutti ma che chiaramente ha a schermo cose diverse.
 

Claudio Curci

Nuovo Utente
15 Mar 2013
8
0
0
Da quanto ho capito, la cartella la crei tu (via ftp suppongo) vero?

A quel punto, ogni utente andrà verso quella con il suo username.

Se una persona si logga come pippo, avrai nella pagina di login questo codice

PHP:
$_SESSION['username'] = $_POST['username'];
header("Location: ".$_SESSION['username']."/privato.php");
die();

se uno si logga come pippo, andrà in pippo/privato.php, chi come pluto andrà in pluto/privato.php e via dicendo.
ricordati di lanciare session_start() ad inizio file.
 

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Ho provato come dici tu e mi risponde così:

Giuseppe Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/www/verifica.php:36) in /htdocs/public/www/verifica.php on line 37
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
poi in ogni file riservato affinche non sia raggiungibile da un link diretto (es) digitando sul bw
www . tuo_sito.it /Giuseppe /privato.php (metto degli spazi perche non si formo il link)
metti il
PHP:
<?php
session_start();
if(!isset($_SESSION['username'])){
	header("location=index.php");//o altro url a cui vuoi riinviare
	exit();
}
//eccetera....... dati del privato....
?>
 

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Ora ho un altro inconveniente quando faccio il logout, volevo rimandare la persona alla index principale che si trova nella cartella principale. Ma con questo codice:

header("location: index.html?msg=$msg");

mi dice che non lo trova perche come noto me lo cerca nella sottocartella Giuseppe/index.html e non nella cartella primaria.

lo so sono un nabbo ma che ci posso fare. Sarà un mesetto che ho iniziato a studiarci su.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
prova
PHP:
header("location: ../index.html?msg=$msg");
oppure col percorso assoluto
PHP:
header("location: http://tuo_sito.it/index.html?msg=$msg");
 

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Grazie ragazzi siete gentilissimi... ultima cosa davvero.

ho un problema con l'accesso diretto alla pagina.

Ho provato ma mi crea un problema... cioè funziona che non mi fa entrare diretto ma allo stesso tempo non mi fa entrare nemmeno con il login...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
quando fail login e dopo la verifica dell'user e pass se questa è ok (e solo se ok) devi valorizzare la sessione $_SESSION['username'] con l'username dell'utente
 

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Penso di non aver capito dov'è l'errore.

file privato.php:

PHP:
<?php
session_start();
//se non c'è la sessione registrata
if (isset($_SESSION['autorizzato'])) {
  echo "<h1>Area riservata, accesso negato.</h1>";
  echo "Per effettuare il login clicca <a href=' ../login.php'><font color='blue'>qui</font></a>";
  die;
} else {
 
//Altrimenti Prelevo il codice identificatico dell'utente loggato

$cod = $_SESSION['cod']; //id cod recuperato nel file di verifica
}
?>

Questo invece è il file verifica.php

PHP:
<?php
session_start(); //inizio la sessione
//includo i file necessari a collegarmi al db con relativo script di accesso
include("connessione_db.php");
include("config.php");
 
//mi collego
mysql_select_db("$db_name",$connessione);
 
//variabili POST con anti sql Injection
$username=mysql_real_escape_string($_POST['username']); //faccio l'escape dei caratteri dannosi
$password=mysql_real_escape_string(sha1($_POST['password'])); //sha1 cifra la password anche qui in questo modo corrisponde con quella del db
 
 $query = "SELECT * FROM login WHERE username = '$username' AND password = '$password' ";
 $ris = mysql_query($query, $connessione) or die (mysql_error());
 $riga=mysql_fetch_array($ris); 
 
/*Prelevo l'identificativo dell'utente */
$cod=$riga['username'];
 
/* Effettuo il controllo */
if ($cod == NULL) $trovato = 0 ;
else $trovato = 1; 
 
/* Username e password corrette */
if ($trovato === 1) {
 
 /*Registro la sessione*/
  $_SESSION['autorizzato'] = 1;
 
  /*Registro il codice dell'utente*/
  $_SESSION['cod'] = $cod;
 
 /*Redirect alla pagina riservata*/
  $_SESSION['username'] = $_POST['username'];
  header("Location: ".$_SESSION['username']."/privato.php");
   		
} else {
 
/*Username e password errati, redirect alla pagina di login*/
 echo '<script language=javascript>document.location.href="login.php"</script>';
 
}
?>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
che errore ti da?
poi radcchiudi sempre ol codice tra gli appositi tag (seconda riga formattazione del post ultime tre iconcine nell'ordine CODE HTML PHP)
 

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Se faccio l'accesso diretto non mi fa entrare... perfetto
ma se faccio l'accesso con password e username non mi fa entrare ancora... esce la stessa schermata come nell'accesso diretto...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ti ho messo un po' apposto, leggi i commenti.
provalo e sappimi dire
PHP:
<?php
session_start(); //inizio la sessione
if(trim($_POST['username'])!="" || trim($_POST['password']!="")){//prima verifica che non siano vuoti
	//inutile collegarsi prima se uno o entrambi vuoti
	require_once("connessione_db.php");//è meglio il require
	require_once "config.php");
	//mi collego
	mysql_select_db($db_name,$connessione) or die (mysql_error());;
	//variabili POST con anti sql Injection
	$username=mysql_real_escape_string($_POST['username']); //faccio l'escape dei caratteri dannosi
	$password=mysql_real_escape_string(sha1($_POST['password'])); //sha1 cifra la password anche qui in questo modo corrisponde con quella del db
	$ris = mysql_query($query, $connessione) or die (mysql_error());
	//verifico che esista la combinazione user pass
	if(mysql_num_rows($ris)>0){//se maggiore di zero esiste oppure mysql_num_rows($ris)==1
		$riga=mysql_fetch_array($ris);
		$cod=$riga['username'];
		$_SESSION['autorizzato'] = 1;//è un sovrapiù
		$_SESSION['username']=$cod;
		//Registro il codice dell'utente
		//$_SESSION['cod'] = $cod;// ???? a che ti serve hai gia la session username
		header("Location: ".$_SESSION['username']."/privato.php");
		exit();
	}
}
header("Location:login.php");
/*
se vuoi invire un messaggio di errore puoi
$err="non hai inserito l'username o la password, non sei autorizzato ad entrare";
header("Location:login.php?err=$err");
che visualizzerai nella login.php
*/
exit();
?>
poi nella privato.php
PHP:
<?php
session_start();
//se non c'è la sessione registrata
if (!isset($_SESSION['autorizzato'])){// ti eri dimenticato un ! - poi puoi mettere !isset($_SESSION['username']
	//evita di far vedere qualcosa a chi non è autorizzato
	//echo "<h1>Area riservata, accesso negato.</h1>";
	//echo "Per effettuare il login clicca <a href=' ../login.php'><font color='blue'>qui</font></a>";
	//die;
	//se vuoi dare un messaggio usa lo stesso sistema che ti ho messo nel login
	$err="per accedere devi essere loggato";
	header("Location:../login.php?err=$err");
	exit();
}else{
	//il log è andato a buon fine
	echo "<h3>benvenuto ".$_SESSION['username']."nella tua pagina riservata</h3>"
	//ecc.......
	// e queste a cosa ti servono??
	//Altrimenti Prelevo il codice identificatico dell'utente loggato
	$cod = $_SESSION['cod']; //id cod recuperato nel file di verifica
}
?>

poi studia la classe PDO per le interrogazioni al db le vecchie query sono deprecate anche se per ora funzionano
 

Giuseppe Calabro'

Nuovo Utente
15 Mar 2013
15
0
0
Ciao allora ho sistemato degli errorini di battitura sicuramente per la velocità! ma ti ringrazio cmq! allora il file privato.php per l'accesso diretto va bene! mi rimanda alla pagina di log in con la scritta errore... perfetto
ma se faccio il login la pagina verifica.php mi resistuisce un errore.

Parse error: syntax error, unexpected T_BOOLEAN_OR in /htdocs/public/www/verifica.php on line 4

File verifica.php
PHP:
<?php
session_start(); //inizio la sessione
//prima verifica che non siano vuoti
if(trim($_POST['username']!="")) || (trim($_POST['password']!="")){
	//richiamo i file di connessione al db
    require_once("connessione_db.php");
    require_once("config.php");
    //mi collego
    mysql_select_db($db_name,$connessione) or die (mysql_error());;
    //variabili POST con anti sql Injection
    $username=mysql_real_escape_string($_POST['username']); //faccio l'escape dei caratteri dannosi
    $password=mysql_real_escape_string(sha1($_POST['password'])); //sha1 cifra la password anche qui in questo modo corrisponde con quella del db
    $ris = mysql_query($query, $connessione) or die (mysql_error());
    //verifico che esista la combinazione user pass
    if(mysql_num_rows($ris)>0){//se maggiore di zero esiste oppure mysql_num_rows($ris)==1
        $riga=mysql_fetch_array($ris);
        $cod=$riga['username'];
        $_SESSION['autorizzato'] = 1;
        $_SESSION['username']=$cod;
        header("Location: ".$_SESSION['username']."/privato.php");
        exit();
    }
}
$err="non hai inserito l'username o la password, non sei autorizzato ad entrare";
header("Location:login.php?err=$err");
exit();
?>

Lo so della classe PDO ma già vado in confusione con questo... e onestamente mi toccherebbe studiarla completamente da capo perche cambia molto!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
:( ho messo una parentesi in più
if(trim($_POST['username']!="")) || (trim($_POST['password']!="")){
così
PHP:
if(trim($_POST['username']!="") || (trim($_POST['password']!="")){
 
Discussioni simili
Autore Titolo Forum Risposte Data
R reindirizzamento accesso facebook Social Media Marketing 2
P [PHP] Reindirizzamento post Login PHP 3
P Reindirizzamento errori url Web Server 0
L iis reindirizzamento globale a una directory virtuale Web Server 0
D [WordPress] Reindirizzamento funziona su Chrome ma non su Firefox WordPress 0
E [PHP] Reindirizzamento pagina se la password immessa è corretta PHP 9
A Forzare reindirizzamento con ajax Ajax 0
C Reindirizzamento automatico ad una pagina del proprio sito dopo condivisione su facebook PHP 1
P problemi di refresh per reindirizzamento pagina PHP 6
C Reindirizzamento htaccess HTML e CSS 2
F reindirizzamento sottodiminio SEO e Posizionamento 2
IImanuII Reindirizzamento URL forwarding WordPress 4
K Cambio indirizzo dominio e reindirizzamento 301 Domini 1
S Reindirizzamento non va PHP 5
Task Mc Aiuto per reindirizzamento in php PHP 7
M [VBulletin] La pagina web ha generato un loop di reindirizzamento CMS (Content Management System) 0
N Problama reindirizzamento automatico lingua Javascript 1
Monital Reindirizzamento con session_start PHP 5
nim reindirizzamento dopo login PHP 7
A [PHP] Reindirizzamento al path precedente integrale PHP 4
S reindirizzamento a url dopo pagamento HTML e CSS 0
R Errore di reindirizzamento Web Server 0
F Problema di reindirizzamento con alcune form PHP 4
T Avatar e Reindirizzamento PHP 7
I Reindirizzamento Discussioni Varie 3
G Reindirizzamento dominio che non si disattiva Domini 0
B Reindirizzamento Classic ASP 3
P reindirizzamento non corretto PHP 5
Y Reindirizzamento ad una pagina Javascript 1
D Reindirizzamento HTML e CSS 3
G notifiche dekstop/mobile ogni volta che record è inserito/eliminato/aggiornato PHP 0
D Modem Asus non trasmette ogni 3/4 giorni Reti LAN e Wireless 3
A aggiungere stringa all'inizio di ogni riga di un file txt PHP 3
D un pulsante salva per ogni ID jQuery 10
S Inserire foto in ogni cella di una tabella Javascript 0
C ID che si incrementa ad ogni evento Database 0
Z Conteggi BOX per ogni 5 righe PHP 1
S [Vendo]Facebook&Instagram per ogni uso! Social Media Marketing 0
T Campi static del Controller generico si azzerano ad ogni richiesta PHP 3
L un punto ogni tot. speso PHP 0
ges Microsoft ACCESS oltre ogni limite (tre manuali) Altri Annunci 2
LDB Multimedia e Internet Realizzo e Progetto Siti Web per ogni tipologia Professionale Offerte e Richieste di Lavoro e/o Collaborazione 0
T PHP: variabile che cambia ogni 5 giorni... PHP 3
R [WordPress] Calendario Personale per ogni Utente WordPress 0
KOMODO_JOE [WordPress] Area privata per ogni utente su altervista WordPress 1
G [PHP] totale per ogni id di un ciclo PHP 1
maxnegri Eseguire un'azione con php ad ogni condivisione su Facebook PHP 0
R [PHP] creare pagina profilo per ogni utente PHP 4
M [MySQL] Come associare stats ad ogni utente. MySQL 0
K [COMPRO] Pagine e account su facebook di ogni dimensione Annunci servizi di Social Media Marketing 3

Discussioni simili