[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.042
148
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.042
148
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.371
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.042
148
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
L Problemi form Pagina php HTML e CSS 2
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14
N file manager da php 5 a 7 PHP 15
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11
N Mysql_result per PHP 7 PHP 2
Emix Select concatenate php sql ajax PHP 2
P Modifica con PHP di un node in una sitemap xml PHP 0
D Come usare funzione php PHP 6
P Cancellazione specifici files in una folder php PHP 1
R Tradurre stringhe con php e google translator PHP 4
I Salvataggio snapshot IPCAM tramite PHP PHP 5
felino PHP e script generazione file excel PHP 2
L Aiuto per programma web php/mySQL PHP 2

Discussioni simili