Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Problema con semplice programma di Login

    salve, intanto mi presento mi chiamo Davide nick Sparviere e da poco ho iniziato a programmare cn php, e anche nelle cose più semplici ho trovato qualche difficoltà tipo in questo semplice login mi da un errore per questa variabile :
    $g=mysql_result($result,$i,"username"); ... che è dentro un ciclo proprio per implementare la i, potete aiutarmi ? vi metto il codice :

    <html>
    <head> </head>
    <body>
    <form action="login.php" method=POST>
    Username: <input type=text name=user > </br>
    Password: <input type=password name=pass>
    <input type=submit value="accedi">


    </form>

    <?php
    $a=$_POST['user'];
    $b=$_POST['pass'];
    $DB_host = '--------';
    $DB_user = '--------';
    $DB_password = '---------';
    $DB_name = '---------';

    $link = mysql_connect($DB_host, $DB_user, $DB_password);
    if (!$link) {
    die ('Non riesco a connettermi: ' . mysql_error());
    }
    $db_selected = mysql_select_db($DB_name, $link);
    if (!$db_selected) {
    die ("Errore nella selezione del database: " . mysql_error());
    } //connessione al db



    // mettiamo per ipotesi che A sia user e B sia Password




    $query = "SELECT * FROM utenti";
    $result = mysql_query($query);
    if (!$result) die ("Database access failed: " . mysql_error());



    $n = mysql_num_rows($result); //n è il numero di righe presenti nel db

    for ($i=1;$i<=$n;++$i) {
    $g=mysql_result($result,$i,"username");
    $f=mysql_result($result,$i,"password");
    if ($a==$g && $b==$f) {
    $i=$n;
    echo "Accesso consentito";
    }
    else{
    echo "accesso non consentito";}
    }




    ?>


    </body>
    </html>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    La query per il login non si fa come hai fatto tu, ma così:
    Codice PHP:
    $query "SELECT * FROM utenti WHERE username='$a' AND password='$b'";
    $result mysql_query($query);
    if(
    mysql_num_rows($result==1))
    {
        echo 
    "Login effettuato";
    }
    else
    {
        echo 
    "username o password errati";


  3. #3
    Grazie mille per la risposta,
    posso chiederti la spiegazione ???
    perchè non vedendo cicli come puo' controllare tutti i vari users ?

    inoltre mi da errore, o meglio non mi riconosce gli user.
    e non mi riconosce le variabili col POST ...

    questo login sarà la mia disgrazia

    grazie ancora comunque

  4. #4
    Tu hai postato solo il form, la connessione al database e una richiesta al db per verificare se la combinazione username/password esista nel database.

    Ho dato un occhiata al tuo codice ma ho preferito metterne giù uno mio,

    nel mio ho diviso il login in fasi che vengono richiamate tramite richieste post inviate in hidden dal form stesso.

    Ho omesso di proposito l'apertura e la chiusura del database ma ti ho indicato dove inserirla.

    Dopo dovrai utilizzare le sessioni create con questo script per permettere ( se è settata la sessione) o non permettere ( se la sessione non esiste) la visualizzazione della pagina.



    Codice PHP:
            <? $faselogin $_POST[fase];?>
            <? if(empty($faselogin)) : // IL FORM?>
               <form id="form1" name="form1" method="post" action="">
                  <label>Nome Utente</label>
                <input name="username" type="text"  value="" placeholder="nome utente"/>
                  <label>Password</label>
                <input name="password" type="password"  value="" placeholder="password"/>
                <input type="hidden" name="fase" value="2" />
                <input type="submit" name="button" id="button" value="Login"/>
               </form>
              <? elseif ($faselogin 2) : // CONTROLLO I DATI E CREO LA SESSIONE?>
            
            
    <? // QUI CI VA L'APERTURA DEL DATABASE ?>
            <?  //APRO LA SESSIONE
    @session_start();

    @
    session_regenerate_id(TRUE);

    $user=htmlspecialchars$_POST[username]);

    $password=htmlspecialchars$_POST[password]);

    $query "SELECT * FROM utenti WHERE nomeutente='$user' AND password='$password'";

    $result mysql_query($query);

    if(
    mysql_num_rows($result)) {

    //se è loggato creo la sessione
    $_SESSION['username'] = $user;
    $_SESSION['password'] = $password;

    } else {
    ?>
            


                                       [b]LOGIN ERRATO[/b]
                                    

    Spiacente ma hai inserito un nome utente o password errati</a></p>

                                    
       
     <?
      
    exit;
    }
    ?>
    [b]ACCESSO EFFETTUATO[/b]
                                 


        <? endif;?>
    Spero ti sia utile, ciao

  5. #5
    Grazie mille, ora me lo studio un pò per vedere cosa ci capisco

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Originariamente inviato da xxXsparviereXxx
    Grazie mille per la risposta,
    posso chiederti la spiegazione ???
    perchè non vedendo cicli come puo' controllare tutti i vari users ?
    Non vedi cicli perché ci pensa la query a cercare all'interno della tabella il record con username e password corrispondenti a quelli passati, se trova una corrispondenza ti restituisce un record, se non trova niente te ne restituisce 0.

    Col tuo sistema invece dalla query ti fai restituire tutti i record della tabella e poi deleghi a PHP la ricerca di quello giusto, se c'è.
    Tale soluzione è poco performante sia in termini di tempo (mysql deve comunque leggere tutta la tabella utenti e poi ci si aggiunge il tempo che php impiega a scorrere l'array e fare confronti) che di spazio (la variabile $result invece di contenere un solo record, contiene tutti quelli presenti nella tabella utenti)
    inoltre mi da errore, o meglio non mi riconosce gli user.
    e non mi riconosce le variabili col POST ...
    Ovviamente la prima parte di codice che ti recupera i dati in POST è quella che hai fatto tu.
    Io ti consiglio di mettere gli apici attorno ai name, method ecc... nel form

    esempio
    tu hai messo: method=POST
    metti così: method='post'
    stessa cosa per i name, type e compagnia bella.

  7. #7
    Grazie Lorenze della risposta ma nel tuo metodo che sicuramente funziona nn ci capisco niente ... perche' nn ho ancora trovato nel mio studio le session, quindi per ora preferisco nn utilizzarlo, ma grazie comunque.


    Alzhared nella tua query pero' mi da a questa riga :
    if(mysql_num_rows($result==1))
    questo errore :
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\logged\login2.php on line 36



    perche' ???

    grazie ancora .. vediamo se per la prossima settimana riesco a finire sto login

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Eh, vabbè, un po' di elasticità, mi sono scappate le parentesi messe male
    if(mysql_num_rows($result)==1)

  9. #9
    :P guarda scusa se ti rompo ma io conosco il c++ html e php lo inizio ora per questo non ci capisco proprio niente scusa e grazie ancora

  10. #10

    è una condanna sto login !!!

    Ma non va ancora ... stesso errore ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.