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

    Area ad accesso privata

    Salve ragazzi,
    sto seguendo un video corso sul php, vi avviso che sono proprio alle prime armi in materia.
    non riesco a comprendere alcuni passaggi di questo codice per la creazione di un'area ad accesso privata:

    Codice PHP:
    <?php
    function check_user($usr,$pws) {
        
            
    $textfile fopen("iscritti.txt""r");
            
            while ( 
    $rigafile fgets($textfile,1024) ) {
                
    $campiriga explode("|"$rigafile);
                
    $file_username $campiriga[0];
                
    $file_password $campiriga[1];
                    if (
    $file_username == $usr && $file_password == $pws) {
                        return 
    0;
                        echo 
    "$usr e $password";
                    }
            }
            return 
    1;
            
    fclose($textfile);
            
    }

    $password $_POST["password"];
    $username $_POST["username"];

    if (
    check_user($username,$password)) {
    echo 
    "Non sei autorizzato ad entrare in quest'area";
    } else {
    ?>
    <html>
    Questo e' il corpo della tua pagina protetta

    </html>
    <?php
    }
    ?>
    non capisco due cose:
    1-la funzione check_user($usr,$pws) quando viene dichiarata non ha ancora specificato i due valori usr e pws giusto? come mai?
    2-non capisco questo if (check_user($username,$password))
    cosa verifica? in che modo? io sono abituato a if come if ($file_username == $usr && $file_password == $pws), un if che verifica se una condizione è vera o meno

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    8
    la parte di codice che qui hai inserito è la seconda parte di un codice più lungo.
    in pratica tutto il codice è formato da 2 file che battezziamo primo.php e secondo.php.

    primo.php in realtà può essere anche un primo.html perchè si tratta di una semplice form in html. eccolo qui:

    <form action="secondo.php" method="post">
    <input type="text" name="username" > login
    <input type="password" name="password" > password
    <input type="submit" value="entra">
    </form>

    quando l'utente entra nella pagina primo.html e compila il form i dati username e password vengono passati alla pagina secondo.php.

    ora inverto il tuo codice per una migliore lettura ma comunque non cambia niente:

    <?php

    /*devi sapere che in php a differenza di altri linguaggi gli indici degli array possono essere anche parole e non solo numeri*/
    /*l'array $_POST riceve i valori inseriti dall'utente in primo.html quando l'utente clicca su entra e li passa a secondo.php ecco da dove arrivano i valori*/

    $password = $_POST["password"];
    $username = $_POST["username"];

    /* per quanto riguarda la seconda domanda il php eredita questo dal c*/
    /* in c una funzione che ritorna 0 ritorna vero mentre una funzione che ritorna 1 ritorna falso. in php esistono anche i valori true e false ma in questo caso chi ha fatto la funzione
    ha optato per 1 e 0.
    All'interno di un if come hai detto tu c'è un espressione di maggioranza/minoranza/uguaglianza ma più in generale c'è un espressione booleana che può valere alla fine o 0 o 1 quindi se
    check_user($username,$password) vale 1 è falsa altrimenti è vera */



    if (check_user($username,$password)) {
    echo "Non sei autorizzato ad entrare in quest'area";
    } else {
    ?>
    <html>
    Questo e' il corpo della tua pagina protetta

    </html>
    <?php
    }

    function check_user($usr,$pws) {

    $textfile = fopen("iscritti.txt", "r");

    while ( $rigafile = fgets($textfile,1024) ) {
    $campiriga = explode("|", $rigafile);
    $file_username = $campiriga[0];
    $file_password = $campiriga[1];
    if ($file_username == $usr && $file_password == $pws) {
    return 0;
    echo "$usr e $password";
    }
    }
    return 1;
    fclose($textfile);

    }


    ?>

  3. #3
    sì è vero manca una prima parte, scusa non ho pensato a inserirla.
    sì il ragionamento in linea di massima l'ho capito,
    il punto è che non riesco proprio a capire come quell'if possa essere vero o falso..
    if (check_user($username,$password))... cosa significa?
    chiamo la funzione check_user alla quale passo due valori, la funzione poi a sua volta verifica se questi valori sono presenti all'interno del file .txt, se ci sono è vera, altrimenti è falsa.
    però a questo punto verificata questa cosa come funziona l'if?
    if (check_user($username,$password)) significa se la funzione check_user è vera? ho capito bene? grazie

  4. #4

  5. #5
    Quando dice:
    return 0 e return 1, quella è la verifica.
    E' true se il valore è 1, false se è 0.
    In questo caso, se trova riscontro con nome e password, ritorna 0 (false) quindi la condizione per la quale if(check_user($nome,$password)) = non ti faccio entrare, diventerà falsa, poiché se trova riscontro nel file ritornerà 0.
    Il ragionamento è al contrario rispetto ai valori.
    Per logica era più intuitivo dare 1 se c'erano nome e password e nella condizione mettere:
    if(!check_user...
    Così se trova riscontro allora è vero, altrimenti rimane falso.
    Ma va bene anche così
    Ce l'ho fatta! - ItalianPixel -

  6. #6
    grazie a tutti per l'aiuto.. però sto iniziando a pensare di essere ottuso io.
    il ragionamento l'ho capito tutto, ok?
    quindi if(check_user($nome,$password)) significa se la funzione è vera allora altrimenti ...
    ok grazie!!

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non so dove hai trovato quel codice, ma mi sembra quantomeno discutibile.
    A parte la scelta di mettere i dati di autenticazione in un file di testo (diciamo che a scopi didattici ci può anche stare, nel mondo "reale" magari meno), il problema è che in quella funzione se i dati di login vengono trovati il file rimane aperto...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.