Al een aantal dagen ben ik gefrusteerd op een stukje php code welke ik niet kan oplossen.
Het gaat om de volgende error:
Het stukje in de config.php file:PHP Code:
Catchable fatal error: Object of class DbClass could not be converted to string in /home/paul/domains/domainnaam.nl/public_html/config.php on line 15
Het stukje op de site zelf (editprofile.php):PHP Code:
function handle_on_error($e_number, $e_message, $e_file, $e_line, $err_vars) {
$error_message = "<strong>Errno:</strong>" . $e_number . "\n<br />";
$error_message .= "<strong>Bestand:</strong> " . $e_file . "\n<br />";
$error_message .= "<strong>Regel(s):</strong> " .$e_line . " \n<br />";
$error_message .= "<strong>Bericht:</strong> " . $e_message . "\n<br />";
$error_message .= "<strong>Datum en Tijd:</strong> ". date('j-n-Y H:i:s') . "\n<br />";
$error_message .= "<strong>Errvars</strong><br /><pre>";
foreach($err_vars as $val)
{
$error_message .= $val . "<br />";
}
$error_message .= "</pre>";
$headers = 'From: noreply@domeinnaam.nl' . "\r\n";
$headers .= 'Reply-To: noreply@domeinnaam.nl' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
error_log($error_message, 1, 'contact@domeinnaam.nl', $headers);
echo "<strong>Excuses:</strong>";
echo "Er is iets mis gegaan, de webmaster(s) zijn op de hoogte gesteld. Exuses voor het ongemak <br />";
return true;
}}
Het db.class.php:PHP Code:
elseif(isset($_POST['EditAva'])){
if(isset($_FILES['bestand'])){
// Te groot bestand?
if($_FILES['bestand']['size'] > 102400){
echo "Het bestand is <strong>".$_FILES['bestand']['size']."</strong>, het maximale toegstane is <strong>100k</strong></p><br />
}
else{
// MIME-Type correct?
if( $_FILES['bestand']['type'] == "image/gif" ||
$_FILES['bestand']['type'] == "image/png" ||
$_FILES['bestand']['type'] == "image/pjpeg" ||
$_FILES['bestand']['type'] == "image/jpg" ||
$_FILES['bestand']['type'] == "image/x-png" ||
$_FILES['bestand']['type'] == "image/jpeg")
{
// Extentie correct?
$rEFileTypes = "/^\.(jpg|jpeg|gif|png|){1}$/i";
if(preg_match($rEFileTypes, strrchr($_FILES['bestand']['name'], '.'))){
$size = getimagesize($_FILES['bestand']['tmp_name']);
if($size[0] > 100 || $size[1] > 100){
echo "Het bestand is <strong>".$size[0]."px * ".$size[1]."px</strong>, het maximale toegstane is <strong>100px * 100px</strong>";
}
else{
// Is alles correct geupload?
if(is_uploaded_file($_FILES['bestand']['tmp_name']) == TRUE){
// Uploaden naar _ROOT_(http://www.domeinnaam.nl)/avatars/gebruikersid.ext
move_uploaded_file($_FILES['bestand']['tmp_name'], "avatars/" . $_SESSION['uId'] . strrchr($_FILES['bestand']['name'], '.'));
$str = $_SESSION['uId'] . strrchr($_FILES['bestand']['name'], '.');
$mysql->query("UPDATE member_accounts SET uAvatarUrl = '"._ROOT_."avatars/".$str."' WHERE uId = ".$_SESSION['uId']);
echo "<p>De avatar is succesvol ge�pload.";
}
else{
echo "Oeps, foutje? Probeer het later nog eens (uw avatar kan wellicht al geupload zijn!)";
}
}
}
// Extentie is niet correct
else{
echo "Het bestand is geen .png, .jpg of .gif bestand.";
}
}
// MIME-Type is niet correct
else{
echo "Het bestand is geen .png, .jpg of .gif bestand.";
}
}
}
// Plaatje is niet geupload
else{
echo "U heeft geen plaatje geselecteerd. Kies aub. een plaatje.";
}
}
PHP Code:
class DbClass
{
public $QueryTimer;
public $QueryCount;
public $QueryTimeArray = array();
public $QueryQueryArray = array();
public function __construct($DbHost = NULL, $DbUsername = NULL, $DbPassword = NULL, $DbDatabase = NULL)
{
if($DbHost != NULL && $DbUsername != NULL && $DbPassword != NULL && $DbDatabase != NULL)
{
$this->connect($DbHost, $DbUsername, $DbPassword, $DbDatabase);
}
}
public function connect($DbHost = NULL, $DbUsername = NULL, $DbPassword = NULL, $DbDatabase = NULL)
{
try
{
@$DbConnect = mysql_connect($DbHost, $DbUsername, $DbPassword);
if($DbConnect == FALSE)
{
$ErrorStr = 'No connection to database';
$ErrorStr .= '<br />Host: ' . $DbHost . '<br />';
$ErrorStr .= 'Username: ' . $DbUsername . '<br />';
throw new Exception($ErrorStr);
}
else
{
if(@mysql_select_db($DbDatabase, $DbConnect) == FALSE)
{
$ErrorStr = 'Could not select Database';
$ErrorStr .= '<br />Host: ' . $DbHost . '<br />';
$ErrorStr .= 'Username: ' . $DbUsername . '<br />';
$ErrorStr .= 'Database: ' . $DbDatabase;
throw new Exception($ErrorStr);
}
else
{
return TRUE;
}
}
}
catch(Exception $e)
{
$this->error($e);
echo "ab";
}
}
public function result($resource = NULL, $row = NULL)
{
try
{
if($resource != NULL)
{
if(is_resource($resource))
{
return mysql_result($resource, $row);
}
else
{
throw new Exception('Input is not a resource');
}
}
else
{
throw new Exception('Empty resource');
}
}
catch(Exception $e)
{
$this->error($e);
echo "ac";
}
}
public function query($input = NULL)
{
try
{
if($input != NULL)
{
$TimeStart = microtime(true);
$sQuery = mysql_query($input);
if($sQuery !== FALSE)
{
$TimeTotal = microtime(true) - $TimeStart;
$this->QueryTimer += $TimeTotal;
$this->QueryTimeArray[] = $TimeTotal;
$this->QueryQueryArray[] = $input;
$this->QueryCount++;
return $sQuery;
}
else
{
$ErrorString = 'Query failed to execute<br />';
$ErrorString .= mysql_error() . '<br />';
$ErrorString .= 'Query: ' . $input;
throw new Exception($ErrorString);
}
}
else
{
throw new Exception('Query is empty');
}
}
catch(Exception $e)
{
$this->error($e);
echo "ad";
}
}
public function num_rows($resource = NULL)
{
try
{
if($resource != NULL)
{
if(is_resource($resource))
{
return mysql_num_rows($resource);
}
else
{
throw new Exception('Input is not a resource');
}
}
else
{
throw new Exception('Empty resource');
}
}
catch(Exception $e)
{
$this->error($e);
echo "ae";
}
}
public function fetch($resource = NULL, $type = 'assoc')
{
try
{
if($resource != NULL)
{
if(is_resource($resource))
{
if($type == 'assoc')
{
return mysql_fetch_assoc($resource);
}
elseif($type == 'array')
{
return mysql_fetch_array($resource);
}
elseif($type == 'object')
{
return mysql_fetch_object($resource);
}
else
{
throw new Exception('Invalid type<br />Accepted values: assoc, array, object');
}
}
else
{
throw new Exception('Input is not a resource');
}
}
else
{
throw new Exception('Empty resource');
}
}
catch(Exception $e)
{
$this->error($e);
echo "af";
}
}
public function data_seek ($resource = NULL, $row = NULL)
{
try
{
if($resource != NULL)
{
if($row == NULL)
{
return mysql_data_seek($resource, 0);
}
elseif(is_numeric($row))
{
if($row >= $this->num_rows($resource) || $row < 0)
{
throw new Exception('Row number is outside the range of 0 - ' . $this->num_rows($resource));
}
else
{
return mysql_data_seek($resource, $row);
}
}
else
{
throw new Exception('Invalid row, row is not a number');
}
}
else
{
throw new Exception('Empty resource');
}
}
catch(Exception $e)
{
$this->error($e);
echo "ah";
}
}
public function affected($resource = NULL)
{
try
{
if(@mysql_affected_rows($resource) == FALSE)
{
throw new Exception('No query found with update or delete statements');
}
else
{
return mysql_affected_rows($resource);
}
}
catch(Exception $e)
{
$this->error($e);
echo "b";
}
}
public function insert_id($resource = NULL)
{
if($resource != NULL)
{
return mysql_insert_id($resource);
}
else
{
return mysql_insert_id();
}
}
public function escape($input = NULL)
{
try
{
if($input != NULL)
{
return mysql_real_escape_string($input);
}
else
{
throw new Exception('Empty string');
}
}
catch(Exception $e)
{
$this->error($e);
echo "ba";
}
}
public function querycount()
{
return $this->QueryCount == 0 ? 'no' : $this->QueryCount;
}
public function querytime()
{
return $this->QueryTimer == 0 ? 'no' : $this->QueryTimer;
}
public function querytime_array($input = NULL)
{
try
{
if(count($this->QueryQueryArray) != 0)
{
if($input == NULL)
{
$QueryString = '';
for($i = 0; $i < count($this->QueryQueryArray); $i++)
{
$QueryString .= $this->QueryQueryArray[$i] . ' <br /><br/>took ' . $this->QueryTimeArray[$i] . ' seconds<br /><br />';
}
return $QueryString;
}
else
{
if(is_numeric($input))
{
if(isset($this->QueryQueryArray[$input]))
{
return $this->QueryQueryArray[$input] . ' <br /><br/>took ' . $this->QueryTimeArray[$input] . ' seconds<br /><br />';
}
else
{
throw new Exception('Query #' . $input . ' does not exist');
}
}
else
{
throw new Exception('Invalid input, only numbers allowed');
}
}
}
else
{
return 'No query\'s executed';
}
}
catch(Exception $e)
{
$this->error($e);
echo "be";
}
}
private function error($e)
{
if(is_object($e))
{
$v = sprintf('<strong>Line:</strong> <em>%s</em><br /><strong>File:</strong><br /> <em>%s</em><br /><strong>Request-URI</strong><br /><em>%s</em><br /><strong>Error:</strong><br /> <em>%s</em>', $e->getLine(), $e->getFile(), $_SERVER['REQUEST_URI'], $e->getMessage());
}
elseif(is_string($e))
{
$v = $e;
}
echo sprintf('<div style="width:50%%;margin: 0px auto; text-align:center;padding:15px;border: 1px solid #962133; border-bottom: 2px solid #962133;background-color: #f75353;">%s</div><br /><br />', $v);
exit;
}
}
?>
Zelf heb ik in de queries gekeken, gedebugged met echo's..maar helaas ik kan nergens de fout ontdekken.
Alvast hartelijk dank!
Groeten,
Paul
- PHP error
-
30-05-2011, 17:42 #1
- Berichten
- 90
- Lid sinds
- 16 Jaar
PHP error
Laatst aangepast door PaulV : 30-05-2011 om 18:09
-
-
30-05-2011, 18:00 #2
- Berichten
- 25
- Lid sinds
- 14 Jaar
Re: PHP error
Stukje code waar $err_vars wordt aangemaakt?
-
30-05-2011, 18:10 #3
- Berichten
- 90
- Lid sinds
- 16 Jaar
Re: PHP error
Mijn fout, het config.php stukje is aangepast met de functie.
Bedankt voor het reageren!
-
30-05-2011, 19:19 #4
- Berichten
- 25
- Lid sinds
- 14 Jaar
Re: PHP error
http://php.net/manual/en/function.set-error-handler.php
The fifth parameter is optional, errcontext, which is an array that points to the active symbol table at the point the error occurred. In other words, errcontext will contain an array of every variable that existed in the scope the error was triggered in. User error handler must not modify error context.
Het zijn dus niet altijd variablen die je aan een string kunt plakken, dat gebeurd wel in de foreach. Zo zit er in die array dus een database object.Laatst aangepast door Ben Weiland : 30-05-2011 om 19:25 Reden: Al laat :)
-
31-05-2011, 16:30 #5
- Berichten
- 90
- Lid sinds
- 16 Jaar
Re: PHP error
Bedankt voor de reactie.
Zelf heb ik geen idee wat je hiermee bedoelt. Ik heb zelf als oplossing deze regel onder een /* */ gezet. Het probleem is opgelost hierdoor.
Toch bedankt :)
-
31-05-2011, 17:35 #6
- Berichten
- 25
- Lid sinds
- 14 Jaar
Re: PHP error
Het script is waarschijnlijk al wat ouder. In oudere versies van PHP kon je nog objecten printen en dan zou je deze error dus niet krijgen.
Je kan het oplossen door in je classes een __toString() functie te maken. Echter zou je dan in al je classes deze functie moeten zetten. Een andere oplossing is in de foreach te checken of $val een object is of niet.
Sowieso gaat er nog ergens iets fout in de code, anders wordt de error handler niet aangeroepen ;)
-
01-06-2011, 20:04 #7
- Berichten
- 2
- Lid sinds
- 13 Jaar
Re: PHP error
Kijk eens naar de kleurtjes :)
Moet zijn:
PHP Code:if($_FILES['bestand']['size'] > 102400)
{
echo 'Het bestand is <strong>'.$_FILES['bestand']['size'].'</strong>, het maximale toegstane is <strong>100k</strong></p><br />';
}
-
04-06-2011, 10:43 #8
- Berichten
- 90
- Lid sinds
- 16 Jaar
Re: PHP error
Bedankt, hoe kon ik dit niet zien! Het probleem is hiermee opgelost.
Nogmaals bedankt Bart :)
Groetjes,
Paul
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic