Jump to content

cannot redeclare class... with using only require_once()?


kondiz

Recommended Posts

I have 4 php files.

1. dbuser.php, declares class dbuser.php, no includes

2. dbobject.php, declares class dbobject.php, includes file 1.

3. casedetails.php, includes files 1 and 2

4. viewcase.php, includes files  1 and 3.

 

When I try to run file 4, i get cannot redeclare class dbuser.php - error

 

Even every require is followed by _once, but I still get "Cannot redeclare class dbuser"-error when running file 4.  Full PHP-code below.

I tried also putting "if(!class_exists('dbuser')) { ... " around class dbuser declaration but I still got the same error..

 

Is this a bug in PHP?

 

I'm running version 5.x on apache 2

 

Thanks!

 

1. dbuser.php

<?PHP

//$time = round(microtime(), 3); 

session_start();

require_once("settings.php"); //this is just simple array



class dbuser 
{

//Constructor
function __construct($username=NULL, $password=NULL, $cookies=FALSE) {
	//Yhdistet&#65533;&#65533;n tietokantaan ja k&#65533;ynnistet&#65533;&#65533;n sessio
	require_once("dbconnect.php");

	//Jos ei annettu parametrein&#65533; kayttajanimea ja salasanaa
	if (!isset($username) | !isset($password)) {

		//Jos salasana ja kayttaja tallennettu SESSION variableen
		if (isset($_SESSION['user']['email']) && $this->checkFingerprint($_SESSION['user']['fingerprint'])) {

			$this->logged = TRUE;

			foreach($_SESSION['user'] as $key => $value) {

				$this->$key=$value;

			}

		//Jos salasana ja kayttaja tallennettu kekseihin
		} elseif ( isset($_COOKIE['email']) && isset($_COOKIE['password']) ) {

			$this->logged = ($this->login($_COOKIE['email'], $_COOKIE['password'], FALSE, TRUE));

		}  	

	//Jos annettu parametrein&#65533; knimi ja pwd
	} else {

		$this->logged = ($this->login($username, $password, $cookies, FALSE));

	}

//Costructor loppuu
}

//Kirjautuu sisaan, ottaa parametreina knimen ja pwd:n sek&#65533; tallennetaanko kekseihin, sa sen onko pwd kryptattu valmiiksi
public function login($username, $password, $cookies=FALSE, $precrypted=FALSE) {

global $settings;

if ($precrypted) {

	$password = mysql_real_escape_string($password);

} else {

	$password = sha1($password);	

}

$username = mysql_real_escape_string($username);

//MySQL query
$time = time();
$loginQuery = "SELECT * FROM users WHERE email='$username' AND salasana='$password' AND aktiivinen='1' AND (vanhenee>'$time' OR vanhenee='')";

$fprint = $this->createFingerprint();

if($precrypted) {

	$loginQuery .= " AND fingerprint='$fprint'"; 
}

$result = mysql_query($loginQuery) or trigger_error(mysql_error);
$login = mysql_num_rows($result) or trigger_error(mysql_error());

if ($login != 1) {

	setcookie("email",'',-100000, "/");
	setcookie("password",'',-100000, "/");

	mysql_close();
	session_destroy();

	return FALSE;

} else {

$result = mysql_fetch_assoc($result);

foreach ($result as $field => $value) {

	$this->$field=$value;
	$_SESSION['user'][$field] = $value;
}


$update = "UPDATE users SET kirjautunut='" . time() . "' WHERE id='" . $this->id . "'";
mysql_query($update) or trigger_error(mysql_error());

$update = "UPDATE users SET fingerprint='" . $fprint . "' WHERE id='" . $this->id . "'";
mysql_query($update) or trigger_error(mysql_error());

$this->kirjautunut=time();

$_SESSION['user']['kirjautunut'] = time();


if ($cookies) {

	setcookie("email",$username,($settings['REMEMBER_LOGIN_DURATION'] + time()), "/");
	setcookie("password",$password,($settings['REMEMBER_LOGIN_DURATION'] + time()), "/");

}

return TRUE;

}

}

public function adduser($values) {

	if ($this->logged) {

		$insert = "INSERT INTO users (";
		$vals = " VALUES(";

		$values['salasana'] = sha1($values['salasana']);

		foreach($values as $key => $value) {

			$insert .= mysql_real_escape_string($key) . ', ';
			$vals .= "'" . mysql_real_escape_string($value) . "', ";

		}

		$insert = substr($insert, 0, -2);
		$vals = substr($vals , 0, -2);

		$insert .= ')';
		$vals .= ')';

		$insert .= $vals;

		mysql_query($insert) or trigger_error(mysql_error());		

		return TRUE;

	} else {

		return FALSE;

	}


}


public function getusers($where=NULL, $order=NULL, $desc=NULL) {

$query = "SELECT * FROM users";

if (isset($where)) {

	$query .= " WHERE "; 

	foreach($where as $column => $value) {

	$query .= $column . " = '" .  $value . "' AND ";

	}

	$query = substr($query, 0 ,-4);

}

if (isset($order)) {

	$query .= " ORDER BY " . $order . " ";

} 

if (isset($desc)) {

	$query .= 'DESC';

}

$values = mysql_query($query) or trigger_error(mysql_error());

$counter = 0;

while ($row = mysql_fetch_assoc($values)) {

	foreach ($row as $key => $value) {

		$return[$counter][$key] = $value; 


	}

	$counter++;

}


return $return;

}

public function update($id, $data) {

	$insert = "UPDATE users SET ";

		foreach($data as $key => $value) {

			$insert .= $key . '=';
			$insert .= "'" .$value . "', ";

		}

		$insert = substr($insert, 0, -2);

		$insert .= " WHERE id = '" . $id . "'" ;
		unset($data['id']);

		mysql_query($insert) or trigger_error(mysql_error());


}

public function remove($id) {

	$rem = "DELETE FROM users WHERE id=$id LIMIT 1";

	mysql_query($rem) or trigger_error(mysql_error());	

}

private function createFingerprint() {

	$print = "NJIARDL";
	$print .= $_SERVER['HTTP_USER_AGENT'];
	$print .= $_SERVER['REMOTE_ADDR'];

	return md5($print);	

}

private function checkFingerprint($real) {

	$print = $this->createFingerprint();

	if ($real == $print) {

		return TRUE;

	} else {

		return FALSE;

	}

}



// Class dbuser loppuu
}

 

2. dbobject.php

 

<?PHP
//$time = round(microtime(), 3); 

require_once("dbuser.php");

....

lots of irrelevant code...


class dbobject { ....
?>

 

3.

 

<?PHP

require_once('../PHPcore/dbuser.php'); // this causes the error somehow... 

$user = new dbuser();

if(!$user->logged) {

	Header("Location:index.php");

} 

...

Lots of irrelevant code..  

 

4. I tried running this file when got the error...

<?PHP

session_start();



require_once("PHPcore/dbuser.php");



$user = new dbuser();



if(!$user->logged) {



Header("Location:index.php");

} 


                   require_once("views/casedetails.php");

 

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.