Class wordt niet gezien

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Ik krijg de navolgende melding:
-- Fatal error: Class 'slideshow' not found in --
ben er nu een tijdje mee bezig, maar ik zie de fout niet.
Tevens de vraag of ik
-- header('HTTP/1.1 500 Internal Server Error'); --
kan veranderen in
<meta http-equiv="refresh" content="0;URL=HTTP/1.1 500 Internal Server Error" />

alvast bedankt voor het meedenken.

PHP:
include ("../core/lib.inc.php");

$conn = mysqli_connect( $db['host'], $db['user'], $db['pw'], $db['db'] );
if(mysqli_connect_errno($conn)) 
{ 
    trigger_error('Fout bij verbinden met database: '.mysqli_connect_error()); 
} else {
    //echo "Verbinding gemaakt";
    }

if (isset($_GET['img']) == "")
{
$_GET['img'] = 1;
}
if (isset($_GET['img']) <> "")
{ 
$rid = $_GET['img'];
}

// init slideshow class
$ss = new slideshow($err);
if (($err = $ss->init()) != '')
{
	header('HTTP/1.1 500 Internal Server Error');
	echo $err;
	exit();
}
// get image files from directory
$ss->get_images($conn);
// set variables, done.
list($curr, $caption, $first, $prev, $next, $last, $Omschrijving, $positie, $rid) = $ss->run();
/*
	slideshow class, can be used stand-alone
*/
class slideshow
{
	private $files_arr = NULL;
	private $err = NULL;
	
	public function __construct(&$err)
	{
		$this->files_arr = array();
		$this->err = $err;
	}
	public function init()
	{
		// run actions only if img array session var is empty
		// check if image directory exists
		if (!$this->dir_exists())
		{
		  echo $this->dir_exists();
			return 'Mist directory';
		}
		return '';
	}
	public function get_images($conn)
	{
		// run actions only if img array session var is empty
		if (isset($_SESSION['imgarr']))
		{
			$this->files_arr = $_SESSION['imgarr'];
	}
		else
	{
	    $sql= "SELECT * from omschrijving1";
            $result = mysqli_query($conn,$sql);
           
            if($result){
               while($row=mysqli_fetch_assoc($result)){
                   $this->files_arr[] = $row;
                }
            
            }else{
                echo "Fout";
            }
                $_SESSION['imgarr'] = $this->files_arr;
           
	    }
	}
	public function run()
	{
		
        $curr = $this->files_arr[0]['ID'];
	$positie = $this->files_arr[0]['positie'];
	$last = count($this->files_arr);
        
		if (isset($_GET['img']))
		{
			if (preg_match('/^[0-9]+$/', $_GET['img'])) $curr = (int)  $_GET['img'];
            
			if ($curr <= 0 || $curr > $last) $curr = 1;
		}
		if ($curr <= 1)
		{
			$prev = $curr;
			$next = $curr + 1;
		}
		else if ($curr >= $last)
		{ 
            $prev = $last - 1;
		    $next = $last;
		}
		else
		{
			$prev = $curr - 1;
			$next = $curr + 1;
		}
                 $positie = $this->files_arr[$curr - 1]['positie'];
		 $Omschrijving = $this->files_arr[$curr - 1]['fotoinfo'];
        	 $rid = $this->files_arr[$curr - 1]['ID']; 
        	 $this->files_arr[$curr - 1]['positie'];
        
        // line below sets the caption name...
        $ext = ".JPG";
		$caption = str_replace(' ', ' ', $this->files_arr[$curr - 1]['fotonr']);
		$caption = str_replace(' ', ' ', $caption);
		$caption = preg_replace('/\.(jpg|jpe?g|gif|png|JPG)$/i', '', $caption);
		$caption = $caption.$ext;
		return array($this->files_arr[$curr - 1]['fotonr'], $caption, 1, $prev, $next, $last, $Omschrijving, $positie, $rid);
	}
	private function dir_exists()
	{
		return file_exists(foto);
	}
	
}
 
Waarom zou je een header willen veranderen? Dit wat je nu hebt is toch goed zo?

Verder kan je script de class slideshow niet vinden. Deze kan je beter vooraf includeren vanuit een eigen bestand, zodat je script niet vervuld wordt met functies en classes.
 
Laatst bewerkt:
probeer volgende code eens
(maak eerst een backup van je huidig bestand)
PHP:
<?php

