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");

 

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.