Weiterleitung mit header

BlueWonder

Grünschnabel
Hallo, ich versuche auf einer Seite einer Weiterleitung mit header, aber leider funktioniert das nicht.
Es handelt sich um eine php-seite, die Nachrichten in einer "Nachrichten-Inbox" einer Community löscht. Natürlich soll nach dem Löschvorgang wieder die Nachrichten-Seite mit den übrigen Nachrichten gezwigt werden.
Wo ist mein Fehler?
PHP:
<?php 
session_start ();
include ("checkuser.php"); 

//Datenbank nach der zu löschenden Message durchsuchen

$dblink = mysql_connect("XXX", "XXX", "XXX");

if (!mysql_select_db("db100825751", $dblink))
{
die ("Keine Verbindung zur Datenbank");
}
if ($Aktion == "löschen")
{

//Hier beginnt Löschen

if (isset ($CH0))
{
$sql = "SELECT * FROM `messages` WHERE ID = '$messageid0' LIMIT 1";
$result = mysql_query ($sql) or die(mysql_error());
//Ergebnis auswerten

if (mysql_num_rows ($result) > 0) 
{ 
//Messagedaten in ein Array auslesen. 
$data = mysql_fetch_array ($result); 
$Geloescht2 = $data[Geloescht2];
}

//Wenn Message schon vom Absender geloescht (Geloescht2 = 1), dann komplett löschen...
if ($Geloescht2 == 1)
{
mysql_query ("DELETE FROM `messages` WHERE `ID` = '$messageid0' LIMIT 1");
}
//ansonsten das Kennzeichen Geloescht1 auf 1 setzen.
else
{
mysql_query ("UPDATE `messages` SET `Geloescht1` = '1', `Gespeichert1` = '0' WHERE ID = '$messageid0' LIMIT 1");
}

}

}
header('Location: nachrichten_inbox.php'); 
?>
Das Löschen funktioniert auch einwandfrei....nur die Weiterleitung nicht
 
Dein Problem ist wahrscheinlich das Session_Start weil dieses eine Aktion auf dem Clientrechner startet und header dieses nicht akzeptiert.



Wenn du Header benutzt darf vorher kein Befehl oder Ausgabe an den Client gesendet werden.
 
Wenn das Problem ist wie mein Vorgänger beschrieben hat (Keine lust jetzt quellcode zu lesen :))
da hilft am anfang des dokumentes ein
ob_start()
und am ende ein
ob_end_flush()


Das Puffert diese Sachen erst und deswegen werden keine header-Informationen vorher gesendet.
 
Meine Theorie

Sofern bei dir kein header gesendet wurde und du auf einem Linux System ausführst.

Alle Leerzeichen nach dem ?> entfernen.

Ansonsten

PHP:
<?php 
OB_START();
session_start (); 
include ("checkuser.php"); 

//Datenbank nach der zu löschenden Message durchsuchen 

$dblink = mysql_connect("XXX", "XXX", "XXX"); 

if (!mysql_select_db("db100825751", $dblink)) 
{ 
die ("Keine Verbindung zur Datenbank"); 
} 
if ($Aktion == "löschen") 
{ 

//Hier beginnt Löschen 

if (isset ($CH0)) 
{ 
$sql = "SELECT * FROM `messages` WHERE ID = '$messageid0' LIMIT 1"; 
$result = mysql_query ($sql) or die(mysql_error()); 
//Ergebnis auswerten 

if (mysql_num_rows ($result) > 0) 
{ 
//Messagedaten in ein Array auslesen. 
$data = mysql_fetch_array ($result); 
$Geloescht2 = $data[Geloescht2]; 
} 

//Wenn Message schon vom Absender geloescht (Geloescht2 = 1), dann komplett löschen... 
if ($Geloescht2 == 1) 
{ 
mysql_query ("DELETE FROM `messages` WHERE `ID` = '$messageid0' LIMIT 1"); 
} 
//ansonsten das Kennzeichen Geloescht1 auf 1 setzen. 
else 
{ 
mysql_query ("UPDATE `messages` SET `Geloescht1` = '1', `Gespeichert1` = '0' WHERE ID = '$messageid0' LIMIT 1"); 
} 

} 

} 
header('Location: nachrichten_inbox.php'); 
OB_END_FLUSH();
?>
 
Zurück