[PHP] proteggere pagine

steve97

Utente Attivo
30 Mar 2017
53
0
6
salve, avrei bisogno di limitare accesso a una pagina, in teoria dovrebbe solo essere visibili agli utenti registrati loggati. ho sentito dire che si puo risolvere con le variabili di sessioni, ma non trovo esempi di applicazioni, ringrazio della comprensione.

prima c'e lo script che controlla se l'utenza e valida, magari dovrei fare qualche modifica

PHP:
/* LOGIN.PHP */
<head>
<link href="stilo.css" type="text/css" rel="stylesheet">
<meta name="viewport" content="width=device-width">

<?php

$conex = mysql_connect("localhost", "wardrivers");
mysql_select_db("my_wardrivers", $conex);


$email = $_POST['email'];
$pw = $_POST['password'];


$sql = "SELECT email, password FROM utenti WHERE email='$email' AND password='$pw'";
$controllo = mysql_query($sql) or die (mysql_error());
print_r($controllo)."<br>";
echo "ok";

if(mysql_num_rows($controllo) == 1) {
echo "Benvenuto";
?>
<div id="form">
   <form method="get" action="database.php">
    <table>
 
       <tr>
           <td>artista preferito</td>
           <td><input type="text" name="nome"></td>
        </tr>

        <td><input type="submit" value="invio"></td>
     </table>
    </form>

</div><?php






}
else {header('location:../');}


?>[PHP]


lo script da proteggere e il seguente, e in teoria lo script ha il compito di aggiungere nuovi dati a una tabella

[PHP]
/* DATABASE.PHP */
<?php

$nome = $_GET['nome'];
$data = date('Y-m-d H:i:s');

if($nome == null) {header("location:../index.php");}
$conex = mysql_connect("localhost", "wardrivers");
mysql_select_db("my_wardrivers", $conex);


$recupero = "SELECT nome FROM raccolta WHERE nome='$nome'";
$result = mysql_query($recupero) or die (mysql_error());
if(mysql_num_rows($result) == 0) {
   $sql = "INSERT INTO raccolta(id, nome, disponibilita, nazione, data)
   VALUES (NULL, '$nome', '1', 'italia', '$data')";
    mysql_query($sql) or die(mysql_error());
    echo "dati inseriti correttamente";

 
}
elseif(mysql_num_rows($result) >= 1) {
 mysql_query("UPDATE raccolta SET disponibilita=disponibilita+1");
 echo "dati aggiornati";
}
else{echo 'err';}

?>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti schematizzo, usando le sessioni
PHP:
<?php
session_start();//attento: prima di qualsiasi cosa
?>
<head>
<link href="stilo.css" type="text/css" rel="stylesheet">
<meta name="viewport" content="width=device-width">
<!--.....-->
<?php
$conex = mysql_connect("localhost", "wardrivers");
mysql_select_db("my_wardrivers", $conex);


$email = $_POST['email'];
$pw = $_POST['password'];


$sql = "SELECT email, password FROM utenti WHERE email='$email' AND password='$pw'";
$controllo = mysql_query($sql) or die (mysql_error());
print_r($controllo)."<br>";
echo "ok";

if(mysql_num_rows($controllo) == 1) {
echo "Benvenuto";
$riga=mysql_fetch_assoc($controllo);
$_SESSION['utente']=$riga['password'];//se l'utente è registrato crei la sessione
//eccetera compreso il form ATTENTO usa il metod POST non il GET il get è sempre pericoloso
}
?>
poi nella pagina protetta
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){
    //la sessione non e stata create
    header('location:dove_vuoi_tu.php');
    exit();
}else{
    //tutto quello che devi fare   
}
?>

poi abbandona le vecchie istruzioni pho mysql_xxxx e passa alle nuove mysqli_xxxx
 

steve97

Utente Attivo
30 Mar 2017
53
0
6
ma perche assegni la variabile riga solo al utente e non alla password?
$_SESSION['utente']=$riga['password'];

inoltre volevo chiederti come faccio a recuperare gli altri campi di quel utente, esempio se nella tabella utenti ho una riga cosi
email : [email protected] , nazione: italia
al momento di fare login con quel email, vorrei che uscisee
benventuo pippo del italia
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guarda che è uno schema, se vuoi estrarre tutto nella quary usi * e poi passi in sessione quello che ti serve
PHP:
<?php
//...........
//con * estrai tutti i campi
$sql = "SELECT * FROM utenti WHERE email='$email' AND password='$pw'";
$controllo = mysql_query($sql) or die (mysql_error());
print_r($controllo)."<br>";
echo "ok";

if(mysql_num_rows($controllo) == 1) {
echo "Benvenuto";
$riga=mysql_fetch_assoc($controllo);
echo "Benvenuto ".$riga['nome'];
$_SESSION['utente']=$riga['password'];
$_SESSION['nome']=$riga['nome'];
//passi in sessione quello che ti serve nella pagina protetta

//eccetera compreso il form ATTENTO usa il metod POST non il GET il get è sempre pericoloso
}
?>
poi nella protetta
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){
    //la sessione non e stata create
    header('location:dove_vuoi_tu.php');
    exit();
}else{
    echo "ciao ".$_SESSION['nome']." ora puoi operare";
    //e puoi usare tutte le sessioni che hai defino proma
    //tutto quello che devi fare   
}
?>
 

steve97

