domande su php/mysql

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Premetto che probabilmente dopo questa avrai l'istinto di menarmi... se supero la soglia fammi sapere che smetto di tartassarti di domande... (e magari mi risparmio le botte 0:) :gun: :eek:) comunque dalla tua stupenda guida (GUIDA PHP E MYSQL PRATICA):

Codice:
<?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']) == "Login"))
{ 
  // 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();
    // interrogazione della tabella
    $auth = $data->query("SELECT id_login FROM login WHERE username_login = '$username' AND password_login = '$password'");
    // controllo sul risultato dell'interrogazione
        if(mysql_num_rows($auth)==0)
    {
        // reindirizzamento alla homepage in caso di insuccesso
          header("Location: index.php");
    }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();
        // reindirizzamento alla pagina di amministrazione in caso di successo
          header("Location: gestisci.php");
    }
  } 
}else{
  // form per l'autenticazione
  ?>
<h1>Accesso all'amministrazione:</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Username:<br />
<input name="username" type="text"><br />
Password:<br />
<input name="password" type="password" size="20"><br />
<input name="submit" type="submit" value="Login">
</form>
  <?
}
?>


Ora vorrei sapere se ho ben capito;

Inizi una sessione in modo che se l'utente è già stato autentificato (tramite $_SESSION['login']) questo non ha bisogni di rifare il procedimento...(poiché $_SESSION['login'] sarebbe già "risultato" all'interno di isset.

Se $_SESSION['login'] ha valore (tramite l'oggetto prelevato da
$res->login) allora l'utente va nella pagina protetta della gestione (gestisci.php)

Controlli se i parametri inviati hanno valore ...altrimenti fai la loro validazione applicando il filtro contro un eventuale codice pericoloso all'interno di essi (in questo caso ad esempio <?php rcho 'prova' ?> non sarebbe riconosciuto - e la password viene criptata tramite la funzione sha1(valore) il quale restituisce una stringa di 40 caratteri e rende incodificabile la password dal database

A questo punto istanzi la classe contenente tutti i metodi precedentemente creati (ovviamente non presenti qui)

Richiami il metodo query (che precedentemente hai creato per istruire il db mysql) nel quale ti da come risultato tutti gli username che hanno quel $username AND come password quella $password
Domanda: Perchè SELECT id-login anziché SELECT id_login, password_login?

poiché il metodo query sopra citato lo hai messo all'interno di mysql_fetch_rows se questo non ti restituisce righe significa che non è stato autentificato e lo rispedisci alla home

altrimenti applichi mysql_fetch_object tramite il metodo estrai($auth) e quindi valorizzi con $res->id_login la $_SESSION['login'] che a questo punto ha valore e risponde true all'isset iniziale

Se $username e $password non sono stati inviati allora mostra il form per l'inserimento dei dati

altra domanda:

perché nel controllo sul parametro di invio hai messo
trim($_POST['submit']) //che senso togliere gli spazi e all'inizio della stringa del pulsante di invio?

Ti ringrazio di una tua eventuale risposta... se nn rispondi capisco di aver esagerato e grazie lo stesso

:book:
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Credo che tu sia lo stesso Emanuele che mi ha contattato, dubbioso su quale linguaggio studiare :)
Comunque, in effetti, non ha senso (non sarebbe utile neanche controllarne il valore) però immagino che lo abbia scritto per abitudine mentale ;)
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Domanda: Perchè SELECT id-login anziché SELECT id_login, password_login?
Perché come valore di sessione ho appunto l'id dell'utente, come puoi vedere successivamente
PHP:
$_SESSION['login'] = $res-> id_login;
Nella select non ho bisogno di estrarre altri campi, quello che mi interessa è effettuare un confronto tramite la clausola WHERE.

perché nel controllo sul parametro di invio hai messo
trim($_POST['submit']) //che senso togliere gli spazi e all'inizio della stringa del pulsante di invio?

