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

Discussione: Login PHP OOP

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    17

    Login PHP OOP

    Ho buone conoscenze di php procedurale e avendo studiato da poco la OOP stavo provando a fare delle semplici esercitazioni. È corretto utilizzarla come sto facendo?

    core.php in cui verranno inclusi tutti i file delle classi usate:
    Codice PHP:
    <?php
    require_once 'classes/config.php';
    require_once 
    'classes/db.php';
    ?>
    config.php in cui ci sono i dati mysql:
    Codice PHP:
    <?php
    class Config{
        public static 
    $host 'localhost';
        public static 
    $user 'root';
        public static 
    $pass 'asdasd1';
        public static 
    $db 'login';
    }
    ?>
    db.php in cui ci sono tutte le operazioni che posso fare interrogando il database:
    Codice PHP:
    <?php
    class Db{
        public function 
    connect(){
            try {
                
    $db = new PDO("mysql:host=".Config::$host.";dbname=".Config::$db Config::$userConfig::$pass);
                return 
    $db;
            }
            catch(
    PDOException $e) {
                echo 
    'Errore: '$e->getMessage();
                exit;
            }
        }

        public static function 
    LogIn($user$pass){
            
    $db self::connect();
            
    $sql $db->query('SELECT * FROM users WHERE username = "'.$user.'" AND password = "'.$pass.'"');
            
    $res $sql->fetch();
            if(
    $res){
                echo 
    "Login ok!";
            }else{
                echo 
    "Login failed!";
            }
        }
    }
    ?>
    index.php è un semplice form html:
    Codice PHP:
    <form action="login.php" method="POST">
    Username: <input type="text" name="username" /><br />
    Password: <input type="password" name="password" /><br />
    <
    input type="submit" value="LogIn" name="submit"/>
    </
    form
    login.php per il login:
    Codice PHP:
    <?php
    require_once './inc/core.php';
    if(isset(
    $_POST['submit'])){
        
    $username $_POST['username'];
        
    $password $_POST['password'];
        
    Db::LogIn($username$password);
    }
    ?>

    Ho letto molte guide per fare un login sul web ma ognuna differiva dall'altra perché ognuno scrive il codice alla propria maniera.


    1. È corretto scrivere il codice in questa maniera?
    2. Per ora mi sono limitato a scrivere un codice molto semplice che verifica che l'utente esista nel database e la password corrisponda, ho saltato molte cose come la verifica che entrambi i campi del form siano settati, la criptazione della password, le sessioni, etc. Cosa manca al mio codice per essere sicuro al 99.9%? (a parte la criptazione della password)
    3. Ho letto che l'utilizzo di un token dovrebbe prevenire session hijacking, potreste spiegarmi meglio cosa sono e come utilizzarli?



  2. #2
    mettere codice procedurale all'interno di una classe non significa sviluppare in oop

    continua a studiare
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    17
    Non avevo dubbi che il mio codice era sbagliato
    C'è qualche guida o avete consigli da darmi su come scrivere un buon codice OOP? Quelle che ho trovato spiegano solo i fondamentali, cosa sono le classi, metodi, proprietà, ecc.

    Ho cercato script scritti in OOP per vedere come erano strutturati, sto continuando sulla cattiva strada?
    http://pastebin.com/UFttBY1P inc/core.php
    http://pastebin.com/dAFgM7A2 classes/config.php
    http://pastebin.com/hs0f8Fhh classes/db.php
    http://pastebin.com/aMY9GVEh classes/user.php

    http://pastebin.com/LDRfM7Qw index.php
    http://pastebin.com/Mef3pEcP login.php
    Ultima modifica di Gigius; 30-01-2015 a 03:07

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    sto continuando sulla cattiva strada?
    Quello che vedo sono un sacco di classi con metodi statici. "static" deve essere utilizzato quando la classe non ha la necessità di mantenere uno stato locale per le singole istanze degli oggetti. Significa che non c'è necessità di istanziare alcun oggetto. Infatti tu non lo fai. Ecco il perché Al_katraz ti ha dato quella risposta: spostare il tuo codice in un paio di classi non significa fare oop.
    Anche se può sembrare estremistico per alcuni, io concordo con chi dice che "non esiste static in oop. se lo stai usando allora non lo stai facendo bene".

    C'è qualche guida o avete consigli da darmi su come scrivere un buon codice OOP?
    Se stai cercando una guida di 6 pagine con tutti i concetti che ti servono allora devo disilluderti. Cerca per "object-oriented design and patterns", ritengo che sia un buon modo per farsi una idea. Non ci sono scorciatorie, devi studiare.
    Ultima modifica di .Kurt; 30-01-2015 a 10:21

  5. #5
    se vuoi un approccio piu OO per gestire una login e quant'altro, http://symfony.com/doc/current/compo...roduction.html

    non ti dico di usare il framework eh, se guardi il manuale di quel framework e il componente e vedi il flow dell'autenticazione e autorizzazione puoi farti un'idea di cosa vuol dire fare un sistema di login
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    110
    Quote Originariamente inviata da Gigius Visualizza il messaggio
    C'è qualche guida o avete consigli da darmi su come scrivere un buon codice OOP? Quelle che ho trovato spiegano solo i fondamentali, cosa sono le classi, metodi, proprietà, ecc.
    Codice oop e php sono agli antipodi. Se leggi il forum puoi vedere come ogni tanto c'è una richiesta su esercitazioni,ebook,manuali e/o altro sul php oop. Ma oltre alle solite risposte che non dicono niente (per non parlare delle risposte ironiche di Satifal) non si cava un ragno dal buco.

    Ti consiglio di cambiare linguaggio e orientarti verso un VERO linguaggio oop come Java o Asp.net

  7. #7
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Sarà pure vero che php non è nato come linguaggio orientato ad oggetti, ma con php5 ora lo è. Possiamo pure dire tranquillamente che ha un un decente supporto per oop. O per essere più precisi, non puoi dire che php è un pessimo linguaggio OO. Quali argomenti puoi fornire per affermare il contrario?
    I costrutti oop di php e java sono praticamente gli stessi. Imho, la differenza è che con php è più facile.
    Ultima modifica di .Kurt; 30-01-2015 a 22:40

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    110
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    Sarà pure vero che php non è nato come linguaggio orientato ad oggetti, ma con php5 ora lo è. Possiamo pure dire tranquillamente che ha un un decente supporto per oop. O per essere più precisi, non puoi dire che php è un pessimo linguaggio OO. Quali argomenti puoi fornire per affermare il contrario?

    Imparere l'oop con il php è praticamente impossibile (si pensi che il core di wp è ancora fatto con il procedurale).Trovare esempi,script o altro sulla oop in php è ancora più impossibile. Il 99% della OOP è per Java. Molti consigliano di studiarsi prima il Java e poi il Php. Ma a questo punto studio il Java e buonanotte.

    Basta confrontare un qualsiasi manuale sul Php e uno sul Java per rendersene conto, o le varie richieste che spesso si leggono su questo forum.
    Per non parlare di asp.net,dove trovi quintali di documentazione in italiano
    Ultima modifica di Lucciano; 30-01-2015 a 22:50

  9. #9
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    si pensi che il core di wp è ancora fatto con il procedurale
    Ma cosa significa? Il fatto che wp non sia un esempio di OOAD non prova niente. Se trovi un linguaggio che ti obbliga a programmare bene, fammi un fischio. Nessuno nega che nella comunità di php, più di altri ecosistemi, ci siano molte cavolate, molti tutorial fatti male, molte informazioni datate, lo dico io per primo, ma dire che
    Trovare esempi,script o altro sulla oop in php è ancora più impossibile.
    è una cavolata. Soprattutto quando nella stessa pagina ti è stato linkato symfony2 ad esempio.
    Il 99% della OOP è per Java.
    What?
    Molti consigliano di studiarsi prima il Java e poi il Php.
    Qui c'è poco da discutere, penso che sia una questione di preferenze. Per come la penso io php è molto più semplice di java, anche se purtroppo... bhè, è php. Dal mio punto di vista ritengo che convenga un primo approccio con php.
    Basta confrontare un qualsiasi manuale sul Php e uno sul Java per rendersene conto,
    Ci saranno pure tante cose decenti in php quante le dita della mia mano, ma una di queste è proprio la documentazione abbondante di php. Almeno, per cortesia, non negategli questo punto di forza.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    110
    Si.....c'è talmente tanta documentazione che un giorno si e l'altro pure vedo post che chiedono dove trovare esercizi,manuali ecc in Php oop.

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.