Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Script bricht nicht ab trotz exit()“

the_real_didi

Aktives Mitglied

Hallo zusammen,

ich brauch eure Hilfe. Habe angefangen mir eine DB-Klasse zu schreiben (aus Übungszwecken um es zu lernen. Ich weiß, es gibt fertige Klassen) ...

PHP:
<?php

class DB
{
    var $connection;
    var $db;
    var $query;

    private $sql="";
    private $host = "test";
    private $user = "test";
    private $passwort = "test";
    private $datenbank ="test";

    function DB($host, $user, $passwort, $datenbank)
    {
    	$this->host = $host;
    	$this->user = $user;
    	$this->passwort = $passwort;
		$this->datenbank = $datenbank;

    	if (!is_resource($this->connection))
		{
			errorlog('Constructor: connectDB wird aufgerufen.', 1);
			$this->connectDB();
		}
    }

    function connectDB()
    {
    	$this->connection = @mysql_pconnect($this->host, $this->user, $this->passwort);
    	if ($this->connection === FALSE)
		{
			errorlog('Verbindung zum Datenbankserver fehlgeschlagen', 1, $this->connection);
			$this->nixdb();
		}
		else
		{
			errorlog('function connectDB(): $this->opendb($this->datenbank);', 1);
    		$this->opendb($this->datenbank);
		}
    }

    function opendb($datenbank)
    {
    	if (is_resource($this->connection))
		{
			$this->db = @mysql_select_db($datenbank, $this->connection);
			if ($this->db === FALSE)
			{
				errorlog('Datenbank konnte nicht geöffnet werden', 1, $this->connection);
				$this->nixdb();
			}
		}
		else
		{
			errorlog('function opendb($datenbank): $this->connectDB();', 1);
			$this->connectDB();
		}

    }

    function query($sql)
    {
    	$this->sql = $sql;
    	if (is_resource($this->connection))
    	{
    		$this->versuche=0;
    		$this->query = @mysql_query($this->sql);
    		if ($this->query === FALSE)
    		{
    			errorlog('Ausführung Query nicht möglich.', 1, "sql=".$this->sql);
    		}
    	}
    	else
    	{
	    		$this->openDB($this->datenbank);
	    		if (is_resource($this->db))
	    		{
	    			$this->query($this->sql);
	    		}
    	}
    }

    function nixdb()
    {
    	if (!$_GET['page'] == "closeddown")
    	{
    		errorlog('function nixdb(): '.$_SERVER['PHP_SELF'].'?'.$_GET['page'], 1);
    		echo '<meta http-equiv="refresh" content="0; URL='.$_SERVER['PHP_SELF'].'?page=closeddown">';
    		exit();
    	}
    }
}
?>

...und habe da folgendes Problem. Die Klasse soll auf eine Seite weiterleiten, wenn keine Verbindung zur DB hergestellt werden kann. Das ganze funktioniert auch soweit. nur eigentlich soll nach dieser Weiterleitung die Abarbeitung des Scriptes mittels exit() abgebrochen werden. die abarbeitung der Funktion nixdb() wird bestimmt auch abgebrochen aber die Abarbeitung des aufrufenden Scriptes läuft leider weiter. ich würde das auch gern abbrechen damit ich nicht ewig viele aufrufe von Datenbank-funktionen durchführe.
 
B

bigbenny

Guest

AW: Script bricht nicht ab trotz exit()

jop die(); ist für mich auch die bessere variante...
obwohl ich glaube das das exit(); zu früh ist weiss es aber jetzt nicht genau
 

blackout

Schaf im Wolfspelz

AW: Script bricht nicht ab trotz exit()

die() ist eindeutig besser als exit().
  • Es benötigt ein Byte weniger im Quellcode
  • Es ist besser zu tippen, da nach jedem Buchstaben die Hand wechselt
  • Es klingt böser, exit müsste eigentlich heißen exit_please(), die dagegen die!()
So, nun wieder ernst: die() und exit() machen genau das selbe.

Achso, die Weiterleitung solltest du nicht per HTML (Meta-Refresh) machen sondern direkt per HTTP-Header "location: http://tar.get".
 
Zuletzt bearbeitet:

the_real_didi

Aktives Mitglied

AW: Script bricht nicht ab trotz exit()

Hatte mich für die <meta>-Variante entschieden, weil ich da weniger Probleme habe als mit der header-variante. da such ich mich immer dumm und dämlich wegen irgendwelcher ausgaben, die vorher sind. Wo liegt das Problem mit dem Meta? Die weiterleitung funktioniert ja.
 

gp812

Newbster

AW: Script bricht nicht ab trotz exit()

Hatte mich für die <meta>-Variante entschieden, weil ich da weniger Probleme habe als mit der header-variante. da such ich mich immer dumm und dämlich wegen irgendwelcher ausgaben, die vorher sind. Wo liegt das Problem mit dem Meta? Die weiterleitung funktioniert ja.
Die "Meta"-Weiterleitung kann man umgehen. php -header dagegen nicht.
 

blackout

Schaf im Wolfspelz

AW: Script bricht nicht ab trotz exit()

Dein Script sollte nirgends irgendwelche Ausgaben haben bevor du nicht alle Header geschrieben hast. Den Weiterleitungs-Code solltest du ohnehin am Anfang des Codes platzieren und danach ein die() setzen, damit nicht unnötig herumgerechnet wird.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.182
Beiträge
2.582.054
Mitglieder
67.254
Neuestes Mitglied
MKP
Oben