Il controllo è molto più sensato di quanto non si creda, le clausole vincolano infatti l'accettazione degli altri parametri inviati per post ad una sola tipologia d'invio che deve essere effettuata tramite $_POST['submit'] il cui valore deve essere identico a "Login".
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
x alessandro 97: si si sono proprio io. Infatti ti volevo un po di cose ma rimando a un'altra volta(tra circa due settimane)....

x claudio... grazie delle risposte
 
Discussioni simili
Autore Titolo Forum Risposte Data
D [RISOLTO]domande varie su creazione sito con php, mysql e phpmyadmin PHP 42
K [php] due domande sulla sicurezza PHP 1
M Domande su validare i dati inseriti dagli utenti con jQuery e PHP Javascript 1
K domande php PHP 5
S Domande sul posizionamento SEO SEO e Posizionamento 2
V Domande su Keywords e Focus Key SEO e Posizionamento 0
V Domande: registrazione sito fonti esterne SEO e Posizionamento 0
W Domande javascript Javascript 1
Benix89 Modulo per pagamento con la risposta ad alcune domande Magento 1
Benix89 Modulo per pagamento con la risposta ad alcune domande PHP 2
D Due domande su videocamera ip-wireless IP Cam e Videosorveglianza 1
P Problema domande duplicate per risposte multiple PHP 6
P Domande sulla sintassi corretta jQuery jQuery 8
I altre 2 domande ! HTML e CSS 6
I 2 domande HTML e CSS 5
F due domande a tutti i programmatori Javascript 1
iAntis Domande per Restyling completo di un sito e nuovo Upload sul server: HELP! :/ Hosting 1
Marcoingrande 2 domande in una! Javascript 25
filippino Domande su partizione disco fisso windows 7 Windows e Software 2
S Domande generali sull'indicizzazione SEO e Posizionamento 0
P Due domande su artisteer. HTML e CSS 0
A Ciao a tutti, da oggi ci sarò anch'io... a fare domande. Presentati al Forum 1
F 3 domande per il mio nuovo sito web su Indicizzazione HTML e CSS 2
T ancora domande su asp Classic ASP 14
G Domande su landing page HTML e CSS 0
M Domande su upload files PHP 7
M Domande sull'informativa sulla privacy Leggi, Normative e Fisco 3
A HTML. Domande da principianti HTML e CSS 18
V domande x sito web con chat a pagamento HTML e CSS 0
A Questioner, social network di domande e risposte Presenta il tuo Sito 8
D Regime dei minimi: alcune domande. AIUTO! Leggi, Normative e Fisco 16
A domande varie per webdesigner Leggi, Normative e Fisco 0
B UPLOAD Asincrono è Possibile?, (domande chiarificatrici) Javascript 0
B Hosting per Joomla: consigli e domande varie Hosting 0
F domande su active directory e aggiunta di pc ad una rete.. Reti LAN e Wireless 0
MarcoGrazia Quante volte ci siamo trovati innanzi alle stesse domande? Discussioni Varie 7
corkis81 Un po' di domande... HTML e CSS 10
B [Domande] Sviluppo negozio online basato su wordpress WordPress 1
A Domande su uso forum di mr. Webmaster Supporto Mr.Webmaster 0
LupoBianco [AJAX] domande da novizio Ajax 1
P Domande per quiz su software open source Presenta il tuo Sito 2
emanuelevt Domande generiche HTML e CSS 8
W Domande per Linux OS Linux e Software 4
catellostefano domande sui plugin per wordpress WordPress 6
A alcune domande su javascript Javascript 7
V Alcune semplici domande Reti LAN e Wireless 0
borgo italia alcune domande Supporto Mr.Webmaster 0
G Domande per scelta hosting Hosting 0
R Contatto FormMail in Perl domande Programmazione 1
S domande varie su mysql MySQL 1

Discussioni simili