• User Attivo

    Problema con CONST e classi static

    Ciao ragazzi!
    Sto provando a costruire la nuova versione della mia newsletter.
    Ho deciso di usare le classi(ho comprato apposta un manuale).Purtroppo non sono ancora ferrato con le classi...
    Adesso pero mi trovo in un inghippo.Non riesco ad inserire alcuni dati nel database.Vi posto una parte del codice
    [php]class home_class{
    public $check;
    public $send_mail;
    CONST protected_pass;
    CONST date;
    CONST token;
    CONST id;
    CONST len;

    static function new_registration_vars(){
    //Password cryptata in SHA1 dopo MD5 e base64_encode
    self::protected_pass=sha1(md5(rand(), true));

     self::protected_pass=substr(self::protected_pass,0,9);
    

    //token.Chiave unica per ogni utente realizzata in md5 random
    self::token = md5(uniqid(rand(), true));
    //ID numerico utente utilizzato con crc32 random
    self::id = crc32(md5(uniqid(rand(), true)));//Crea il codice ID
    self::len = strlen($id)-1; //Calcola la Lunghezza dell'ID Random -1
    self::id = substr(self::id ,1,self::len);//conta dal secondo carattere(per evitare il negativo)
    //Dati di registrazione
    self::date = date("d/m/Y")." ".date("H:i");//La data della registrazione
    }
    static function new_user($mail,$user){
    global $db_prefix;
    $check = new check_istance();
    $check->user($user);
    $check->mail($mail);

    self::new_registration_vars();
    $ric = mysql_query("INSERT INTO ".$db_prefix."phpnewsletter_users(user,pass,mail,token,id,nome,cognome,gg,mm,aaaa,info,skin,stato,date,attivo,sito) VALUES ('$user','self::protected_pass','$mail','self::token','self::id','inattivo','inattivo',NULL,NULL,NULL,'inattivo','inattivo','inattivo','self::date','inattivo','inattivo')");
    [/php]Potreste aiutarmi?


  • User Attivo

    Ciao ilnetsurfer,
    bisognerebbe approfondire un po'... che errore ti da?

    Visto così mi viene di chiederti:
    la connessione e la selezione al db la fai (correttamente)?

    Dacci qualche altra info...
    :ciauz:


  • User Attivo

    Si, connessione e selezione senza problemi.
    mi d questo errore

    Parse error: syntax error, unexpected ';', expecting '=' in C:\Programmi\Apache Group\Apache\htdocs\FILE\newsletter\classi\home_class.php on line **39

    Che corrisponde a
    **CONST protected_pass;
    CONST date;
    CONST token;
    CONST id;
    CONST len;

    Ho assegnato un valore a ogni costante
    cosi:

    CONST protected_pass="k";
    CONST date="k";
    CONST token="k";
    CONST id="k";
    CONST len="k";

    e mi da questo errore:
    Parse error: syntax error, unexpected '=' in C:\Programmi\Apache Group\Apache\htdocs\FILE\newsletter\classi\home_class.php on line **47

    Che corrisponde a
    ** self::protected_pass=sha1(md5(rand(), true));

     self::protected_pass=substr(self::protected_pass,0,9);
    

    //token.Chiave unica per ogni utente realizzata in md5 random
    self::token = md5(uniqid(rand(), true));
    //ID numerico utente utilizzato con crc32 random
    self::id = crc32(md5(uniqid(rand(), true)));//Crea il codice ID
    self::len = strlen($id)-1; //Calcola la Lunghezza dell'ID Random -1
    self::id = substr(self::id ,1,self::len);//conta dal secondo carattere(per evitare il negativo)
    //Dati di registrazione
    self::date = date("d/m/Y")." ".date("H:i");//La data della registrazione

    Come posso fare???
    Piuttosto avrei idea di non fare la funzione new_registration_vars() statica, ma publica....ma lo stesso non ci sono riuscito....


  • User Attivo

    Non sono un asso delle classi e di php5 (const esiste solo da php5), ma mi pare che il primo errore sia imputabile al fatto che hai definito una costante senza dargli un valore. Credo infatti che

    CONST protected_pass;
    sia sbagliato mentre

    CONST protected_pass='k';
    sia corretto

    In secondo luogo ti rifersici ai valori const come se fossero degli attributi:

    self:: protected_pass=sha1(md5(rand(), true));

    Se non vado errato la costante la devi definire subito e non la puoi modificare. C'è un motivo preciso per il quale non hai utlizzato, ad esempio:

    private static $protected_pass;

    Considera che utilizzando la definizione private, gli attributi non sono richiamabili all'esterno...


  • User Attivo

    Dopo tante prove ho deciso di risolvere in questo modo:

    [PHP]class home_class{
    private $check;
    private $send_mail;
    private $len;
    private $id;
    private $protected_pass;
    private $date;
    private $row;
    function new_user($mail,$user){
    global $db_prefix;
    $this->check = new check_istance();
    $this->check->user($user,1);
    $this->check->mail($mail,1);
    //Password cryptata in SHA1 dopo MD5
    $this->protected_pass=sha1(md5(rand(), true));

     $this->protected_pass=substr($this->protected_pass,0,9);
    

    //token.Chiave unica per ogni utente realizzata in md5 random
    $this->token = md5(uniqid(rand(), true));
    //ID numerico utente utilizzato con crc32 random
    $this->id = crc32(md5(uniqid(rand(), true)));//Crea il codice ID
    $this->len = strlen($this->id)-1; //Calcola la Lunghezza dell'ID Random -1
    $this->id = substr($this->id ,1,$this->len);//conta dal secondo carattere(per evitare il negativo)
    //Dati di registrazione
    $this->date = date("d/m/Y")." ".date("H:i");//La data della registrazione

    $action = mysql_query("INSERT INTO ".$db_prefix."phpnewsletter_users
    (user,pass,mail,token,id,nome,cognome,gg,mm,aaaa,info,skin,stato,date,attivo,sito)
    VALUES
    ('$user','$this->protected_pass','$mail','$this->token','$this->id','inattivo','inattivo',NULL,NULL,NULL,'inattivo','inattivo','inattivo','$this->date','inattivo','inattivo')");

    if($action)
    {[/PHP]

    Non era il metodo che volevo utilizzare, ma comunque non fa niente;)