In effetti guardando meglio il codice hai sbagliato l'esecuzione della query
PHP:
// preparo ed invio la query
$query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = '$pwd'");
// controllo l'esito
$result = $mysqli->query($query);
modifica cosi
PHP:
// preparo la query
$query ="SELECT id FROM users WHERE username = '$user' AND password = '$pwd'";
// la eseguo
$result = $mysqli->query($query);
In effetti guardando meglio il codice hai sbagliato l'esecuzione della query
PHP:
// preparo ed invio la query
$query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = '$pwd'");
// controllo l'esito
$result = $mysqli->query($query);
modifica cosi
PHP:
// preparo la query
$query ="SELECT id FROM users WHERE username = '$user' AND password = '$pwd'";
// la eseguo
$result = $mysqli->query($query);
Niente caro, anche questa volta restituisce pagina bianca... e io mi chiedo se sto facendo perdere tempo a voi inutilmente con qualcosa di fondo sbagliato.. ma vi assicuro che non è così.. Mistero !!
Caspita è vero chisà da dove mi è uscito quel mysql_ ..grazie mille criric ora funziona perfettamente !
Mi rimane solo una domanda.. ora che gli utenti si possono autentificare ci saranno pagine protette e pagine non protette.
Per proteggere queste pagine basta che inserisco queste righe all'inizio della mia pagina, vero?
Dovresti mettere un reindirizzamento che avviene quando non c'è una sessione attiva.
Così facendo obblighi l'utente a fare il login prima di andare avanti.
Dovresti mettere un reindirizzamento che avviene quando non c'è una sessione attiva.
Così facendo obblighi l'utente a fare il login prima di andare avanti.
è stata valorizzata al login non devi più ridefinirla nelle altre pagine, altrimenti rischi di creare una sessione che contiene dati confusi e questo potrebbe rendere instabile la tua applicazione.
Il tuo controllo diventa qualcosa di molto semplice da fare nelle pagine dove vuoi sia richiesta una sessione:
PHP:
<?php
session_start();
#> se $_SESSION['user_id'] non esiste o è vuoto, rimando l'utente ad index.php
if (empty($_SESSION['user_id'])) {
header("Location: /INDEX.php");
exit();
}
#> se arrivo fin qui l'utente è autenticato, procedo con lo script..
require_once 'connessione.php';
Allora io ho fatto una pagina chiamata protetta.php e l'ho inserita in un collegamento presente nella home.
Se faccio click su di essa senza loggarmi mi fà il refresh diciamo sulla home, anche se la richiamo da url fa la stessa cosa.. come faccio a vedere la pagina protetta?
Se fai il login setti la $_SESSION['user_id'] e quindi vedi la pagina altrimenti vieni reindirizzato alla index o all apagina di login dipende cosa hai impostato
Allora ricapitolando tutto vorrei che la mia pagina accedi.php rimandasse ad una pagina del sito e non ad un semplice echo su pagina bianca.
Se il login non avviene con successo rimanda alla index con la stampa nome e pwd errati, mentre se è andato a buon fine alla mia pagina protetta.php:
accedi.php
<html>
<?php
session_start();
#> se $_SESSION['user_id'] non esiste o è vuoto, rimando l'utente ad index.php
if (empty($_SESSION['user_id'])) {
header('Location:index.php');
// echo "qualcosa non quadra!";
exit();
}
echo 'ciao';
#> se arrivo fin qui l'utente è autenticato, procedo con lo script..
require_once 'connessione.php';
echo 'la pagina protetta';
?>
<head>
<title> Pagina protetta </title>
</head>
<body>
<h1> Questa è una pagina protetta </h1>
</body>
</html>
Se decommentavo // echo "qualcosa non quadra!"; e toglievo la riga dell header che portava all'index esce costantemente qualcosa non quadra, come se la sessione fosse sempre vuota..
Ringrazio tutti per l'aiuto che mi state dando, siete davvero gentilissimi.. spero di non chiedere troppo.
Per natura di funzionamento del protocollo http, gli header vanno inviati sempre prima di un qualsiasi altro output.
Inoltre è buona pratica inizializzare la sessione come prima istruzione dello script.
Di conseguenza ti suggerirei di operare queste modifiche:
PHP:
<?php
session_start();
#> controllo sessione valida
if (empty($_SESSION['user_id'])) {
header('Location:index.php');
// echo "qualcosa non quadra!";
exit();
}
#> se arrivo fin qui l'utente è autenticato, procedo con lo script..
echo 'ciao';
require_once 'connessione.php';
echo 'la pagina protetta';
?><html>
<head>
<title> Pagina protetta </title>
</head>
<body>
<h1> Questa è una pagina protetta </h1>
</body>
</html>