Utente Attivo
30 Mar 2017
53
0
6
ho tolto i session dalla condizionale e il codice funziona, quindi a che cosa sserver realmente?
PHP:
if(mysql_num_rows($controllo) == 1) {
echo "Benvenuto";
$riga=mysql_fetch_assoc($controllo);
echo "Benvenuto ".$riga['email'];
//passi in sessione quello che ti serve nella pagina protetta

//eccetera compreso il form ATTENTO usa il metod POST non il GET il get è sempre pericoloso
}
?>
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@steve97
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

steve97

Utente Attivo
30 Mar 2017
53
0
6
adesso il problema e che dovrei mandare quel dato ossia la nazione del utente dallo script login verso lo script database.php cosi quando l'utente aggiunge un nuovo libro autamicamente la query va a salvare nella tabella il nome del libro e la nazione del utente
 

steve97

Utente Attivo
30 Mar 2017
53
0
6
perche ora mi riporta al index.php dopo che faccio submit al formulario??
Codice:
<?php
session_start();

if(!isset($_SESSION['utente'])) {
header("location:../index.php");}

else{
$nome = $_GET['nome'];
$nazione = $_GET['nazione'];
$data = date('Y-m-d H:i:s');


$conex = mysql_connect("localhost", "wardrivers");
mysql_select_db("my_wardrivers", $conex);


$recupero = "SELECT nome FROM raccolta WHERE nome='$nome'";
$result = mysql_query($recupero) or die (mysql_error());
if(mysql_num_rows($result) == 0) {
   $sql = "INSERT INTO raccolta(id, nome, disponibilita, $nazione, data)
   VALUES (NULL, '$nome', '1', 'italia', '$data')";
    mysql_query($sql) or die(mysql_error());
    echo "dati inseriti correttamente";

  
}
elseif(mysql_num_rows($result) >= 1) {
 mysql_query("UPDATE raccolta SET disponibilita=disponibilita+1 WHERE nome='$nome' ");
 echo "dati aggiornati";
}
}

?>

riguarlo allo script login, la soluzione che ho trovato per risolvere il mio problema con l'invio del nome del libro e la nazione del utente e questa qui
Codice:
<?php
session_start();
$conex = mysql_connect("localhost", "wardrivers");
mysql_select_db("my_wardrivers", $conex);


$email = $_POST['email'];
$pw = $_POST['password'];


$sql = "SELECT * FROM utenti WHERE email='$email' AND password='$pw'";
$controllo = mysql_query($sql) or die (mysql_error());


if(mysql_num_rows($controllo) == 1) {

$riga=mysql_fetch_assoc($controllo);

$nazioneUtente = $riga['nazione'];

echo "Benvenuto ".$riga['email']." di ".$nazioneUtente;


?>
<div id="form">
   <form method="get" action="database.php">
    <table>
   
       <tr>
           <td>aggiungi un nuovo libro:</td>
           <td><input type="text" name="nome"></td>
            <!--
            <input type="text" name="nazione" value='<?php echo $nazioneUtente; ?>' hidden="hidden" >
       -->
       </tr>

        <td><input type="submit" value="invio"></td>
     </table>
    </form>

</div><?php






}
else {header('location:../');}


?>
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
perche ora mi riporta al index.php dopo che faccio submit al formulario??
perchè non hai settato la variabile di sessione ed hai in if che se non la trova settata ti redirige in index.
Quello che ti ha scritto Borgo Italia a me sembra chiaro, ciò he non mi è chiaro è pechè tu abbia tolto le variabili di sessione.. Come le passi le variabili tra le pagine?
 

steve97

Utente Attivo
30 Mar 2017
53
0
6
perchè non hai settato la variabile di sessione ed hai in if che se non la trova settata ti redirige in index.
Quello che ti ha scritto Borgo Italia a me sembra chiaro, ciò he non mi è chiaro è pechè tu abbia tolto le variabili di sessione.. Come le passi le variabili tra le pagine?
quello che ho capito e che mi basta mettere tra le parentesi quadrate un campo esistente della mia tabella raccolta per proseguire

$_SESSION['utente']=$riga['campoQualsiasi'];
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
attento, mi sa che devi studiasre ancora un po'
affinche una variabile sia variabile di sessione non basta che sia racchiusa tra parentesi quadre.
se noti tra una variabile qualsiasi e le varibili superglobali (di cui le sessioni fanno parte) già visivamente c'è una differenza
le variabili normali
$pinco
$pallo[0], $pallo[1].... array vettoriale
$sempronio['sofonisba'], $sempronio['asdrubale']... array associativo

le varibili superglobali
$_SESSION['nome']
$_POST['altro_nome']
ecc...
un'altra differenza sostanziale è che le variabili "normali" muoiono quando cambi pagina, le superglobali sopravvivino
es le varibili super $_POST e $_GET possono passare i valori da una pagina ad un'altra
le varibili super $_SESSION possono sopravvivere sino a che non chiudi il sito o il bw e quindi possono trasmettere il loro valore tra le varie pagine
in particolare le variabili di sessione devono essere, diciamo, create, in ogni pagina in cui le usi deve esserci l'istruzione
session_start();

http://php.net/manual/en/language.variables.superglobals.php
 
Discussioni simili
Autore Titolo Forum Risposte Data
G php - codice per proteggere le pagine PHP 10
M Proteggere PHP PHP 4
max_400 Nascondere indirizzo o visualiz. un altro oppure Proteggere pagina php ricevente PHP 6
peppoweb Proteggere PHP: guida passo passo PHP 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0

Discussioni simili