Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Trim

  1. #1

    Trim

    Ragazzi ho un problema, importando dati nel db si sono creati degli spazi vuoi, vorrei eliminarli e ho usato il trim in questo modo ma la query non funzione, come mai?

    Codice PHP:
    $fornitori_sql "SELECT * FROM fornitori WHERE username='" trim('$user')."' and password='"trim('$pass')."'"

  2. #2
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    Togli i singoli apici
    Codice PHP:
    $fornitori_sql "SELECT * FROM fornitori WHERE username='" trim($user)."' and password='"trim($pass)."'"

  3. #3
    Tolti , il problema è che chiunque nella form per entrare nel sito le lascia vuote, entra, pensavo che con trim risolvevo, invece no... Praticamente il db che pieno di dati ci son degli spazi vuoti, chi non mette nulla nei campi di input entra nel sito, come risolvo?


    $fornitori_sql = "SELECT * FROM fornitori WHERE username='" . trim($user)."' and
    password='". trim($pass)."'";

  4. #4
    qua mi sembrano ci siano ancora i singoli apici.
    ricopiati l'esempio di mariox.

  5. #5
    Devo togliere anche quelli dopo il =?

  6. #6
    Ho tolto gli apici
    Codice PHP:

            $fornitori_sql 
    "SELECT * FROM fornitori WHERE username=" trim($user)." and password="trim($pass).""
    ma non funziona poi la login

  7. #7
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    questa è la query giusta:
    Codice PHP:
    $fornitori_sql "SELECT * FROM fornitori WHERE username='" trim($user)."' and password='"trim($pass)."'"

    Tolti , il problema è che chiunque nella form per entrare nel sito le lascia vuote, entra, pensavo che con trim risolvevo, invece no... Praticamente il db che pieno di dati ci son degli spazi vuoti, chi non mette nulla nei campi di input entra nel sito, come risolvo?
    Questo è un altro problema, molto grave! Devi fare i dovuti controlli. Ti posto un semplice esempio.

    Codice PHP:
    $fornitori_sql "SELECT * FROM fornitori WHERE username='" trim($user)."' and password='"trim($pass)."'";

    $result mysql_query($fornitori_sql);

    if (@
    mysql_num_rows($result) == 1)
    {
        
    // utente trovato
    }
    else
    {
        
    // utente non trovato


  8. #8
    Lo script che ho fatto è questo qua:
    Codice PHP:
    <?php
    session_start
    ();
    ob_start();

    $user $_POST['username'];
    $pass md5($_POST['password']);

    // Se non sono stati inseriti i dati di login rimanda alla pagina principale segnalando l'errore
    if(!isset($user) || !isset($pass)) {
        
    header("Location: ./content.php?login=empty");
    } else {
        
    // Controllo principale sull'integrità dei caratteri per evitare tentativi di SQL Injection
        
    if(!eregi("[^a-zA-Z0-9_\-]"$user))  {
            
    $amm_sql "SELECT * FROM amministratore WHERE username='$user' and password='$pass'";
            
    $amm_query = @mysql_query($amm_sql);
                    
    $amm_result = @mysql_fetch_array($amm_query);
                    
                                    
    //anagrafica è la tabella utenti, rinominata per via del flusso xml
            
    $user_sql "SELECT * FROM anagrafica WHERE username='$user' and password='$pass'";
            
    $user_query = @mysql_query($user_sql);
                    
    $user_result = @mysql_fetch_array($user_query);
                    
            
    //fornitori accesso
            
    $fornitori_sql "SELECT * FROM fornitori WHERE username='" trim($user)."' and password='"trim($pass)."'";
            
    $fornitori_query = @mysql_query($fornitori_sql);
                    
    $fornitori_result = @mysql_fetch_array($fornitori_query);
                    

            
            if(@
    mysql_num_rows($amm_query) > 0) {
                            if(
    $amm_result['banned'] == 'Y') {
                                    
    header("Location: ./content.php?login=ban");
                            } else {
                                    
    $_SESSION['username'] = $user;
                                    
                                    
    // L'utente e` un amministratore, quindi assegno come privilegi 1
                                    
    $_SESSION['privileges'] = 1;
                                    
                                    
    $_SESSION['time'] = time();
                                    
                                    
    $_SESSION['ammid'] = $amm_result['id_amministratore'];
                                    
                                    
    header("Location: ./content.php");
                                    
                            }
                            
            } elseif(@
    mysql_num_rows($user_query) > 0) {
                
    $_SESSION['username'] = $user;
                
                
    // L'utente e` un inquilino, quindi assegno come privilegi 2
                
    $_SESSION['privileges'] = 2;
                
                
    $_SESSION['time'] = time();
                            
                            
    $_SESSION['userid'] = $user_result['id'];
                            
                            
    $_SESSION['condominio'] = $user_result['id_condominio'];
                         
    $_SESSION['amministratore'] = $user_result['id_amministratore'];
                
                
    header("Location: ./content.php");
                
                
                
            } elseif(@
    mysql_num_rows($fornitori_query) > 0) {
                
    $_SESSION['username'] = $user;
                
                
    // L'utente e` un fornitore, quindi assegno come privilegi 3
                
    $_SESSION['privileges'] = 3;
                
                
    $_SESSION['time'] = time();
                            
                            
    $_SESSION['fornitoreid'] = $fornitori_result['id'];
                            
                            
    $_SESSION['amministratore'] = $fornitori_result['id_amministratore'];
                            
    $_SESSION['fornitore'] = $fornitori_result['id_fornitore'];
                
                
    header("Location: ./content.php");
                
            } else {
                
    header("Location: ./content.php?login=failed");
            }
        } else {
            
    header("Location: ./content.php?login=chars");
        }
    }

    ob_end_flush();
    ?>
    come posso fare in modo che chi fa invio senza inserire i dati venga loggato ?

  9. #9
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Perdonami i francesismi ma

    Codice PHP:
    $user $_POST['username']; 
    $pass md5($_POST['password']);  

    if(!isset(
    $user) || !isset($pass)) {     
        
    header("Location: ./content.php?login=empty"); 
    ... 
    è una cagata pazzesca (sarà stata una svista) perchè il suo risultato è sempre false. Ciò in conseguenza del fatto che se assegni prima le variabili, isset è per forza true, negate sono due false legate da un or che da false. Anche se $_POST['username'] non esiste (ma esiste ed è vuota poichè lasciata tale nel form precedente) hai comunque creato la variabile $user, settata con la stringa vuota. In più md5() di una variabile anche vuota ti ritorna i 32 caratteri quale hash.

    forse il tuo if doveva essere del tipo:

    Codice PHP:
    if(empty($_POST['username']) or empty($_POST['password']))... 
    Altra assurdità è l'utilizzo di eregi per evitare le sql injection. Sottoponi le variabili che comporranno la query alla funzione mysql_real_escape_string() (vedi su php.net) in tal modo i dati delle query sono sicuri.

    NCS... Non Ci Siamo!

    Non te la prendere se ti sono sembrato un po' bruso, ma è solo uno spintone per rimetterti in carreggiata.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Originariamente inviato da Grino
    ....
    Altra assurdità è l'utilizzo di eregi per evitare le sql injection. Sottoponi le variabili che comporranno la query alla funzione mysql_real_escape_string() (vedi su php.net) in tal modo i dati delle query sono sicuri.
    ...
    Oppure, penso meglio ancora, usa mysqli e prepared statement, hai ancora maggior controllo sui dati.

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.