Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    area riservata: Parse error: parse error in c:\programmi\easyphp1-8\www\a

    Ciao a tutti,
    sto creando una semplice area riservata, ma rilevo un errore potreste aiutarmi a capire dove sto sbagliando. Grazie mille in anticipo, segnalo l’errore:

    Parse error: parse error in c:\programmi\easyphp1-8\www\area riservata_02\autentica.php on line 34



    Codice:
    <?php
    //Richiamo il collegamento al database
    require('db.php');

    //Avvio o continuo la sessione
    session_start();

    //Otteniamo l'username e la password
    $username=$_POST['username'];
    $password=$_POST['password'];
    $passwd = md5('$password');


    //Impostiamo la query...
    $querySQL= "SELECT * FROM utenti WHERE
    'username' = '$username'
    and
    ' password' = '$passwd' ";

    //Eseguiamo la query
    $result=mysql_query($querySQL);

    //Controllo se la query è andata a buon fine
    if(!$result){
    die ("Errore nell'esecuzione della query:
    ".mysql_error());
    }
    $rows=mysql_fetch_array($result);

    //Verifico se l'username e la password sono sbagliati
    if(mysql_num_rows($result)==0 and $rows['password'] != $passwd
    {

    //Mandiamo l'errore e terminiamo lo script
    die ("Username e/o password errati
    Torna indietro");
    }
    //Altrimenti...
    else
    {
    //E salviamo i dati in essa
    $HTTP_SESSION_VARS['username'] = $username;
    $HTTP_SESSION_VARS['password'] = $passwd;

    header("Location: riservata.php");
    }
    mysql_close();
    ?>
    [/code

  2. #2

    Errore di distrazione o errore di codice?

    Ciao
    credo di aver trovato l'errore mancava una parentesi "(" sulla linea

    if(mysql_num_rows($result) ==0 and $rows['password']!=$passwd)

    ma adesso lo script nn funziona cioè nn fa il login mi dice come da codice che password e username sono sbagliate

    qualcuno può darmi qualche consiglio...Forse ho popolato male la tabella utenti?

    codice:

    <?php
    //Richiamo il collegamento al db
    require('db.php');

    //Popolo la tabella utenti
    $querySQL= "INSERT INTO utenti (username , password)
    VALUES ('wutangrob', md5('69laotze'))";

    //Eseguo la query
    $result= mysql_query($querySQL);

    //Controllo se la query è andata a buon fine
    if(!$result){
    die ("Errore nell'esecuzione della query:
    ".mysql_error());
    }
    ?>

  3. #3
    non chiudi la if un paio di righe prima.


    inoltre, ma non c'entra con l'errore che segnali, dovresti usare $_SESSION invece di $HTTP_SESSION_VARS

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4

    ancora sul codice

    Ho corretto la parentesi "(" che mancava e cambiato il codice con $_session

    ma nn fa il login, cioè sembra funzionare ma nn effettua il controllo eventuali idee?
    La query da phpmyadmin funziona...chiunque abbia qualche spunto...


    ciao e mille grazie

  5. #5
    Dovresti dare piu' fiducia a mysql. Se fai una query di questo genere:
    codice:
    $querySQL= "SELECT * FROM utenti WHERE 
    'username' = '$username' 
    and 
    ' password' = '$passwd' ";
    con i nomi dei campi tra apici avrai sempre risultato zero righe. I nomi di campo non vanno tra apici.

    La fiducia.... se la query trova la corrispondenza con username e password e' inutile che tu controlli la password con una if. Discutibile pure il controllo che fai

    if (0 righe == 0 and $rows['password'] != $passwd) e' una ipotesi inverosimile.

    se non hai righe come puoi controllare la password estratta dal db? ma se hai righe significa che la password e username erano esatti quindi falso lo zero righe. Quindi ipotesi che non si verificherebbe mai.

    un esempio potrebbe essere:

    Codice PHP:

    //Impostiamo la query...
    $querySQL"SELECT * FROM utenti 
                WHERE username = '
    $username
                and 
                password = '
    $passwd' ";

    //Eseguiamo la query
    $result mysql_query($querySQL
              OR die (
    "Errore nell'esecuzione della query: 
    "
    .mysql_error());

    //Controllo se la query è andata a buon fine
    if(mysql_num_rows($result) == ){
     
          
    $_SESSION['username'] = $username;
          
    $_SESSION['password'] = $passwd;
          
    header("Location: riservata.php");
          exit;   
          
          } else {  
                 die (
    "Username e/o password errati 
    [url='login.php']Torna indietro[/url]"
    );
                 }
                 
    mysql_close();

    ?> 
    occhio poi ad un altra cosa....

    md5('69laotze');

    e' ben diverso da

    $password = '69laotze';
    MD5('$password');

    sempre per colpa delle maledette virgolette....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6

    Dopo i tuoi consigli ho risolto così

    Ciao,
    per il momento ho eliminato l'md5 perchè mi incartavo, ho risolto così poi mi riprometto di inserirlo, grazie per i tuoi consigli.

    Una domanda se eventualmente volessi inviare ad una pagina di errore specifica che creo io invece di far apparire php come potrei fare? Faccio un semplice un header();
    Ciao e grazie

    Codice PHP:
    <?php
    //Richiamo il collegamento al db
    require('db.php');
    //avvio o continuo la sessione
    session_start();
    //Verifico la password l' username
    $username=$_POST['username'];
    $password=$_POST['password'];
    //Controllo se l' username e la password non sono vuoti
    if((strlen($username) == 0) and (strlen($password) == 0)){
     echo(
    "Per favore inserisci un'username e una password! ".mysql_error());
    }else{
    //Imposto la query
    $querySQL ="SELECT username, password FROM utenti WHERE username = '".$username."' and '".$password."'";
    //Eseguo la query ed effettuo un controllo
    $result mysql_query($querySQL) or die(mysql_error());
    //Estrapolo i dati dalla query e controllo se la query è andata a buon fine 
    if(mysql_num_rows($result) == ){ 
    //Passo l'utente alla sessione
    $_SESSION['username'] = $username
    $_SESSION['password'] = $password
    //Effettuo il redirect alla pagina riservata
    header("Location: riservata.php"); 
    exit();    
         
    } else {   
    die (
    "Username e/o password errati 
    [url='login.php']Torna indietro[/url]"
    ); 
    }  
    }              
    //Libero la memoria
    mysql_free_result($result);
    //Effettuo il Logout
    if(@$_GET['logout'] == 1){ 
    //Desetto tutte le variabili di sessione    
    $_SESSION = array(); 
    //Distruggo le sessioni
    session_destroy(); 
    }
    //Chiudo la connessione a mysql
    mysql_close(); 

    ?>

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.