Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 56
  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    POST dentro __construct

    mi sto avvicinando alla programmazione ad oggetti.
    mi son letto l'intero guida qui presente su html.it e ora sto provando a buttar giù un pò di codice

    partiamo da una classe per il login

    Codice PHP:
    <?php

    class Login {

        function 
    __construct() {

            
    $nickname mysql_real_escape_string($_POST['nickname']);
            
    $password mysql_real_escape_string($_POST['password']);

            if (isset(
    $nickname) AND isset($password)) {

                
    $this->effettuaLogin($nickname$password);

            }

        }

        function 
    __destruct() {

        }


        private function 
    effettuaLogin($nickname$password) {

        
    // codice login

        
    }

    }

    ?>
    e la pagina dove vengono inviati tramite post i dati del login

    Codice PHP:
    <?php

    include "Login.class.php";

    $obgLogin = new Login;

    ?>
    come faccio a far leggere i dati inviati tramite post alla classe?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    hai riscontrato che non ti legge il valore di $_POST in quella posizione?

  3. #3
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    Originariamente inviato da eiyen
    hai riscontrato che non ti legge il valore di $_POST in quella posizione?
    si dentro __construct non mi legge $_POST

  4. #4
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Come hai verificato la mancata lettura? È possibile vedere anche il codice della form che invia i dati in post?

  5. #5
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    allora facendo in questo modo funziona e mi effettua il login

    pagina ricezione dati post
    Codice PHP:
    $objLogin = new Login;
    $objLogin->effettuaLogin($_POST['nickname'], $_POST['password']); 
    classe
    Codice PHP:
    class Login {

        public function 
    __construct() {

        }

        public function 
    __destruct() {

        }


        public function 
    effettuaLogin($nickname$password) {
        
    // funzione login
        
    }


    mentre come facevo prima no..

    il form è semplicemente

    codice:
    <form method="post" action="controllo-login.php">
    Nickname <input type="text" name="nickname" value="" /> 
    Password <input type="password" name="password" value="" /> 
    <input type="submit" name="login" value="Login" />
    </form>

  6. #6
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    se metto

    Codice PHP:
    private effettuaLogin($nickname$password
    non mi legge i dati POST dentro __construct

    mentre se metto

    Codice PHP:
    public effettuaLogin($nickname$password
    mi legge i dati POST dentor __construct

    come mai?

  7. #7
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Mi puoi far vedere i var_dump che hai usato per affermare ciò? Il codice inizialmente postato in teoria deve funzionare a meno che non ci sia un errore all'interno del metodo privato che non hai pubblicato.

  8. #8
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    ora funziona così da un momento all'altro...

    ecco il codice

    Codice PHP:
    class Login {

        public function 
    __construct() {

            if (
    $_POST['nickname'] == false) {

                echo 
    "ERRORE";
                exit;

            } else {

                
    $this->effettuaLogin($_POST['nickname'], $_POST['password']);

            }

        }

        public function 
    __destruct() {

        }


        private function 
    effettuaLogin($nickname$password) {
        }

    }

    ?> 
    Codice PHP:
    <?php

    include "Login.class.php";

    $objLogin = new Login;

    ?>

  9. #9
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Chissà cosa avevi sbagliato, comunque, giusto per completezza il metodo che stai usando è errato.
    Innanzitutto è meglio usare una isset per verificare l'esistenza dell'input, secondo è bene verificate che tutti gli input che ti aspetti vengano passati prima di dare errore ed in ultimo il secondo metodo che avevi adottato era quello migliore. Il costruttore non dovrebbe mai intercettare l'input ma semplicemente inizializzare l'oggetto.

  10. #10
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    Originariamente inviato da _debo
    Chissà cosa avevi sbagliato, comunque, giusto per completezza il metodo che stai usando è errato.
    e allora vediamo subito di sistemare

    Innanzitutto è meglio usare una isset per verificare l'esistenza dell'input,
    questo l'ho già fatto, era solo un esempio veloce questo che ho scritto qui

    secondo è bene verificate che tutti gli input che ti aspetti vengano passati prima di dare errore
    infatti controllo se sia il nickname che la password siano stati inviati, altrimenti do un errore (questo lo controllo direttamente però in "effettaLogin".
    L'esempio che ho mostrato qui con il controllo mi serviva solo per capire se arrivava il POST

    ed in ultimo il secondo metodo che avevi adottato era quello migliore. Il costruttore non dovrebbe mai intercettare l'input ma semplicemente inizializzare l'oggetto.
    per cui non è corretto così?

    Login.class.php
    Codice PHP:
    <?php

    class Login {

        public function 
    __construct() {

            
    $_POST['nickname'] = isset($_POST['nickname']) ? $_POST['nickname'] : "";
            
    $_POST['password'] = isset($_POST['password']) ? $_POST['password'] : "";

                
    $this->effettuaLogin($_POST['nickname'], $_POST['password']);

        }

        public function 
    __destruct() {

        }


        private function 
    effettuaLogin($nickname$password) {

        
    // funzione con i vari controlli

        
    }

    }

    ?>
    controllo-login.php
    Codice PHP:
    <?php

    include "Login.class.php";

    $objLogin = new Login;

    ?>

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