Pagina 1 di 2
inibire visualizzazione pagina php
Inviato: 19/09/2015, 0:03
da enzomaxxtro
Salve ragazzi...sto imparando un po' di php usando un forum per fare i test usando phpbb 3.15 su php v. 5.4
come host uso altervista perche' e' gratuito come spazio.
Ho due pagine php che vengono visualizzate semplicemente inserendo il percorso anche da utenti non registrati.
Queste due pagine php vengono richiamate dal forum con due link sulla board....tali link nel forum sono visibili solo agli utenti registrati...fin qui nulla di strano...solo che inserendo il percorso delle due pagine php nella barra dell'indirizzo del browser, vengono caricate anche per chi non è utente registrato.
Ho letto che devo giocare sulla sessione ma non so dove mettere mano.
Le sessioni degli utenti nel db vengono salvate nella tabella
phpbb_sessions; in questa tabella non c'è l'username, ma l'id dell'utente registrato.
Ho provato un codice simile
Codice: Seleziona tutto
<?php
session_start();
if(isset($_SESSION['session_user_id'])) {
echo "Sei loggato!";
} else {
echo 'Non sei loggato e non puoi visualizzare questa pagina!';
}
?>
dove
session_user_id è il record degli id degli utenti registrati ma non funziona o meglio mi esce sempre il contenuto dell'else.
Il codice è solo un esempio su come gestire la sessione degli utenti...mi aiutate a capire dove sbaglio o quale record deve essere considerato?
Re: inibire visualizzazione pagina php
Inviato: 19/09/2015, 7:45
da Micogian
Devi escludere l'utente Anonimous che è user_id=1.
Codice: Seleziona tutto
if ($user->data['user_id'] > 1 ){
echo "visualizza pagina";
}else{
echo "Non puoi visualizzare questa pagina";
}
Con phpbb 3.1.x dovrebbe esere così:
Re: R: inibire visualizzazione pagina php
Inviato: 19/09/2015, 7:54
da brunino
No, nelle pagine normali vale anche nella 3.1 $user. Solo nelle estensioni si usa $this->user.
Inviato dal mio GT-S5360 con Tapatalk 2
Re: inibire visualizzazione pagina php
Inviato: 19/09/2015, 11:40
da Micogian
Nel mio forum di prova ho creato un'estensione che crea una condizione "true" per il gruppo STAFF.
Dato che lo STAFF è composto dal Gruppo Admin e da un utente non Admin ho risolto in questo modo:
Codice: Seleziona tutto
if ($this->user->data['group_id'] == 5 || $this->user->data['user_id'] == 2 )
{
$this->template->assign_vars(array(
'STAFF' => true )
);
}
In sostanza il gruppo STAFF è composto dagli utenti del gruppo 5 (Admin) e dall'utente 2.
Nel template la variabile STAFF viene utilizzata in questo modo
Codice: Seleziona tutto
<!-- IF STAFF -->
// codice visibile solo al gruppo STAFF
<!-- ENDIF -->
Re: inibire visualizzazione pagina php
Inviato: 19/09/2015, 11:53
da Sir Xiradorn
Io non sono proprio un grande esperto ma so questo. Credo che dipenda da cosa si richiama e dove. Se si sta usando una programmazione OOP e quindi una certa classe, allora andrà usato il $this->user->data['...'] mentre se si sta usando il tutto senza una classe di riferimento allora credo che si debba richiamare il metodo $user->data['...'] ma correggetemi se sto sbagliando.
Quello che io ho potuto vedere nel breve tempo dedicato alla cosa è questo. Ed è quello che un po diceva anche brunino ovvero, se si aggiunge una pagina ex novo o custom page o come ve pare, di solito non vengono inizializzate classi quindi l'uso più corretto che va fatto è $user->data[''] e questo per via del fatto che il $this viene definito a runtime (operazione fatta nella programmazione OOP e nelle classi) e per questo sentite dire che si riferisce all'oggetto corrente.
Micogian ti ha mostrato le giuste procedure da seguire per entrambi i casi, sia che sei in una custom, con il primo esempio, sia che sei in una estensione nel secondo.
Tutto chiaro? E ai programmer, ho detto giusto?
Re: R: inibire visualizzazione pagina php
Inviato: 19/09/2015, 11:58
da brunino
Corretto.
Re: inibire visualizzazione pagina php
Inviato: 19/09/2015, 13:29
da enzomaxxtro
grazie a tutti per le cortesi risposte...proverò e farò sapere....avevo pensato anche io a controllare l'id 1 dell'anonymous ma non riuscivo a capire come prendere l'id dall'utente connesso in quel momento a quella pagina
Re: inibire visualizzazione pagina php
Inviato: 19/09/2015, 14:26
da Micogian
Per avere diponibili le variabili di phpbb una Custom Page deve contenere i dati di accesso al DB che sono questi
Codice: Seleziona tutto
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './cartella_forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
Re: inibire visualizzazione pagina php
Inviato: 19/09/2015, 15:30
da enzomaxxtro
io accedo al db e stabilisco la connessione in questo modo:
Codice: Seleziona tutto
mysql_connect("localhost", "root", "");
mysql_select_db("nome del db");
ho l'intero phpbb installato nella root, in che modo potrei aggiungere l'ultimo blocco di codice che mi hai scritto?
Re: inibire visualizzazione pagina php
Inviato: 19/09/2015, 15:37
da brunino
All'inizio del file