- Home
- Categorie
- Coding e Sistemistica
- PHP
- Creare login
-
mysql_num_rows si chiama la funzione
-
La query che fai probabilmente fallisce, ricontrolla bene il tutto.
Prova ad aggiungere:$result = mysql_query($sqlquery) or die(mysql_error());
Così dovresti riuscire ad individuare eventuali errori.
Per quanto riguarda il recupero ed il confronto dei valori basta inserire la pagina PHP che vuoi caricare dopo la submit della form nell'attributo action ed in quest'ultima recuperare i parametri che ti servono mediante l'istruzione $_GET['nome_attributo'] oppure $_POST['nome_attributo'] a seconda del method che hai utilizzato nella form (GET o POST).
-
salve, rieccomi. Allora...stò provando a seguire la guida di Thedarkita. Ho inseirto nel mio sito la pagina index.php contenente questo:
<?php
// Includo la connessione al database
require('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tutorial by TheDarkITA</title>
</head>
<body>
Menu:<br />
<br />
<br />
<?php
if(isset($_SESSION['login']))
echo '<a href="privata.php">Area privata</a><br /><a href="logout.php">Logout</a><br />';
else
echo '<a href="registrati.php">Registrazione</a><br /><a href="login.php">Login</a><br />';
?>
</body>
</html>poi ho inserito la pagina di login:
<?php
// Includo la connessione al database
require('config.php');// Se il modulo viene inviato...
if(isset($_POST['login']))
{// Dati Inviati dal modulo $Username = (isset($_POST['Username'])) ? trim($_POST['Username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato d di default '' $Password = (isset($_POST['Password'])) ? trim($_POST['Password']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato d di default '' // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) { $Username = addslashes($Username); $Password = addslashes($Password); } // Crypto la password e la confronto con quella nel database $Password = md5($Password); // Controllo l'utente esiste $query = mysql_query("SELECT id FROM utenti WHERE username = '$Username' AND pass = '$Password' LIMIT 1"); // Se ha trovato un record if(mysql_num_rows($query) == 1) { // prelevo l'id dal database $login = mysql_fetch_array($query); // Creo una variabile di sessione $_SESSION['login'] = $login['id']; // reindirizzo l'utente header('Location: privata.php'); exit; } // se non esiste da l'errore else die('Nome Utente o Password errati');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="username" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="password" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>Nel mio database c'è un utente (io) provo a "cercarmi" ma mi dice che Nome utente o password errati.
Le uniche differenze tra me e la guida, sono che:
1-Non ho inserito nel database il campo "id"...è un problema?
2-Non ho inserito la pagina privato.phpah, scusate....ho inserito nel sito anche la pagina config.php contenente:
<?php
// avvio la sessione
session_start();
// Dati connessione al database
$db_host = 'mysql5.netsons.org';
$db_utente = 'quello fornito da netsons';
$db_password = 'fornita da netsons';
$db_nomedb = 'ture70';
// Effettua la connessione al database
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>GRAZIE 1000.
-
$_POST['Username']
hai messo la maiuscola che nel form invece è scritta minuscola:
<input name="username">se non metti il campo id, è logico che da effetti indesiderati...
-
Ah....allora ha ragione il mio prf di matematica quando diceva che nn ho molta logica.....:?:?:x...cmq ora vedo di correggere. Una domanda, ora inserisco il campo "id"...cosa ci devo mettere??? cioè, ad esempioio sono il primo iscritto...nel campo id devo mettere 1? il secondo che si iscrive devo mettere 2??? e continuando...o serve ad altro???
Grazie 1000 per la pazienza.
-
il campo id va messo come auto increment in modo che prenda automaticamente il numero successivo
-
Boh, non so cosa dire....ancora mi da errore...perfavore, aiutami tu...dimmi se secondo tè c'è qualche errore.
Questa è la pagina login.php:<?php
// Includo la connessione al database
require('config.php');// Se il modulo viene inviato...
if(isset($_POST['login']))
{// Dati Inviati dal modulo
$user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$user = addslashes($user);
$pass = addslashes($pass);
}// Crypto la password e la confronto con quella nel database
$pass = md5($pass);// Controllo l'utente esiste
$query = mysql_query("SELECT id FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1");// Se ha trovato un record
if(mysql_num_rows($query) == 1)
{
// prelevo l'id dal database
$login = mysql_fetch_array($query);// Creo una variabile di sessione
$_SESSION['login'] = $login['id'];// reindirizzo l'utente
header('Location: privata.php');
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>Mentre questo è il database:
- phpMyAdmin SQL Dump
-- version
-- "link di php my admin"
-- Host: mysql5.netsons.org
-- Generato il: 02 Set, 2008 at 10:56 PM
-- Versione MySQL: 5.0.51
-- Versione PHP: 5.2.6-0.dotdeb.1
--
-- Database:ture70
--
--
-- Struttura della tabellautenti
CREATE TABLE
utenti
(
id
int(30) NOT NULL auto_increment,
Nome
varchar(30) NOT NULL,
Cognome
varchar(30) NOT NULL,
user
varchar(30) NOT NULL,
pass
varchar(30) NOT NULL,
mail
varchar(30) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;-- Dump dei dati per la tabella
utenti
INSERT INTO
utenti
VALUES (1, 'Salvatore', 'Di Maria', 'Amministratore', '17041991', 'mio indirizzo e-mail');Mi dice che la password o il nome utente sono sbagliati
- phpMyAdmin SQL Dump
-
la password nel database va inserita in hash md5
-
cioè??? cosa dovrei fare???
-
<?php echo md5('Di Maria'); ?>
ti restituisce l'hash della password devi mettere quello nel database
-
scusami, non prendermi per stupido ma non ho ancora capito....
-
La password non devi inserirla normalmente, perchè nello script di login la cerca cryptata quindi tu devi inserirla cryptata altrimenti da password errata...
-
Benissimo!!!!!!! Perfetto!!!! Finalmente funziona...ho levato dalla pagina login.php il pezzo che cripta la password (anche perchè è un sito personale non mi interessa molta protezione)...grazie 1000!!!!!! Sei stato molto paziente e mi hai aiutato tanto...grazie ancora....ciao!!!!
-
prego
ciao
-
hem...posso chiedervi un altra cosuccia???
Allora, vorrei creare una sezione del sito dedica solo alla mia classe.
Così ho creato nel database la tabella "classe" (era già presente la tabella "utenti")
ho creato il file config1.php (config.php esisteva già per il login degli altri utenti)
Nel file config.pHp sotto $db_name= 'ture70' ho inserito
$table= 'classe' //per farlo connettere alla tabella della classee ho inserito un solo utente nella tabella (l' utente è inserito sia nella tabella "utenti" che in quella "classe")
provando a fare il login nella sezione della mia classe anche chi è registrato SOLO nella tabella utenti (e non nella tabella "classe") viene fatto entrare...perchè???
dove sbaglio???grazie 1000 ancora una volta
-
che codice usi dopo?
-
beh...nel file config.php il codice è questo:
<?php
// avvio la sessione
session_start();
// Dati connessione al database
$db_host = 'mysql5.netsons.org'; // Host - solitamente localhost
$db_utente = 'ture70'; // Nome utente del Database
$db_password = 'sebastiano'; // Password del Database
$db_nomedb = 'ture70'; // Nome del Database
$db_table= 'classe';
// Effettua la connessione al database
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>
-
bisogna controllare la query... non la connessione
-
nn ho capito cosa vuoi sapere, cmq di query ho trovato questo nel database:
id
,
Nome,
Cognome,
user,
pass,
mailSELECT * FROM
classe`
WHERE 1
LIMIT 0 , 30
-
nel codice della pagina di login ci deve essere una cosa tipo:
mysql_query("SELECT * FROM ...........");