Salve a tutti,
avrei un piccolo problema che potrebbe essere anche grande!
Sto seguendo una guida per la connessione al database , precisamente questa:
L'autenticazione di HTML.IT
sto lavorando in locale.
la registrazione della guida funziona e riesco ad inserire tutti i campi nel db, ma se provo a fare il login, il codice si ferma all'interrogazione della tabella esattamente a questa riga:
Codice PHP:
$auth = $data->query("SELECT nome FROM utente WHERE nick='$username' AND password='$password1'") or die("ERRORE: " . mysql_error());
me ne accorgo perchè non mi stampa : echo "controllo campi in tabella"; che ho sistemato subito dopo la query (vedi codice completo in basso)
nel mio db la tabella è: utente, il campo da prelevare è: nome e i campi da verificare nick e password quindi:
|utente|
| id_user | nome | nick | password |
(le classi per la connessione e la disconnessione al db sono nella stessa guida a cui ho fatto riferimento prima)
sembra essere tutto corretto ma non capisco come mai il codice non va più avanti, qualcuno sa aiutarmi?...posto il codice della pagina login.php:
Codice PHP:
<?php
// inizializzazione della sessione
session_start();
// se la sessione di autenticazione
// è già impostata non sarà necessario effettuare il login
// e il browser verrà reindirizzato alla pagina di scrittura dei post
if (isset($_SESSION['login']))
{
// reindirizzamento alla homepage in caso di login mancato
header("Location: gestisci.php");
}
// controllo sul parametro d'invio
if(isset($_POST['submit']) && (trim($_POST['submit']) == "Accedi"))
{
// controllo sui parametri di autenticazione inviati
if( !isset($_POST['username']) || $_POST['username']=="" )
{
echo "Attenzione, inserire la username.";
}
elseif( !isset($_POST['password']) || $_POST['password'] =="")
{
echo "Attenzione, inserire la password.";
}else{
// validazione dei parametri tramite filtro per le stringhe
$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
$password = trim(filter_var($_POST['password'], FILTER_SANITIZE_STRING));
$password = sha1($password);
// inclusione del file della classe
include "funzioni_mysql.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();
echo "interrogo tabella con utente: $username e pass: $password"; //utente e password vengono stampati
// interrogazione della tabella
$auth = $data->query("SELECT nome FROM utente WHERE nick='$username' AND password='$password' ") or die ("ERRORE: " . mysql_error());
echo "controllo i campi in tabella";
// controllo sul risultato dell'interrogazione
if(mysql_num_rows($auth)==0)
{
// testo in caso di insuccesso
echo "errore login";
}else{
// chiamata alla funzione per l'estrazione dei dati
$res = $data->estrai($auth);
// creazione del valore di sessione
$_SESSION['login'] = $res-> id_login;
// disconnessione da MySQL
$data->disconnetti();
// testo in caso di successo
echo "disconnesso";
}
}
}else{
?>
ISCRIVITI
<?
}
?>
il form per il login viene da un'altra pagina accesso.php:
codice:
<div id="right">
<h6>Effettua l'accesso!</h6>
<form action="login.php" id="login" method="post" id="login">
<label for="user">Nome utente</label><input type="text" name="username" /></p>
<label for="password">Password</label><input type="password" name="password" /></p>
<input name="submit" type="submit" value="Accedi" /></p>
</form>
</div>
Grazie.