- Home
- Categorie
- Coding e Sistemistica
- Coding
- [Tutorial] Area privata
- 
							
							
							
							
							Ci sono anche dei quadratini in mezzo al codice  l'hai fatto con word? l'hai fatto con word? 
 
- 
							
							
							
							
							Io uso gedit, l' editor di testo linux. 
 Francamente cosa è cambiato non lo sò, perchè mi sembrava tutto corretto, ho provato a ricreare i file pensando ad un problema di codifica del file ma non era quello.
 Alla fine ho cancellato la parte php del file privata.php, e l'ho riscritta a mano. Cosi facendo a funzionato, riguardando il file con problemi e quello funzionante non ho notato alcuna differenza, quindi non saprei indicarti un motivo.
 
- 
							
							
							
							
							Vero sono uguali, però la prima riga (cioè quella php) sono su unica riga..sicuramente è stato quello...boh? Una cosa che avevo in mente di chiederti era: Io e utenti ora entriamo tramite nome user e pass (poi cambierò con nome e cognome, cambiando anche la lunghezza di limite), se uno vede che dopo il login entra in pagina PINCO.php e digita subito PINCO.php non bypass il login? 
 
- 
							
							
							
							
							Su un unica riga non ho messo niente, che editor stai utilizzando? Perchè credo sia quello allora a darti problemi. 
 C'è il controllo:
 [php]// Se non è stata definita la variabile manda l'utente alla homepage
 if(!isset($_SESSION['login']))
 {
 header('Location: index.php');
 exit;
 }[/php]
 
- 
							
							
							
							
							Uso dreamweaver oppure block notes. Devo aggiungere quello script per il controllo? mi sembra ci sia già...ma se c'è già perchè riesco ad entrare senza loggarmi, quindi bypassando il sistema login?  
 
- 
							
							
							
							
							Hai fatto il logout prima di provare ad accedere alla pagina direttamente? 
 
- 
							
							
							
							
							Scusami non ho capito...in che senso ho fatto prima il logout? 
 
- 
							
							
							
							
							Ciao! Altra domanda...se provo a cambiare la lunghezza del nick da 12 a 20 ad esempio in questa striscia di script [PHP]// Controllo il Nome Utente 
 if(strlen($user) < 4 || strlen($user) > 20) //QUA'
 die('Nome Utente troppo corto, o troppo lungo');
 // Controllo la Password
 elseif(strlen($pass) < 4 || strlen($pass) > 12)
 die('Password troppo corta, o troppo lunga');[/PHP]Mi dà questo: Warning: mysql_query(): Accesso non consentito per l'utente: 'ODBC'@'localhost' (Password: NO) in c:\programmi\easyphp1-8\www\registrati.php on line 29 Warning: mysql_query(): A link to the server could not be established in c:\programmi\easyphp1-8\www\registrati.php on line 29 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\registrati.php on line 29 Warning: mysql_query(): Accesso non consentito per l'utente: 'ODBC'@'localhost' (Password: NO) in c:\programmi\easyphp1-8\www\registrati.php on line 32 Warning: mysql_query(): A link to the server could not be established in c:\programmi\easyphp1-8\www\registrati.php on line 32 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\registrati.php on line 32 Warning: mysql_query(): Accesso non consentito per l'utente: 'ODBC'@'localhost' (Password: NO) in c:\programmi\easyphp1-8\www\registrati.php on line 44 Warning: mysql_query(): A link to the server could not be established in c:\programmi\easyphp1-8\www\registrati.php on line 44 
 Errore 003, contattare l'amministratore Accesso non consentito per l'utente: 'ODBC'@'localhost' (Password: NO)Che significa? ho cambiato solo da 12 a 20...:? Grazie! 
 
- 
							
							
							
							
							Forse c'è il config che ho usato io, perchè non riesce a collegarsi al database. 
 
- 
							
							
							
							
							Ok, quello l'ho messa a posto. Però rimane sempre il fatto che se cambio da 12 a 13 la lunghezza mi dà: Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\registrati.php:1) in c:\programmi\easyphp1-8\www\config.php on line 1 Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\registrati.php:1) in c:\programmi\easyphp1-8\www\registrati.php on line 51 Incredibile, non sò a che pensare...:? 
 
- 
							
							
							
							
							Lo stesso errore di prima, cambia editor, è il tuo editor che ti da problemi. 
 
- 
							
							
							
							
							Dreamweaver va bene? Devo scriverlo a mano? E poi incollare il codice in block notes chiamandolo PINCO.php? 
 
