Weiterleitung in if-Abfrage

Headymaster

Erfahrenes Mitglied
Hi!

Und zwar habe ich ein Prob, in meinem Adminuserscript:

PHP:
<?php
// Interner Bereich
include("config/checkuser.php");

// Überprüfen ob die nötigen Adminrechte bestehen
if ($_SESSION['user_rights'] == 'superadmin')
{

// Verbindung zur Datenbank herstellen
function dbconnect()
{
    
     // benötigte Dateien
     include("config/sql.php");
     
     $connect = mysql_connect($dbserver, $dbuser, $dbpw) or die ("Es konnte keine Verbindung mit der DB hergestellt werden");
     $dbselect = mysql_select_db($dbname, $connect) or die ("DB-Table konnte nicht ausgewählt werden");
}

// ###############################
// Anzeige der bestehenden Admins#
// ###############################
dbconnect();
   
//Datensätze aus Datenbank holen
$sql = "SELECT * FROM admin ORDER BY Nickname";
$result = mysql_query($sql);

// Link zum Newsadden

echo "<p align=\"center\"><a href=\"$PHP_SELF?section=admins&do=addform\"><font color=\"#000000\">Admin hinzufügen</font></a></p>";
   
// Tableheader generieren
   
echo <<<EOL
<table align="center" cellpadding="4" cellspacing="1" style="width:500">
 <tr bgcolor="#666666">
  <td><b>Nickname</b></td><td><b>Vorname</b></td><td><b>Rechte</b></td><td align="center"><img src="../Bilder/aktionen/edit.gif"><img src="../Bilder/aktionen/delete.gif"></td>
 </tr>
EOL;

//Datensätze auslesen
while ($zeile = mysql_fetch_object($result)) {

 echo "<tr bgcolor=\"#666666\">";
 echo "<td>$zeile->Nickname</td><td>$zeile->Vorname</td><td>$zeile->Rights</td><td align=\"center\">
 <a href=\"$PHP_SELF?section=admins&do=adminupdate&Id=$zeile->Id\"><img border=\"0\" src=\"../Bilder/aktionen/edit.gif\"></img></a>
 <a href=\"$PHP_SELF?section=admins&do=admindel&Id=$zeile->Id\"><img border=\"0\" src=\"../Bilder/aktionen/delete.gif\"></img></a>
 </td>";
  }
 // ende des Tables generieren
 echo "</tr>";
 echo"</table>";
 
// ##########################
// ##########################
 
 if($_GET['do'] == "addform")
{
// Formular generieren + DB-Einträge einfügen
echo <<<EOL
<p></p>
<p></p>
<p></p>
<form action="$PHP_SELF?section=admins" method="post">
 <table align="center" style="width:600; background-color:#CCCCCC">
  <tr>
   <td><b>Nickname:</b></td><td><input type="text" name="Nickname"></td>
  </tr>
  <tr>
   <td><b>Kennwort:</b></td><td><input type="password" name="Kennwort"></td>
  </tr>
  <tr>
   <td><b>Nachname:</b></td><td><input type="text" name="Nachname"></td>
  </tr>
  <tr>
   <td><b>Vorname:</b></td><td><input type="text" name="Vorname"></td>
  </tr>
  <tr>
   <td><b>Rechte:</b></td><td>
   <select name="Rights">
   <option>superadmin</option>
   <option>newsadmin</option>
   </select>
   </td>
  </tr>
  <tr>
   <td colspan="2" align="center">
    <input type="submit" name="save" value="Save">
    <input type="hidden" name="do" value="adminadd">
   </td>
  </tr>
 </table>
</form>

EOL;
}

//News hinzufügen
if($_POST['do'] == "adminadd")
{
  dbconnect();
  
  // Datensätze in Datenbank schreiben
  $sql = ("INSERT INTO admin 
  (Nickname, Kennwort, Nachname, Vorname, Rights) VALUES 
  ('".mysql_real_escape_string($_POST['Nickname'])."', '".md5 ($_POST["Kennwort"])."', '".mysql_real_escape_string($_POST['Nachname'])."', '".mysql_real_escape_string($_POST['Vorname'])."', '".mysql_real_escape_string($_POST['Rights'])."');");
  $ausfuehren = mysql_query($sql);
  
  	 	 if ($ausfuehren)
         {
             echo "<br><br><p align=\"center\"><font color=\"#00FF00\"><b>Der Admin wurde erfolgreich angelegt!</b></font></p>";
			 echo "<br><p align=\"center\"><b>Weiterleitung erfolgt.....</b></p>";
			 ?>
			 <meta http-equiv="refresh" content="3" URL="$PHP_SELF?section=admins">
			 <?php
         } 
         else
         {
             echo "Der Admin konnte nicht angelegt werden!";
         }
}

//Admin editieren
if($_GET['do'] == "adminupdate")
{
dbconnect();
//Datensätze aus Datenbank holen
$sql = "SELECT * FROM admin WHERE Id='".mysql_real_escape_string($_GET['Id'])."'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
// Formular generieren + DB-Einträge einfügen
echo <<<EOL

<p></p>
<p></p>
<p></p>
<form action="$PHP_SELF?section=admins" method="post">
 <table align="center" style="width:600; background-color:#CCCCCC">
  <tr>
   <td><b>Nickname:</b></td><td><input type="text" name="Nickname" value="$row[Nickname]"></td>
  </tr>
  <tr>
   <td><b>Kennwort:</b></td><td><input type="password" name="Kennwort" value="$row[Kennwort]"></td>
  </tr>
  <tr>
   <td><b>Nachname:</b></td><td><input type="text" name="Nachname" value="$row[Nachname]"></td>
  </tr>
  <tr>
   <td><b>Vorname:</b></td><td><input type="text" name="Vorname" value="$row[Vorname]"></td>
  </tr>
  <tr>
   <td><b>Rechte:</b></td><td>
   <select name="Rights">
   <option>superadmin</option>
   <option>newsadmin</option>
   </select>
   </td>
  </tr>
  <tr>
   <td colspan="2">
    <input type="submit" name="save" value="Save">
    <input type="hidden" name="do" value="update">
	<input type="hidden" name="Id" value="$row[Id]">
   </td>
  </tr>
 </table>
</form>
    
EOL;
}
// Update bearbeiten
if($_POST['do'] == 'update')
  {
  dbconnect();

       // MySql-DB updaten
       $update = "UPDATE admin SET Nickname='".mysql_real_escape_string($_POST['Nickname'])."', Kennwort='".md5($_POST['newsinhalt'])."', Nachname='".mysql_real_escape_string($_POST['Nachname'])."', Vorname='".mysql_real_escape_string($_POST['Vorname'])."' WHERE Id='".mysql_real_escape_string($_POST['Id'])."'"; 
       $senden = mysql_query($update);     
  
       if ($senden)
         {
             echo "<br><br><br><p align=\"center\"><font color=\"#00FF00\"><b>Die Einträge wurden erfolgreich editiert!</b></font></p>";
			 echo "<br><p align=\"center\"><b>Weiterleitung erfolgt.....</b></p>";
			 ?>
			 <meta http-equiv="refresh" content="3" URL="$PHP_SELF?section=admins">
			 <?php
         } 
         else
         {
		     $error = mysql_error();
             echo "$error";
         }    
  }
//Admin löschen
if($_GET['do'] == "admindel")
{
   dbconnect();
   
   $sql = "DELETE FROM admin WHERE Id='".mysql_real_escape_string($_GET['Id'])."'";
   $senden = mysql_query($sql);
   if ($senden)
     {
	 echo "<br><br><br><p align=\"center\"><font color=\"#00FF00\"><b>Die Einträge wurden erfolgreich gelöscht!</b></font></p>";
     echo "<br><p align=\"center\"><b>Weiterleitung erfolgt.....</b></p>";
	 ?>
	 <meta http-equiv="refresh" content="3" URL="$PHP_SELF?section=admins"></meta>
	 <?php
	 }
	 else
	 {
	   $error = mysql_error();
	   echo "$error";
	 }
}
}
else
{
echo "<br><br><br><p align=\"center\"><b>Sie haben nicht die nötigen Rechte!</b></p>";
echo "<br><p align=\"center\"><b>Weiterleitung erfolgt.....</b></p>";
?>
<meta http-equiv="refresh" content="3" URL="$PHP_SELF?section=home">
<?php
}
?>

das Problem ist, dass bei:
PHP:
if($_GET['do'] == "admindel")
{
   dbconnect();
   
   $sql = "DELETE FROM admin WHERE Id='".mysql_real_escape_string($_GET['Id'])."'";
   $senden = mysql_query($sql);
   if ($senden)
     {
	 echo "<br><br><br><p align=\"center\"><font color=\"#00FF00\"><b>Die Einträge wurden erfolgreich gelöscht!</b></font></p>";
     echo "<br><p align=\"center\"><b>Weiterleitung erfolgt.....</b></p>";
	 ?>
	 <meta http-equiv="refresh" content="3" URL="$PHP_SELF?section=admins"></meta>
	 <?php
	 }
	 else
	 {
	   $error = mysql_error();
	   echo "$error";
	 }
}
die weiterleitung nicht funktionioert, obwohl sie bei den anderen if abfragen funktioniert.
Was nicht funktioniert ist ganz einfach, nachdem die weiterleitung durch meta refresh ausgeführt wurde, steht immer noch weiterleitung erolgt dort und es wird alles 3 sekunden weitergeleitet....

habt ihr ne Idee woran es liegen kann?

MFG Niels
 
vllt liegt es daran das du da den meta tag abgeschlossen hast und woanders nicht.

HTML:
<meta http-equiv="refresh" content="0; URL=http://www.google.de">

so kenne ich die syntax

wobei du auch nen header() senden kannst

Frage an die es wissen: Wo liegt da der Unterschied bzw was ist geeigneter ?

Ja gut erlaubt mag das nicht sein aber funktionieren tut es aufjedenfall.
 
Meiner Meinung nach ist die Nutzung von header() besser als die Nutzung des Meta-Refreshes. Bei header() hat man eine richtige HTTP-Umleitung, beim Meta-Refresh ruft der Browser aber erstmal die ganze Seite ab und leitet dann um. Und ich weiss auch nicht ob man evtl. den Meta-Refresh irgendwie unterdruecken kann, bei der HTTP-Umleitung wird dies wohl schwer werden da diese ja fester Bestandteil des HTTP-Protokolls ist und dieses von jedem Browser vollstaendig befolgt werden sollte.
 
Wenn ich aber nen Header einbau...wird ja sofort weitergeleitet und nicht erst nach 3 sekunden.....dass ist ja das^^

MFG Niels
 
Hmm, hatte ich wohl ueberlesen. Na dann doch den Meta-Refresh. Ich denk auch nicht, dass sich da ein Browser gegen straeubt. Ist auf jeden Fall wesentlich besser als JavaScript zu nutzen. :D
 
Jup ist auch im Head....aber es geht nur nicht bei admindel....bei den anderen i-abfragen geht es ja.....das is ja das komsiche :S

MFG Niels
 
Zurück