Wie am besten lösen?

ja es funktioniert eh alles , nur HEAD nicht und will nicht wegen dem jetzt alles umschreiben müssen ...

Oh je mir graults bei dem was ich hier bisher gesehen habe..

PHP:
<?php 
ob_start();
session_start();

Das sind deine ersten Anweisungen in der Datei :)

Okay danke, dann hab ich das am Anfang eh richtig gehabt ...

PHP:
if(!session_is_registered('user') || $_SESSION['user'] == "") {
    header("location:index.php");
    die;
}

Mal ne Frage, du rufst das nicht aus der index.php auf oder?
nein , aber damit kommt er zurück auf die index.php seite (Ist beim Login)

PHP:
    $id = $_POST['id'];
      $begr = $_POST['begr'];
    $punkte = $_POST['punkte'];
    $posne = $_POST['posne'];

     $aendern = "UPDATE katalog
         Set
            `begr` = '$begr',
            `punkte` = '$punkte',
            `posne` = '$posne'

      WHERE `id` = $userid";
     $update = mysql_query($aendern);

Halte ich für stark bedenklich. Es wurde werder eine Validierung vorgenommen, noch irgendetwas escaped. Im schlimmsten Fall löschen sie dir damit die Datenbank. Lies dir bitte einiges zum Thema SQL-Injection durch.

Am besten du postest uns mal den Quelltext der aufgerufenen Seite. Darunter den des ersten Include usw. Maskier dabei die Passwörter. Und bitte dazu schreiben, um welchen Script es sich handelt. Beispiel:

PHP:
<?php
// File: index.php
...
?>
katalog_bearbeiten.php
PHP:
<?php
session_start();
ob_start ();
if(!session_is_registered('user') || $_SESSION['user'] == "") {
	header("location:index.php");
	die;
	ob_end_flush();
}
require("connect.inc.php");
?>
<?


$userid = false;

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(isset($_POST['id']) && ctype_digit($_POST['id']))
    {
        $userid = $_POST['id'];
	
		////EINFÜGEN !!
    $id = $_POST['id'];
  	$begr = $_POST['begr'];
	$punkte = $_POST['punkte'];
	$posne = $_POST['posne'];


  

 
	
     $aendern = "UPDATE katalog
	 	Set
			`begr` = '$begr',
			`punkte` = '$punkte',
			`posne` = '$posne'
		

	  WHERE `id` = $userid";
     $update = mysql_query($aendern);	
	 header('Location: sichere_seite.php?page=katalog_erfolg');


	 
	  }else{
		

		// Hier alle Felder validieren. Z.B. prüfen, ob eines leer ist bzw. ob ungültige Werte darin enthalten sind
        // Anschließend Daten in die Datenbank eintragen. BenutzerID steht in $userid
    

        if($update)
        {


			
        }
		else
		{
		echo "Fehler!";
		}
		
    }
    //  den else-Teil können wir uns sparen. Wenn eine ungültige ID übergeben wurde, wird $userid nicht verändert. Er springt also automatisch in den unteren else-Zweig "Ungültige Anfrage"
}
elseif(isset($_GET['id']) && ctype_digit($_GET['id']))
{
    $userid = $_GET['id'];
}

if($userid !== false)
{
//VORSICHT
    $sql = "SELECT id, posne, punkte, begr FROM `katalog` WHERE `id` = ".$userid;
    $result = mysql_query($sql);
    if(mysql_num_rows($result) == 1)
    {
        $userdata = mysql_fetch_object($result);
	
?>		
		<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>Neuenn</title>
<link rel="stylesheet" type="text/css" href="style.css"></head>
<body>
<form action="sichere_seite.php?page=katalog_bearbeiten" method="post">
<table width="399" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
	<tr>
		<td bgcolor="#e7e7e7" align="center" colspan="2"><strong>Katalog bearbeiten 
		    <input name="id" type="hidden" class="input" value="<?php echo "$userid" ?>" size="20">
		</strong></td>
	</tr>
	<tr>
      <td width="158" bgcolor="#e7e7e7">Aufgabe</td>
	  <td width="218" bgcolor="#ffffff"><input type="text" bgvolor="#e7e7e7" name="begr" value="<?php $benabf = "SELECT begr FROM `katalog` WHERE `id` = ".$userid;
	  $ergbenabf = mysql_query($benabf);
  while($row = mysql_fetch_object($ergbenabf))
    {
    echo $row->begr;
    }


	  ?>" size="20" class="input">
      </label></td>
    </tr>
	<tr>
      <td bgcolor="#e7e7e7">Punkte</td>
	  <td bgcolor="#ffffff"><label>
	    <input type="text" bgvolor="#e7e7e7" name="punkte" value="<?php $benabf = "SELECT punkte FROM `katalog` WHERE `id` = ".$userid;
	  $ergbenabf = mysql_query($benabf);
  while($row = mysql_fetch_object($ergbenabf))
    {
    echo $row->punkte;
    }


	  ?>" size="20" class="input">
	  </label></td>
    </tr>
	<tr>
      <td bgcolor="#e7e7e7">+,-</td>
	  <td bgcolor="#ffffff"><label></label>
	    <select name="posne">
		<option value="<?php $benabf = "SELECT posne FROM `katalog` WHERE `id` = ".$userid;
	  $ergbenabf = mysql_query($benabf);
  while($row = mysql_fetch_object($ergbenabf))
    {
    echo $row->posne;
    }

	  ?>" selected><?php $benabf = "SELECT posne FROM `katalog` WHERE `id` = ".$userid;
	  $ergbenabf = mysql_query($benabf);
  while($row = mysql_fetch_object($ergbenabf))
    {
    echo $row->posne;
    }

	  ?></option>
          <option value="0">Ausw&auml;hlen</option>
          <option value="+">+</option>
          <option value="-">-</option>
                </select></td>
    </tr>
	<tr>
	  <td bgcolor="#e7e7e7" align="center" colspan="2"><label></label></td>
    </tr>
	<tr>
		<td bgcolor="#e7e7e7" align="center" colspan="2">
		<input type="submit" name="submit" value="Datei bearbeiten" class="button">		</td>
	</tr>
	<tr>
		<td bgcolor="#e7e7e7" align="center" colspan="2">
		<a href="sichere_seite.php">Zur&uuml;ck zur Admin-Seite</a>		</td>
	</tr>
</table>
</form>
</body>
</html>
<?php
		
        // Formular aufbauen und Felder mit den Daten füllen
        // als action-Pfad wieder den Dateinamen wählen (z.B. site.php?page=benutzer_bearbeiten)
        // ein (hidden-)Feld mit der BenutzerID erstellen das id heißt
        // falls es beim abschicken (POST-TEIL) Fehler gab, kannst du eventuell die Daten aus dem POST nehmen, anstatt die Daten aus der Datenbank. Das ist dir überlassen ;)
    }
    else
    {
        // Fehlermeldung: Benutzer nicht gefunden!
    }
}
else
{
    // Fehlermeldung: Ungültige Anfrage
}
mysql_error()
?>
 
Versuch mal so:

PHP:
if(!session_is_registered('user') || $_SESSION['user'] == "") {
    ob_end_flush();
    header("location:index.php");
    die;
}
 
Versuch mal so:

PHP:
if(!session_is_registered('user') || $_SESSION['user'] == "") {
    ob_end_flush();
    header("location:index.php");
    die;
}
Der header funktioniert ja , dass ist nur wenn jemand nicht einglogt ist aber eine geschützte seite betreten möchte , dann kommt er zurück auf die Index.php seite nur der weiter unten nicht.

lg
 
Zuletzt bearbeitet:
Ok, noch mal langsam:

1. Dein Code ist Kraut-und-Rüben. Den mag sich keiner wirklich anschauen.
2. Ich habe dein Problem nicht verstanden. Was heißt "weiter unten nicht"? Ich sehe genau einen header()-Redirect, der nach index.php umleitet. Dieser wird durchgeführt, wenn kein user in der Session registriert ist oder wenn das registrierte User-Element leer ist. Beides sollte der Fall sein, wenn kein User eingeloggt ist. Wo genau hast du denn nun ein Problem?
 
^^ also

PHP:
        ////EINFÜGEN !!
    $id = $_POST['id'];
      $begr = $_POST['begr'];
    $punkte = $_POST['punkte'];
    $posne = $_POST['posne'];
 
    
     $aendern = "UPDATE katalog
         Set
            `begr` = '$begr',
            `punkte` = '$punkte',
            `posne` = '$posne'
        

      WHERE `id` = $userid";
     $update = mysql_query($aendern);    
    header('Location: sichere_seite.php?page=katalog_erfolg');

Also folgendes, ich habe eine Seite wo ich Punkte einer Kategorie ändern kann , sobald ich den ändern Button klicke, möchte ich gerne dass er mich auf katalog_erfolg.php umleitet, dass habe ich mit dem Code oben so verwirklicht.
Nur leider durch die umstellung auf Mysql v. 5 funktioniert dass nicht mehr und ich bekomme die besagte Fehlermeldung
Warning: Cannot modify header information - headers already sent by (output started at /home/www/web358/html/maturaball/sichere_seite.php:14) in /home/www/web358/html/maturaball/katalog_bearbeiten.php on line 44

Hoffe das ich es jetzt verstädnlicher erklärt habe ...

lg
 
Ja, sehr viel besser. Gut, mach erstmal diese 2 Zeilen weg, die sind sehr sinnfrei:

PHP:
?>
<?

Dann zeigst du noch die ersten sagen wir 25 Zeilen der sichere_seite.php her. Denn das eigentliche Problem liegt dort.
 
Ja, sehr viel besser. Gut, mach erstmal diese 2 Zeilen weg, die sind sehr sinnfrei:

PHP:
?>
<?

Dann zeigst du noch die ersten sagen wir 25 Zeilen der sichere_seite.php her. Denn das eigentliche Problem liegt dort.

bei der sichere_seite? kann ich mir fast nicht vorstellen da die fast nur aus html besteht ?...

sichere_s.php
PHP:
<?php
session_start();
if(!session_is_registered('user') || $_SESSION['user'] == "") {
header("location:index.php");
die;
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
.Stil3 {color: #000000}
body {
	background-color: #000000;
}
-->
</style></head>
<center>
<link rel="stylesheet" type="text/css" href="style.css"></head>
<body>
<span class="Stil3"></span>
<table width="929" border="0" background="login-page/Bilder/Unbenannt-1_31.png" cellspacing="0" cellpadding="0">
  <tr>
    <td width="929" height="18" background="login-page/Bilder/Unbenannt-1_01.png">&nbsp;</td>
  </tr>
  <tr>
    <td width="929" height="155" background="login-page/Bilder/Unbenannt-1_02.png">&nbsp;</td>
  </tr>
  <tr>
    <td width="929" height="20" background="login-page/Bilder/Unbenannt-1_03.png"><?php echo "<b>Eingelogt als <em>".$_SESSION['user']."</em></b>"; ?></td>
  </tr>
  <tr>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="172" height="23" background="login-page/Bilder/Unbenannt-1_04.png">&nbsp;</td>
        <td width="25" height="23" background="login-page/Bilder/Unbenannt-1_05.png">&nbsp;</td>
        <td width="23" height="23" background="login-page/Bilder/Unbenannt-1_06.png">&nbsp;</td>
        <td width="491" height="23" background="login-page/Bilder/Unbenannt-1_07.png">&nbsp;</td>
        <td width="21" height="23" background="login-page/Bilder/Unbenannt-1_08.png">&nbsp;</td>
        <td width="25" height="22" background="login-page/Bilder/Unbenannt-1_09.png">&nbsp;</td>
        <td width="172" height="23" background="login-page/Bilder/Unbenannt-1_10.png">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="172" rowspan="2" align="left" valign="top" background="login-page/Bilder/Unbenannt-1_20.png"><table width="172" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <th valign="top" scope="col"><div align="left">
                <?php
			require("connect.inc.php");
			  $alluser = "SELECT id, rechte, anzeigen, name, link, bname, banfang, lanfang FROM seite WHERE anzeigen = 'user'";
			 
  $ergebnis = mysql_query($alluser);

while($row = mysql_fetch_object($ergebnis))
{
			echo '<tr>';
            echo '<td width="171" valign="top">';
			echo '<a href="'.$row->lanfang.''.$row->link.'"<img src="'.$row->banfang.''.$row->bname.'" width="28" height="28" border="0">'.$row->name.'</a></a></td>';
            echo '</tr>';
			}
			?>
              </div>                </th>
            </tr>
          </table>
          <p>&nbsp;</p>
          <p>&nbsp;</p></td>
        <td width="25" height="19" background="login-page/Bilder/Unbenannt-1_13.png">&nbsp;</td>
        <td width="22" height="19" background="login-page/Bilder/Unbenannt-1_14.png">&nbsp;</td>
        <td width="490" height="19" background="login-page/Bilder/Unbenannt-1_16.png"><div align="right">
          <? include ("zeit.php"); ?>
        </div></td>
        <td width="19" height="19" background="login-page/Bilder/Unbenannt-1_17.png" alt="">&nbsp;</td>
        <td width="28" height="19" background="login-page/Bilder/Unbenannt-1_18.png">&nbsp;</td>
        <td width="173" rowspan="2" align="left" valign="top" background="login-page/Bilder/Unbenannt-1_27.png"><table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td><?php
			require("connect.inc.php");
			  $alluser = "SELECT id, rechte, anzeigen, name, link, code, lanfang FROM seite WHERE anzeigen = 'admin'";
			 
  $ergebnis = mysql_query($alluser);

while($row = mysql_fetch_object($ergebnis))
{
			echo '<tr>';
            echo '<td width="171">';
			echo '<a href="'.$row->lanfang.''.$row->link.'">>'.$row->name.' '.$row->code.'</a></a></td>';
            echo '</tr>';
			}
			?></td>
          </tr>
        </table>
	
		</td>
      </tr>
      <tr>
        <td height="476" background="login-page/Bilder/Unbenannt-1_21.png">&nbsp;</td>
        <td height="476" background="login-page/Bilder/Unbenannt-1_22.png">&nbsp;</td>
        <td height="476" width="490" align="left" valign="top" background="login-page/Bilder/Unbenannt-1_23.png"><?include ("./content.php");?></td>
        <td height="476" background="login-page/Bilder/Unbenannt-1_24.png" alt="">&nbsp;</td>
        <td height="476" background="login-page/Bilder/Unbenannt-1_25.png">&nbsp;</td>
        </tr>
      <tr>
        <td height="19" background="login-page/Bilder/Unbenannt-1_28.png">&nbsp;</td>
        <td height="19" background="login-page/Bilder/Unbenannt-1_29.png">&nbsp;</td>
        <td height="19" background="login-page/Bilder/Unbenannt-1_30.png">&nbsp;</td>
        <td height="19" background="login-page/Bilder/Unbenannt-1_31.png"><p>&nbsp;</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p></td>
        <td height="19" background="login-page/Bilder/Unbenannt-1_32.png" alt="">&nbsp;</td>
        <td height="19" background="login-page/Bilder/Unbenannt-1_33.png">&nbsp;</td>
        <td height="19" background="login-page/Bilder/Unbenannt-1_34.png">&nbsp;</td>
      </tr>
      <tr>
        <td height="73" colspan="7" background="login-page/Bilder/Unbenannt-1_35.png">&nbsp;</td>
        </tr>
    </table></td>
  </tr>
</table>
</body>
</center>
</html>
 
Ich versteh es grad nicht wirklich: Du hast eine Seite katalog_bearbeiten.php. In der ist ein Form, das auf sichere_seite.php verweist, wo aber mittels GET-Parameter page auf katalog_bearbeiten geleitet werden soll? In sichere_seite.php sehe ich aber nirgends eine Auswertung des GET-Parameters "page". Dann zeigst du Warnings, in denen Zeilennummern stehen, die nicht mit dem übereinstimmen, was du an Quellcode postest.

Irgendwas läuft hier ganz verkehrt.

Ich glaube ich kann dir nicht mehr weiter helfen, ich bin blind oder übersehe was. Ich kann dir nur soviel sagen: header() funktioniert nur, wenn vorher _keine_ einzige Ausgabe an den Browser gesendet wurde. Dazu gehört alles, was über "echo" ausgegeben wird, außerhalb der PHP-Tags (<?php und ?>) liegt und Warnings, Notices und dergleichen. Hast du schon mal ins Server-Log geschaut bzw. geht das bei funpic überhaupt?
 
Zurück