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

Discussione: $a>$b ? non fa!

  1. #1

    $a>$b ? non fa!

    ho scritto il seguente codice:

    Codice PHP:
    $dim_max trim(file_get_contents("max_file_size.txt"));
    $file_size trim($_FILES["file"]["size"]);

    echo 
    $file_size."
    \n"
    ;
    echo 
    $dim_max."
    \n"
    ;

    if(
    $file_size $dim_max)
        echo 
    "ok";
    else
          echo 
    "no"
    visualizza "no", anche se ($file_size > $dim_max) risulta teoricamente vera!...

    É un po' che provo e riprovo, ma non sono giunto a niente di funzionante, che ho sbagliato?

    P.S.
    Naturalmente accedo a questo codice dopo aver inviato una form con un campo file, controllato con $_FILES["file"]["error"]
    by fede089

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ho fatto una prova con il tuo codice e non ho riscontrato nessun errore.

    Potresti postare il risultato della pagina ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da badaze
    Ho fatto una prova con il tuo codice e non ho riscontrato nessun errore.
    A parte confrontare delle stringhe sperando che si comportino come numeri...?

  4. #4
    Quasi mi vergogno...

    Dopo le risposte ho rifatto una prova col solito file da 280 Kb, con max_file_size.txt contenente 307200, e lo script si è comportato come sempre, dunque: o è impazzito il php del mio computer o sono impazzito io. Sono impazzito io.

    Il contenuto del file max_file_size.txt era 307200, 300Kb, io, avendo scritto metà dei codici una settimana fa, ero convinto che quel numero corrispondesse a 200Kb!

    Ho cambiato 307200 con 204800 (200Kb) e tutto funziona come previsto anche col file da 280Kb.


    Mi dispiace solo di avervi scomodato per una tale sciocchezza...
    by fede089

  5. #5
    Originariamente inviato da luca200
    A parte confrontare delle stringhe sperando che si comportino come numeri...?
    l'operatore di contronto si aspetta numeri .. quindi c'è un cast implicito

    '65' -> 65

    nel suo caso non c'è propblema di questo tipo
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da luca200
    A parte confrontare delle stringhe sperando che si comportino come numeri...?
    Infatti era il mio dubbio. E devo dire che sono rimasto male quando ho visto che il confronto funzionava.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Originariamente inviato da drAlberT
    l'operatore di contronto si aspetta numeri
    beh, non sempre ... diciamo che "normalizza" il confronto.

    $a = "a";
    exit("".(++$a)); // b


    $a = "a";
    $b = "123";
    exit("".($a > $b)); // 1 <== true


    $a = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    $b = "b";
    exit("".($a > $b)); // false, compara solo il primo carattere


    nel caso di stringhe contenenti numeri fa comunque un casting implicito, ma con le stringhe capitano anche cose "strane" ..

    $a = chr(255);
    exit("".ord($a++)." <= ".ord(++$a)); // 255 <= 255

    ergo a mio avviso, confondere numeri e stringhe non è comunque una best practice nemmeno con i linguaggi di scriptings quindi trovo corretta l'osservazione di luca

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Originariamente inviato da andr3a
    ma con le stringhe capitano anche cose "strane"
    già, ma basta stare attenti a fare, se non implicitamente, la conversione e trim vari...
    per ora solo qualche volta ho avuto bisogno di convertire una stringa "manualmente" in numero

    by fede089

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da badaze
    Infatti era il mio dubbio. E devo dire che sono rimasto male quando ho visto che il confronto funzionava.
    In effetti il dubbio era infondato...

    Se per esempio effettuassimo un confronto (==) tra una variabile contenente l'intero uno (1) ed una contenente la stringa uno (1) otterremmo un valore di verità dato che PHP trasformerebbe entrambi i valori in numeri in modo che siano confrontabili. Per assegnare questo valore numerico, PHP controlla se all'inizio della stringa ci sono dei numeri: se ne trova, considererà tutti i numeri che trova inizialmente come il valore numerico di quella stringa. Se non ne trova, il valore della stringa sarà 0:
    Ha ragione drAlberT... Ogni tanto dovrei ripassare la mia guida

  10. #10
    Originariamente inviato da luca200
    Ha ragione drAlberT... Ogni tanto dovrei ripassare la mia guida
    quindi i migliori del forum consigliano di ignorare il tipo di dato e sfruttare le ambiguità tipiche del typeless mentre gli sviluppatori stessi del linguaggio stanno "tentando" di aggiungere primitive di controllo in metodi e funzioni? ( i.e. function person(string $name, int $age){} )

    Un conto è dire "funziona lostesso ma è un caso ed un modo error-prone di svilupare" un conto è dire "è corretto infischiarsene del tipo di dato" ... dato che non esiste nemmeno l'overload degli operatori per migliorare un eventuale controllo ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.