- 
							
							
							
							
							Dreamweaver dovrebbe andare bene, prova a rifare le modifiche partendo dai file che ti ho inviato io funzionanti. 
 
- 
							
							
							
							
							Niente da fare, ho provato in tutte le maniere, con dreamweaver, dai tuoi file (dentro il rar) poi trasportandoli in cartella...niente sempre solito stesso warning...pensa che ho aggiunto solo la lettera "i" per provare...ma subito errore...bohhhh???????????''  
 
- 
							
							
							
							
							Usa un editor differente da dreamweaver, magari prova con il blocco note. 
 Il problema non riguarda lo script.
 
- 
							
							
							
							
							Ciao! 
 Lo sò che non è un problema di script, ho provato anche col block notes...accidenti non viene...:x e sapessimo il perchè almeno...ho ricontrollato tutto...tutti gli spazi...tutto e che devo fare??? 
 
- 
							
							
							
							
							Bene, ho trovato la soluzione. Adesso vorrei mettere al posto di user, cognome, nome, pass ed e-mail. Nel file registrati.php mi dà questo errore Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\login\registrati.php on line 37 Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\login\registrati.php:37) in c:\programmi\easyphp1-8\www\login\registrati.php on line 55 [php]<?php 
 // Includo la connessione al database
 require('config.php');// Se il modulo viene inviato... 
 if(isset($_POST['registra']))
 {
 // Dati Inviati dal modulo
 $cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
 $nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : ''; // 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 ''// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza 
 if (!get_magic_quotes_gpc()) {
 $cognome = addslashes($cognome);
 $nome = addslashes($nome);
 $pass = addslashes($pass);
 $mail = addslashes($mail);
 }// Controllo il Nome Utente 
 if(strlen($cognome) < 4 || strlen($cognome) > 12)
 die('Cognome troppo corto, o troppo lungo');
 if(strlen($nome) < 4 || strlen($nome) > 12)
 die('Nome troppo corto, o troppo lungo');
 // Controllo la Password
 elseif(strlen($pass) < 4 || strlen($pass) > 12)
 die('Password troppo corta, o troppo lunga');
 // Controllo l'email
 elseif(!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $mail))
 die('Email non valida');
 // Controllo il nome utente non sia già occupato
 elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$cognome' LIMIT 1")) == 1)
 die('Cognome Utente non disponibile');
 // 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');
 // 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 (cognome, nome, pass, mail)";
 $strSQL .= "VALUES('$cognome', '$nome', '$pass', '$mail')";
 mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());// Reindirizzo l'utente ad una pagina di conferma della registrazione 
 header('Location: registrato.php');
 exit;
 }
 }
 ?>
 <!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>Registrazione</title>
 </head>
 <body>
 <form action="" method="post">
 <input name="cognome" type="text" id="cognome" value="COGNOME" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
 <input name="nome" type="text" id="nome" value="NOME" 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" onfocus="if(this.value==) this.value='';" /><br />
 <input name="registra" type="submit" value="Registrati" /><br />
 </form>
 </body>
 </html>[/php]E anche loggandomi mi da questo errore Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\login\login.php on line 29 
 Nome Utente o Password errati[php]<?php 
 // Includo la connessione al database
 require('config.php');// Se il modulo viene inviato... 
 if(isset($_POST['login']))
 {// Dati Inviati dal modulo 
 $cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : ''; // Metto nella variabile 'cognome' il dato inviato dal modulo, se non viene inviato dò di default ''
 $nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : ''; // Metto nella variabile 'nome' 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()) {
 $cognome = addslashes($cognome);
 $nome = addslashes($nome);
 $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 cognome = '$cognome', nome = '$nome' AND pass = '$pass' LIMIT 1");// Se ha trovato un record 
 if(mysql_num_rows($query) == 2)
 {
 // 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" "">
 <">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Login</title>
 </head>
 <body>
 <form action="" method="post">
 <input name="cognome" type="text" id="cognome" value="COGNOME" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
 <input name="nome" type="text" id="nome" value="NOME" 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]Confermo però che i nomi nel db vengono registrati, cognome, nome, pass ed email. Dove sbaglio? 
 Grazie!
 
- 
							
							
							
							
							Ok, ora per la registrazione funziona ma per il login no...errore detto sopra... Grazie! 
 
- 
							
							
							
							
							Risolto  
 
- 
							
							
							
							
							Ciao, 
 Scusa sono stato in vacanza e non ho potuto rispondere.
 Magari posta le soluzione che possono tornare utili ad altri utenti.