Ciao ragazzi! Sto studiando PHP OOP, e sto provando a riscrivere il mio sito web utilizzando le classi, ora ho scritto la mia prima classe, e mi sembra tutto strano, ancora non riesco quando dichiarare la visibilità(scope) delle proprietà, se utilizzare gli scope anche dentro la classe. Cmq essendo la mia prima classe è normale che ho i primi problemi di principiante e le prime insicurezze. Passo al problema:
Ho la pagina di iscrizione dove si inseriscono tutti i dati. Per il controllo dei dati inseriti ho creato un file a parte con una classe al'interno(per piacere mi consigliate anche se gli scope vanno dichiarati in questo modo?). Il file l'ho chiamato check_registation_class.php ed il codice (scritto male) è il seguente:
Codice PHP:
<?php
class Checkdata
{
define("ERRORE1", "ERRORE: Devi completare tutti i campi obbligatori.");
define("ERRORE2", "ERRORE: Username dev'essere di almeno 3 caratteri e inferiore a 30 caratteri.");
define("ERRORE3", "ERRORE: La password dev'essere di almeno 5 caratteri.");
define("ERRORE4", "ERRORE: Il campo password dev'essere uguale al campo di conferma password.");
define("ERRORE5", "ERRORE: L'email inserita non è corretta, inserire una email valida.");
define("ERRORE6", "ERRORE: Il campo email dev'essere uguale al campo di conferma email.");
define("ERRORE7", "ATTENZIONE: Username inserito è già stato utilizzato da un altro utente, per piacere inserisci un altro Username.");
public $numberr = 0;
public $code_error = "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse; padding-left: 20px;'>";
public $code_error .= "<tr>";
public $code_error .= "<td width='5%' valign='center'>";
public $code_error .= "[img]../immagini/error.jpg[/img]";
public $code_error .= "</td>";
public $code_error .= "<td width='95%'>";
public $code_error .= "[b]<font face='Verdana, Arial, Helvetica, sans-serif' color='#990000' style='font-size: 11px'>";
public $code_error .= ERRORE.$this->numberr;
public $code_error .="</font>[/b]";
public $code_error .="</td>";
public $code_error .="</tr>";
public $code_error .="</table>";
private $username, $email, $cemail, $password, $cpassword;
public function checknow($username, $email, $cemail, $password, $cpassword)
{
if($this->username == "" || $this->email == "" || $this->cemail == "" || $this->password == "" || $this->cpassword == "")
{
$this->numberr = 1;
return $this->code_error;
}
if(strlen($this->username) < 3 || ($this->username) > 30)
{
$this->numberr = 2;
return $this->code_error;
}
if(strlen($this->password) < 5)
{
$this->numberr = 3;
return $this->code_error;
}
if(strcmp($this->password,$this->cpassword) != 0)
{
$this->numberr = 4;
return $this->code_error;
}
if(!eregi("^[a-z0-9][_\\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\\.)+([a-z]{2,4})", $this->email))
{
$this->numberr = 5;
return $this->code_error;
}
if(strcmp($this->email,$this->cemail) != 0)
{
$this->numberr = 6;
return $this->code_error;
}
require_once("mysql_class.php");
$dbmysql = new DbMysql();
$dbmysql->usock();
private $query = "SELECT user_username FROM user WHERE user_username='".mysql_real_escape_string ($this->username)."' ";
private $result = mysql_query($this->query) or die(mysql_error());
private $num_res = mysql_num_rows($result);
if($this->num_res == 1)
{
$this->numberr = 7;
return $this->code_error;
}
}
}
$checkdata = new Checkdata(); //Questa non so se posso dichiararla direttamente nel file dove includo la classe
?>
Quando apro la pagina ricevo il seguente errore:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /web/htdocs/www.nomesito.it/home/class/check_registation_class.php on line 4
Per piacere mi fate capire dove sbaglio? Grazie