Login class geeft geen fout
Als er vragen zijn over het script, omdat iets niet duidelijk is, stel ze gerust!
Ik heb de functies die bij het installeren niet worden gebruikt eruit gehaald.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?PHP
error_reporting(E_ALL);
class UserAuthorization extends MySQLi{
private $MySQL_HOST="127.0.0.1";
private $MySQL_USER="root";
private $MySQL_PASS="";
private $MySQL_DB ="cms_db";
private $ADMIN_MAIL="[email protected]";
//If you want to recieve emails from all the errors, just edit the value below to true (without quotes!)
private $mail_admin_on_error=false;
private $instanceName="Website name for error logging (so the admin knows whats site to look at!)";
##########################
private $dbCon; ##
private $RemAdr; ##
private $cookieData; ##
public $returndata; ##
##########################
public function __construct($todo,$data=""){
$this->RemAdr=md5($_SERVER['REMOTE_ADDR']);
$this->cookieData = (isset($_COOKIE[$this->RemAdr])) ? $_COOKIE[$this->RemAdr] : "";
parent::__construct($this->MySQL_HOST, $this->MySQL_USER, $this->MySQL_PASS, $this->MySQL_DB);
if(mysqli_connect_error()){
$this->LogWrite("[".date("d-m-Y H:i:s")."] -> 'Connection error (".mysqli_connect_errno().") ".mysqli_connect_error())."\r\n";
}
$this->$todo($data);
}
public function getdata(){
return $this->returndata;
}
private function LogWrite($data){
if($this->mail_admin_on_error){
mail($this->ADMIN_MAIL,"Error at webserver [".$this->instanceName."]",$data);
}
$fh=fopen("errorLog.txt","a");
if(!fwrite($fh,$data)){
$this->returndata="There went something wrong, a mail has been sent to the Administrator.";
exit();
}else{
die("There was an error, and the errorlog could not be updated. The server administrator has been mailed.");
}
}
private function executeQuery($sql,$type){
$sql=parent::escape_string($sql);
if($type==="get"){
if($res=parent::query($sql)){
$rows=parent::field_count($res);
return $rows;
}else{
$this->LogWrite(stripslashes("[".date("d-m-Y H:i:s")."] -> 'Could not execute mysql \"get\" query'\r\n"));
exit();
return false;
}
}
elseif($type==="send"){
if($res=parent::query($sql)){
$this->LogWrite(stripslashes("[".date("d-m-Y H:i:s")."] -> 'Could not execute mysql \"send\" query'\r\n"));
exit();
return false;
}else{
return true;
}
}else{
$this->LogWrite("[".date("d-m-Y H:i:s")."] -> 'Wrong parameter used on executeQuery function'\r\n");
exit();
return false;
}
}
//...
private function install($data){
$sql1="INSERT INTO tblUsers VALUES('Administrator','".md5($data)."','0')";
$sql2="INSERT INTO tblLoggedIn VALUES('".$this->RemAdr."',1,'".date("Y-m-d H:i:s",strtotime("+3 week"))."')";
if($this->executeQuery($sql1,"send")&&$this->executeQuery($sql2,"send")){
setcookie($this->RemAdr,true,time()+604800);
$this->returndata="Installation succesful!";
return true;
}else{
$this->returndata="Installation failed...";
return false;
}
}
}
?>
error_reporting(E_ALL);
class UserAuthorization extends MySQLi{
private $MySQL_HOST="127.0.0.1";
private $MySQL_USER="root";
private $MySQL_PASS="";
private $MySQL_DB ="cms_db";
private $ADMIN_MAIL="[email protected]";
//If you want to recieve emails from all the errors, just edit the value below to true (without quotes!)
private $mail_admin_on_error=false;
private $instanceName="Website name for error logging (so the admin knows whats site to look at!)";
##########################
private $dbCon; ##
private $RemAdr; ##
private $cookieData; ##
public $returndata; ##
##########################
public function __construct($todo,$data=""){
$this->RemAdr=md5($_SERVER['REMOTE_ADDR']);
$this->cookieData = (isset($_COOKIE[$this->RemAdr])) ? $_COOKIE[$this->RemAdr] : "";
parent::__construct($this->MySQL_HOST, $this->MySQL_USER, $this->MySQL_PASS, $this->MySQL_DB);
if(mysqli_connect_error()){
$this->LogWrite("[".date("d-m-Y H:i:s")."] -> 'Connection error (".mysqli_connect_errno().") ".mysqli_connect_error())."\r\n";
}
$this->$todo($data);
}
public function getdata(){
return $this->returndata;
}
private function LogWrite($data){
if($this->mail_admin_on_error){
mail($this->ADMIN_MAIL,"Error at webserver [".$this->instanceName."]",$data);
}
$fh=fopen("errorLog.txt","a");
if(!fwrite($fh,$data)){
$this->returndata="There went something wrong, a mail has been sent to the Administrator.";
exit();
}else{
die("There was an error, and the errorlog could not be updated. The server administrator has been mailed.");
}
}
private function executeQuery($sql,$type){
$sql=parent::escape_string($sql);
if($type==="get"){
if($res=parent::query($sql)){
$rows=parent::field_count($res);
return $rows;
}else{
$this->LogWrite(stripslashes("[".date("d-m-Y H:i:s")."] -> 'Could not execute mysql \"get\" query'\r\n"));
exit();
return false;
}
}
elseif($type==="send"){
if($res=parent::query($sql)){
$this->LogWrite(stripslashes("[".date("d-m-Y H:i:s")."] -> 'Could not execute mysql \"send\" query'\r\n"));
exit();
return false;
}else{
return true;
}
}else{
$this->LogWrite("[".date("d-m-Y H:i:s")."] -> 'Wrong parameter used on executeQuery function'\r\n");
exit();
return false;
}
}
//...
private function install($data){
$sql1="INSERT INTO tblUsers VALUES('Administrator','".md5($data)."','0')";
$sql2="INSERT INTO tblLoggedIn VALUES('".$this->RemAdr."',1,'".date("Y-m-d H:i:s",strtotime("+3 week"))."')";
if($this->executeQuery($sql1,"send")&&$this->executeQuery($sql2,"send")){
setcookie($this->RemAdr,true,time()+604800);
$this->returndata="Installation succesful!";
return true;
}else{
$this->returndata="Installation failed...";
return false;
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door SilverWolf NL
schopje?
Dan weet je zeker dat het zeker dat de errors ook te zien zijn.
Edit:
Ik ben er gedeeltelijk uit. Het probleem was dat de methode parent::query(); ook true teruggeeft, als er een fout in de sql zit. parent::error(); werkt niet, en ik heb een omweg gevonden via:
Code (php)
Toen bleek dat ik real_escape op de verkeerde plaats had staan (alle quotes van de strings worden nu ook geescaped), dus heb ik die regel gecomment. Toen kreeg ik de echte error: ik was blijkbaar aan het slapen toen ik de code geschreven had, omdat ik een veld te weinig had gedaan in de query :P.
Probleem dus opgelost... (moet wel nog even die errorafhandeling anders maken ;) )
Gewijzigd op 01/01/1970 01:00:00 door SilverWolf NL
Alvast bedankt voor de hulp ;)
By reference doorgeven kan wel, en is redelijk normaal in PHP (veel functies doen het voor extra informatie)
Dankje, dat is precies wat ik zocht!