- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Area privata
-
Il problema non è quello di crederti o meno, è che i motivi possono essere solo quei 2.
Sicuro che che hai messo l'id in $_SESSION['id'] perchè in un altro file utilizzavi $_SESSION['login'].
-
Sicuro che che hai messo l'id in $_SESSION['id'] perchè in un altro file utilizzavi $_SESSION['login']. E io che ne so...lo script è il tuo!!! Comunque le pagine stano sopra...comunque cose il session login mai sentito parlare...
-
Io nel tutorial ho usato $_SESSION['login'], però non lo sò se in login lo hai cambiato o no.
[php]
<?php
error_reporting(E_ALL);
//connesione al database
include("config.ini.php");
/*recupero le variabili inviate tramite get e definisce la data corrente */
$nome=$_GET['nome'];
$data=date("d/m/Y");
$tipo="amicizia";//query
$id = mysql_query("SELECT id FROM utenti WHERE nome = '".$nome."'")or die("<h1>".mysql_error()."</h1>");
$array = mysql_fetch_array($id);mysql_query("INSERT INTO richieste".$array['id']." (id_amico, tipo_richiesta, data_amicizia) VALUES ('".$_SESSION['login']."', '".$tipo."', '".$data."')")or die("<h1>".mysql_error()."</h1>");
die("INSERT INTO richieste".$array['id']." (id_amico, tipo_richiesta, data_amicizia) VALUES ('".$_SESSION['login']."', '".$tipo."', '".$data."')");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>Richiesta effetuata con sucesso</title>
</head>
<body>
<img alt="logo" src="loghi/logo.png"><br>
<br>
<br>
<br>
<br>
<br>
<br>
<div style="text-align: center;">Richiesta inviata con
sucesso <a href="home.php">torna alla home</a></div>
</body>
</html>
[/php]
-
FUNZIONA!!!!!! SENTI TI POSSO CHIEDERE ALTRE PERO' NON RIGUARDANO LO SCRIPT DI LOGIN!!!!!
-
Usavi la variabile sbagliata, io avevo dato per scontato fosse giusta invece non lo era.
Per altro puoi aprire un thread in php-mysql e ti rispondo la.
-
Ragazzi il mio editor php mi segna in rosso la variabile $user e $pass come se non le riconoscesse. Se a quelle variabili sostituisco direttamente le credenziali di un account funziona, quindi dubito sia il resto a non andare.Ho provato anche a eseguirlo con le variabili contenute dal doppio apice ' "$user" ' in quel caso mi riconosce la variabile ma comunque non permette l'accesso. Dove vado a sbattere? Grazie
[php] // Controllo l'utente esiste
$query = mysql_query("SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");// Se ha trovato un record
if(mysql_num_rows($query) == 1) [/php]
-
Che le segni in rosso mi sembra normale.
-
Eh ma è come se poi non me le riconoscesse come variabili,p erchè se io li dentro sostituisco direttamente i valori di un record esegue l'accesso perfettamente, mentre se lascio le variabili è come se non facesse il check delle password inserite con il database.
Dove è il problema allora?
-
Dovresti postare il codice di tutta la pagina, altrimenti oltre dirti di fare un echo nella query, è impossibile aiutarti.
-
[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['username'])) ? trim($_POST['username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (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()) {
$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 idusers FROM users WHERE username = '$user' AND password = '$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['idusers'];// reindirizzo l'utente
header('Location: privata.php');
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');[/php]
-
Fai un echo cosi:
[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['username'])) ? trim($_POST['username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (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()) {
$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 idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");
echo "SELECT idusers FROM users WHERE username = '$user' AND password = '$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['idusers'];// reindirizzo l'utente
header('Location: privata.php');
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
[/php]
Così da controllare che i dati dal modulo arrivino correttamente.
-
Ciao TheDarkita, oggi visto che ho un po di tempo voglio riproporti il problema che ti stavo parlando alla pagina 25 di questo tutorial che riguarda il check box: ecco il codice dove [php]$accept = addslashes($accept);[/php] è lo script dove dobrebbe spuntare l'utente al momento della registrazione, ma come ti stavo accennando anche senza spuntare la check box l'utente riesce a registrarsi cosa che non va bene (e nel Db risulta "no" visto che ho messo una query "yes" "no"):
[php]<?php
session_start();
// Includo la connessione al database
require('config.php');
// Se il modulo viene inviato...
if(isset($_POST['registra']))
{// 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 '' $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
$accept = (isset($_POST['accept'])) ? trim($_POST['accept']) : ''; // Metto nella variabile 'mail' 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); $mail = addslashes($mail);
$accept = addslashes($accept);
}// Controllo il Nome Utente if(strlen($user) < 4 || strlen($user) > 12) die('Nome Utente troppo corto, o troppo lungo! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo la Password elseif(strlen($pass) < 4 || strlen($pass) > 12) die('Password troppo corta, o troppo lunga; caratteri minimi 4 / massimi 12! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo l'email elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail)) die('ATTENZIONE: Email non valida, si prega ripettere la procedura di registrazione! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo il nome utente non sia già occupato elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1) die('Nome Utente non disponibile! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo l'indirizzo email non sia già registrato elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1) die('Questo indirizzo email risulta già registrato ad un altro utente! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Registrazione dell'utente nel database else { // Crypt della password per garantire una miglior sicurezza $pass = md5($pass); // Query per l'inserimento dell'utente nel database $strSQL = "INSERT INTO utenti (user,pass,mail,accept)"; $strSQL .= "VALUES('$user', '$pass', '$mail', '$accept')"; mysql_query($strSQL) OR die("Errore 003. <br>
Possibile cause: <br>
-
non ha spuntato la casella per l'informativa. <br>
-
non ha inserito i suoi dati correttamente.<br>
-
errore del sistema.<br>
Si prega tornare indietro e riprovare a registrarsi o<br>
contattare l'amministratore.<br>
Failure because: ".mysql_error());// Reindirizzo l'utente ad una pagina di conferma della registrazione header('Location: registrato.php'); exit;
}
}
?>[/php]
Questa è la parte tra i tag Body:
[html]<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="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /><br />
<span class="Stile14">Accetto l' <a href="/informativa.php">informativa</a></span>
<input name="accept" type="checkbox" id="accept" checked="checked" value="1" />
<br />
<input name="registra" type="submit" value="Registrati" />
<input type="submit" name="reset" id="reset" value="Reset Campi" />
<br />
</form></center>
<div align="center">[/html]Se non ricordo male nella pagina 26 di questo tutorial Zomer indicava di mettere questo codice nello script:
[php]//Controllo che ha accettato la privacy
if(!isset($_POST['checkbox']))
die('Non hai spuntato la checbox');
[/php]Ok adesso domanda di rito, se il codice è quello giusto dove dovrei inserirlo per esattezza nello script php?
Nel caso non fosse giusto potresti ripropormi il codice.
Grazie
-
-
Cosi, dovrebbe andare:
[php]
<?php
session_start();
// Includo la connessione al database
require('config.php');
// Se il modulo viene inviato...
if(isset($_POST['registra']))
{// 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 '' $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
$accept = (isset($_POST['accept'])) ? trim($_POST['accept']) : ''; // Metto nella variabile 'mail' 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); $mail = addslashes($mail);
$accept = addslashes($accept);
}// Controllo il Nome Utente if(strlen($user) < 4 || strlen($user) > 12) die('Nome Utente troppo corto, o troppo lungo! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo la Password elseif(strlen($pass) < 4 || strlen($pass) > 12) die('Password troppo corta, o troppo lunga; caratteri minimi 4 / massimi 12! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo l'email elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail)) die('ATTENZIONE: Email non valida, si prega ripettere la procedura di registrazione! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo il nome utente non sia già occupato elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1) die('Nome Utente non disponibile! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); // Controllo l'indirizzo email non sia già registrato elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1) die('Questo indirizzo email risulta già registrato ad un altro utente! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
elseif($accept != 1)
die('Devi accettare l'informativa');
// Registrazione dell'utente nel database
else
{// Crypt della password per garantire una miglior sicurezza $pass = md5($pass); // Query per l'inserimento dell'utente nel database $strSQL = "INSERT INTO utenti (user,pass,mail,accept)"; $strSQL .= "VALUES('$user', '$pass', '$mail', '$accept')"; mysql_query($strSQL) OR die("Errore 003. <br>
Possibile cause: <br>
-
non ha spuntato la casella per l'informativa. <br>
-
non ha inserito i suoi dati correttamente.<br>
-
errore del sistema.<br>
Si prega tornare indietro e riprovare a registrarsi o<br>
contattare l'amministratore.<br>
Failure because: ".mysql_error());// Reindirizzo l'utente ad una pagina di conferma della registrazione header('Location: registrato.php'); exit;
}
}
?>
[/php]
-
-
Sei una belva TheDarkita. Non ho fatto in tempo a cliccare "aggiorna" sul mio pc che tu mi hai già dato la risposta. Ma che fai dormi anche con il pc. E pensare che mia moglie s' arrabbia di brutto se stò il tempo utile per vedere tutte le mie email ed i siti (ossia più di tre ore solo a casa e quando sono al lavoro non ne parliamo!) .
Comunque grazie sei sempre The best nel settore.
Ah dimenticavo avrei bisogno di un moderatore. Se t'interessa
fammi un fischio.
Ciao e grazie ancora.
-
Figurati.
-
Ok alla grande funziona.
Notte
-
Niente mi restituisce semplicemente una cosa del genere
SELECT idusers FROM users WHERE username = '' AND password = 'd41d8cd98f00b204e9800998ecf8427e' LIMIT 1Nome Utente o Password errati
-
Incolla qui pure il form.
Avrai messo un name diverso da username per il campo di testo del nome utente.
-
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['username'])) ? trim($_POST['username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (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()) {
$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 idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");
echo "SELECT idusers FROM users WHERE username = '$user' AND password = '$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['idusers'];// 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" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=".w3.org/1999/xhtml">
<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>[/php]
-
Prova cosi:
[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['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()) {
$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 idusers FROM users WHERE username = '$user' AND password = '$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['idusers'];// 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" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=".w3.org/1999/xhtml">
<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>
[/php]