- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con CONST e classi static
-
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?
-
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...
-
Si, connessione e selezione senza problemi.
mi d questo erroreParse 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 **47Che 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 registrazioneCome posso fare???
Piuttosto avrei idea di non fare la funzione new_registration_vars() statica, ma publica....ma lo stesso non ci sono riuscito....
-
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 mentreCONST protected_pass='k';
sia correttoIn 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...
-
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;)