include ("../core/lib.inc.php");
 $conn = mysqli_connect( $db['host'], $db['user'], $db['pw'], $db['db'] );
if(mysqli_connect_errno($conn)){ 
    trigger_error('Fout bij verbinden met database: '.mysqli_connect_error()); 
} else {
    //echo "Verbinding gemaakt";
}
 
if (isset($_GET['img']) == ""){ $_GET['img'] = 1;}
if (isset($_GET['img']) <> ""){ $rid = $_GET['img'];}
 
// init slideshow class
$ss = new slideshow($err);
if (($err = $ss->init()) != ''){
    if (!headers_sent()){
		    header('HTTP/1.1 500 Internal Server Error');
            die('So if you read this i do not work today');
	}else {
			die('My sorry i have send some line text to the brower and it means end of header so now i am in content');
	}
    echo $err;
    exit();
}
// get image files from directory
$ss->get_images($conn);
// set variables, done.
list($curr, $caption, $first, $prev, $next, $last, $Omschrijving, $positie, $rid) = $ss->run();
/*
    slideshow class, can be used stand-alone
*/
class slideshow{
    private $files_arr = NULL;
    private $err = NULL;    
    public function __construct(&$err)    {
        $this->files_arr = array();
        $this->err = $err;
    }
    public function init()    {
        // run actions only if img array session var is empty
        // check if image directory exists
        if (!$this->dir_exists())        {
           echo $this->dir_exists();
            return 'Mist directory';
        }
        return '';
    }
    public function get_images($conn)    {
        // run actions only if img array session var is empty
        if (isset($_SESSION['imgarr']))        {
            $this->files_arr = $_SESSION['imgarr'];
    }else{
        $sql= "SELECT * from omschrijving1";
            $result = mysqli_query($conn,$sql);
            if($result){
               while($row=mysqli_fetch_assoc($result)){
                   $this->files_arr[] = $row;
               }
            }else{
                echo "Fout";
            }
            $_SESSION['imgarr'] = $this->files_arr;
        }
    }
    public function run(){        
        $curr = $this->files_arr[0]['ID'];
        $positie = $this->files_arr[0]['positie'];
        $last = count($this->files_arr);
        if (isset($_GET['img'])){
            if (preg_match('/^[0-9]+$/', $_GET['img'])) $curr = (int)  $_GET['img'];
            
            if ($curr <= 0 || $curr > $last) $curr = 1;
        }
        if ($curr <= 1){
            $prev = $curr;
            $next = $curr + 1;
        }elseif ($curr >= $last){ 
            $prev = $last - 1;
            $next = $last;
        }else{
            $prev = $curr - 1;
            $next = $curr + 1;
        }
        $positie = $this->files_arr[$curr - 1]['positie'];
        $Omschrijving = $this->files_arr[$curr - 1]['fotoinfo'];
        $rid = $this->files_arr[$curr - 1]['ID']; 
        $this->files_arr[$curr - 1]['positie'];
        // line below sets the caption name...
        $ext = ".JPG";
        $caption = str_replace(' ', ' ', $this->files_arr[$curr - 1]['fotonr']);
        $caption = str_replace(' ', ' ', $caption);
        $caption = preg_replace('/\.(jpg|jpe?g|gif|png|JPG)$/i', '', $caption);
        $caption = $caption.$ext;
        return array($this->files_arr[$curr - 1]['fotonr'], $caption, 1, $prev, $next, $last, $Omschrijving, $positie, $rid);
    }
    private function dir_exists(){
        print __FILE__.'what do you means foto i do not understand foto is it a variable';
        //return file_exists(foto);
    }
}
?>
 
Volgens mij kan je geen 50X in een eigen html of php pagina afvangen. Het zijn namelijk server errors. Je kan misschien wel de 'standaard error pagina' van de host provider aanpassen.
 
In htaccess bestaat ook ErrorDocument, die onzichtbaar verwijst naar een error-pagina naar keuze. :)

Dit geldt onder meer voor:
401 - Geen toegang
403 - Geen toegang tot bestand / map
404 - Niet gevonden
500 - Server error
 
Laatst bewerkt:
Yep, zelf heb ik alleen ErrorDocument 404 in htaccess.
Als de oorzaak van een "500 interne serverfoot" een webserver is die geen pagina's kan leveren, dan werkt ErrorDocument 500 niet ;)

Aanv.
Het 500 voorbeeld van @php4u werkt idd volgens de Apache website met ErrorDocument 500
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan