Weiterleitung nach Sichheitskontrolle!

Okay, mein Problem war die Übergabe der Inhalte aus den Feldern. Das habe ich jetzt viw folgt gelost:

PHP:
<html>
<head><title>Eintrag erstellen - Boogie-Palace.com</title>
	<?php
	require_once( 'class.captcha.php' );

	if (empty($_GET['session_code'])) 
		{ $session_code = md5(round(rand(0,40000))); } 
	else 
		{ $session_code=$_GET['session_code']; }	
	
	$my_captcha = new captcha( $session_code, 'tmp/' );
			
	

	$do = $_GET['do'];
	
	if ($do == 'verify')
	{
		if ($my_captcha->verify( $_POST['password'] ) )
		{
	
		 $entry = $_REQUEST['entry']; 
		 $name = $_REQUEST['name'];
		 $email = $_REQUEST['email'];
		 $icq = $_REQUEST['icq'];
		 $homepage = $_REQUEST['homepage'];
		 $text = $_REQUEST['text'];
 		 echo "<meta http-equiv=\"refresh\" content=\"0; URL=http://www.boogie-palace.com/guestbook/gb.php?entry=".$entry."&name=".$name."&email=".$email."&icq=".$icq."&homepage=".$homepage."&text=".$text."\">";
         exit;	
		}
	}

	$pic_url = $my_captcha->get_pic( 4 );
	?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#336699" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
  <form method="post" action="<? $_PHP_SELF ?>?do=verify&session_code=$session_code">
  <strong><font face="Arial, Helvetica, sans-serif, Comic Sans MS"> <font size="4">Eintrag 
  erstellen</font></font></strong> <br>
  <br>
  <table width="70%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Name:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="text" name="name" class=textbox></font>
    </td>
  </tr>
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Email:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="text" name="email" class=textbox> (freiwillig)</font>
    </td>
  </tr>
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">ICQ:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="text" name="icq" class=textbox>  (freiwillig)</font>
    </td>
  </tr>
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Homepage:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
        <input name="homepage" type="text" class=textbox value="http://">
         (freiwillig)</font>
    </td>
  </tr>
  <tr> 
      <td width="20%" align="right" valign="top"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Text:&nbsp; 
        </font></b></td>
    <td> 
        <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
          <textarea name="text" cols=50 rows=10 class=textbox></textarea>
          </font> </p>
		<?PHP
		echo "<p><img src=\"captcha_image.php?img=$pic_url\"><br><br></p>
	   	</td></tr><tr> 
      	<td width=\"20%\" align=\"right\" valign=\"top\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">Code:&nbsp; 
        </font></b></td>
	    <td> 
        <font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><input type=\"text\" name=\"password\"></font>
		<br><br></td>";
		?>
  </tr>
  <tr>
    <td width="20%" align="right">&nbsp;

    </td>
    <td>
      <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="submit" name="entry" value="Submit">
        <font size="-1"> [<a href=help.html target="_blank">Hilfe/Help</a>]</font></font> 
      </td>
  </tr>
</table>
</form>
<br><center>
  <a href="javascript:history.back(1)"><font size="-1" face="Arial, Helvetica, sans-serif, Comic Sans MS">Zurück</font></a>
</center>
</body>
</html>

Ist bestimmt nicht die schönste Variante, aber es wir alles übergeben! Jetzt taucht aber folgendes auf, wenn ich in dem Eingabetextfeld Enter benutze, so wird diese Formatierung gelöscht und nicht mit übergeben! Wie kann ich das verhindern?
 
Ist bestimmt nicht die schönste Variante […]
Damit hast du definitiv recht. Denn Formulardaten relativ sicher per Post-Methode an ein verarbeitendes Skript zu schicken, nur um die Daten danach per unsicherer Get-Methode weiterzuleiten, ist absolut nicht klug. Binde doch einfach das Skript „gb.php“ in dem Anweisungsblock der if-Kontrollstruktur.
 
okay, das behbt das Problem! Nur taucht jetzt ein zweites auf!

Ich gebe alle sin den Feldern ein und auch wenn der code richtig ist, startet das script nochmal und dann muß man alle snoch einmal eingeben. Erst dann, mit neuem code, schreibt er es ein! Stimmt mit den IF-Bedingungen etwas nicht?
 
Die Grundstruktur sollte wie folgt aussehen:
PHP:
<?php

	if( $bedingungen_erfuellt ) {

		trageDatenInDatenbankEin();

	} else {

		// eveltuelle Ausgabe von Fehlermeldungen
		// Ausgabe des Formulars

	}

?>
 
Kann man das:

PHP:
	if (empty($_GET['session_code'])) 
		{ $session_code = md5(round(rand(0,40000))); } 
	else 
		{ $session_code=$_GET['session_code']; }	
	
	$my_captcha = new captcha( $session_code, 'tmp' );

	$do = $_GET['do'];
	
	if ($do == 'verify')
	{
		if ($my_captcha->verify( $_POST['password'] ) )
		{
		include('gb.php');
		exit;	
		}
	}

nicht zusammenfassen? denn hier muß der Fehler ja liegen! Zwei Bedingungen und dadurch erst eine erfüllen und beim nächsten eingeben dann die andere?
 
Arbeite am besten mit richtigen PHP-Sitzungen:
PHP:
<?php

	require_once 'class.captcha.php';

	session_start();

	if( !isset($_GET[session_name()]) ) {
		$_GET[session_name()] = session_id();
	}
	$captcha = new captcha($_GET[session_name()], 'tmp/');

	if( isset($_GET['action']) && $_GET['action']=='verify' ) {
		if( $my_captcha->verify($_POST['password']) ) {
			include 'gb.php';
		} else {
			header('HTTP/1.1 400 Bad Request', true);
		}
	}

	$pic_url = $my_captcha->get_pic( 4 );

?>

…


<form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=verify&amp;<?php echo session_name().'='.$_GET[session_name()]; ?>">
	…
</form>
 
Okay, habe deine Version mal versucht zu testen, nur leider erzeugt er mir jetzt folgende Fehler:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/boogicby/www.boogie-palace.com/guestbook/submit.php:3) in /home/boogicby/www.boogie-palace.com/guestbook/submit.php on line 12

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/boogicby/www.boogie-palace.com/guestbook/submit.php:3) in /home/boogicby/www.boogie-palace.com/guestbook/submit.php on line 12

Fatal error: Call to a member function on a non-object in /home/boogicby/www.boogie-palace.com/guestbook/submit.php on line 27

Was muß ich nun ändern?
 
Das Setzen von HTTP-Header-Feldern – was bei Cookie-gestützter Sitzungsververwaltung notwendig ist – setzt voraus, dass noch nichts des Antwortkörpers (also nichts des eigentlichen Inhalts) gesendet wurde. In der Regel kann dies so realisiert, dass das Starten der Sitzung am Anfang des Skriptes erfolgt.
 
Ich interpretiere diese Antwort jetzt so, es darf nichts for dem Session_Start stehen? Weil ich das ganze jetzt so eingebaut habe:

PHP:
<?php 

    require_once ('class.captcha.php'); 

    session_start(); 

    if( !isset($_GET[session_name()]) ) { 
        $_GET[session_name()] = session_id(); 
    } 
    $captcha = new captcha($_GET[session_name()], 'tmp/'); 

    if( isset($_GET['action']) && $_GET['action']=='verify' ) { 
        if( $my_captcha->verify($_POST['password']) ) { 
            include 'gb.php'; 
        } else { 
            header('HTTP/1.1 400 Bad Request', true); 
        } 
    } 

    $pic_url = $my_captcha->get_pic( 4 ); 

?> 
<html>
<head><title>Eintrag erstellen - Boogie-Palace.com</title>
<style type="text/css">
<!--
.textbox { background: transparent; background-color: White; border: 1px solid #000000; color: #000000; font-family: Verdana, Arial; font-size: x-small; text-align: left; scrollbar-face-color: #CCCCCC; scrollbar-shadow-color: #FFFFFF; scrollbar-highlight-color: #FFFFFF; scrollbar-3dlight-color: #FFFFFF; scrollbar-darkshadow-color: #FFFFFF; scrollbar-track-color: #FFFFFF; scrollbar-arrow-color: #000000 }
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#336699" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=verify&amp;<?php echo session_name().'='.$_GET[session_name()]; ?>"> 
  <strong><font face="Arial, Helvetica, sans-serif, Comic Sans MS"> <font size="4">Eintrag 
  erstellen</font></font></strong> <br>
  <br>
  <table width="70%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Name:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="text" name="name" class=textbox></font>
    </td>
  </tr>
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Email:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="text" name="email" class=textbox> (freiwillig)</font>
    </td>
  </tr>
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">ICQ:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="text" name="icq" class=textbox>  (freiwillig)</font>
    </td>
  </tr>
  <tr> 
    <td width="20%" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Homepage:&nbsp; 
      </font></b></td>
    <td> 
        <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
        <input name="homepage" type="text" class=textbox value="http://">
         (freiwillig)</font>
    </td>
  </tr>
  <tr> 
      <td width="20%" align="right" valign="top"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Text:&nbsp; 
        </font></b></td>
    <td> 
        <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
          <textarea name="text" cols=50 rows=10 class=textbox></textarea>
          </font> </p>
		<?PHP
		echo "<p><img src=\"captcha_image.php?img=$pic_url\" border=\"1\"><br><br></p>
	   	</td></tr><tr> 
      	<td width=\"20%\" align=\"right\" valign=\"top\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">Code:&nbsp; 
        </font></b></td>
	    <td> 
        <font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><input type=\"text\" name=\"password\"></font>
		<br><br></td>";
		?>
  </tr>
  <tr>
    <td width="20%" align="right">&nbsp;

    </td>
    <td>
      <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><input type="submit" name="entry" value="Submit">
        <font size="-1"> [<a href=help.html target="_blank">Hilfe/Help</a>]</font></font> 
      </td>
  </tr>
</table>
</form>
<br><center>
  <a href="javascript:history.back(1)"><font size="-1" face="Arial, Helvetica, sans-serif, Comic Sans MS">Zurück</font></a>
</center>
</body>
</html>

Und er mir trotzdem die obere Fehlermeldung ausgibt!
 
Zurück