Notice: Undefined index:

Hallo

Ich verwende ein Mailformular per php, was direkt versendet wird.
Nach drücken des Buttons Submit wird anhand der Returnhtml eine Variable $done mit angehängt. Mit dieser möchte ich prüfen, ob die Mail raus gegangen ist. Wenn sie raus gegangen ist gibtr es eine Textmeldung.

Ich habe jetzt das Error_reporting(E_ALL); eingeschaltet und festgestellt, dass folgende Warnung erscheint:! Einen anderen Fehler gibt es auch noch... (Ganz unten)
Code:
Notice: Undefined index: done

Mein Code dazu hier:
PHP:
<?php
$strEmpfaenger = 'meine_email';
$strFrom       = '"absender';
$strSubject    = 'Mail Kontakt';
$strReturnhtml = 'http://www.meinedomäne.de.de/index.php?site=contact&id=mail&done=true';
$strDelimiter  = ":\t";
$done=$_GET['done'];

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}
?>

Jetzt gibt es noch ein Problem:
Obwohl ich in der index.php folgendes deklariert habe
PHP:
if(isset($_GET['site']))
{
    switch($_GET['site'])
    {
        // Kontakt Seite
        case 'contact':
            $includePage = 'contact/index.php';
            // Falls ein Mode übergeben wird,
            // den auswählen
            if(isset($_GET['id']))
            {
                switch($_GET['id'])
                {
                    case 'mail':
                        $includePage = 'contact/conMai/index.php';
                        break;
                    case 'phone':
                        $includePage = 'contact/conTel/index.php';
                        break;
                    case 'phone':
                        $includePage = 'contact/conWri/index.php';
                        break;
                    case 'location':
                        $includePage = 'contact/stando/index.php';
                        break;
                    case 'map':
                        $includePage = 'contact/stando/standok/index.php';
                        break;
                }
            }
            if(isset($_GET['done']))
            {
                switch($_GET['done'])
                {
                    case 'true':
                        $includePage = 'contact/conMai/index.php';
                        break;
                }
            }
            break;

funktioniert der Rücksprung nicht auf die Seite. Ich werde dann zurück auf die Startseite geleitet. Wenn ich in der $strReturnhtml die normale URL angebe (richtiger Pfad), dann kommt die obere Warnung.

Hat jemand eine Idee?
 
Das solltest du per
PHP:
if(!isset($done=$_GET['done'])) $done = 'Standardwert';
beheben können. Den Standardwert müsstest du natürlich ersetzen mit dem was du da haben willst ;)
 
Bei der Zeile bekomme ich nun folgenden Fehler:

Code:
Parse error: syntax error, unexpected '=', expecting ',' or ')' in /is/htdocs/wp1050442_I4VP0FSVFT/contact/conMai/index.php on line 34

Als Standwert sollte ich doch jetzt "false" verwenden, oder? Denn erst nach absenden des Formulars soll ja $done = true werden.

PHP:
habs jetzt so probiert:
if(!isset($done=$_GET['done'])) $done = 'false';
 
Damit wird es wieder zum selben Fehler kommen, Jan.
Probier stattdessen mal Folgendes:
PHP:
$done = isset($_GET['done']);
 
hm, kommt immer noch die gleiche Fehlermeldung.

Ich glaube ich lerne es nie... :(


Code:
Das spuckt er aus:
Notice: Undefined index: done in /is/htdocs/wp1050442_I4VP0FSVFT/contact/conMai/index.php on line 34

Und der Rücksprung funktioniert auch nicht auf das gewünschte Template. Auch schon beim betreten war $done=true, denn es wurde die Meldung ausgegeben, die eigentlich erst ausgegeben wird, wenn das Formular erfolgreich verschickt wurde.


Hier noch mal alles im Überblick:

Link und Include:
PHP:
// Kontakt Seite
        case 'contact':
            $includePage = 'contact/index.php';
            // Falls ein Mode übergeben wird,
            // den auswählen
            if(isset($_GET['id']))
            {
                switch($_GET['id'])
                {
                    case 'mail':
                        $includePage = 'contact/conMai/index.php';
                        break;
                    case 'phone':
                        $includePage = 'contact/conTel/index.php';
                        break;
                    case 'write':
                        $includePage = 'contact/conWri/index.php';
                        break;
                    case 'location':
                        $includePage = 'contact/stando/index.php';
                        break;
                    case 'map':
                        $includePage = 'contact/stando/standok/index.php';
                        break;
                    case 'route':
                        $includePage = 'contact/stando/anfahrt/index.php';
                        break;
                }
            }
            if(isset($_GET['done']))
            {
                switch($_GET['done'])
                {
                    case 'true':
                        $includePage = 'contact/conMai/index.php';
                        break;
                }
            }
            break;




Hier der Code, der in dem Mailformular steht:
PHP:
<?php
$strEmpfaenger = meineemail;
$strFrom       = '"absender';
$strSubject    = 'Mail Kontakt';
$strReturnhtml = 'http://www.meinedomänede/index.php?site=contact&id=mail&done=true';
$strDelimiter  = ":\t";
$done=$_GET['done'];
if(!isset($done)) $done = 'false';

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}
?>


Beide Fehler nochmal:
- Warnung und $done = true beim betreten der Seite
- Rücksprung auf die Startseite anstatt zur index.php?site=contact&id=mail&done=true


Vielen dank schonmal für deine Hilfe. (schon wieder) :)
 
Zuletzt bearbeitet:
Ich hab den ja von euch beiden genommen. Die Warnung ist jetzt auch verschwunden, nur eben der Sprung auf die Seite funktioniert nicht.

Anstatt auf die Seite "index.php?site=contact&id=mail&done=true" zu springen, werde ich auf die Startseite verwiesen.

Ich habe in der index angegeben wo er bei diesen Parametern hingehen soll, aber funktioniert nicht. Siehe mein code (besser gesagt euer code :) ) vom letzten Beitrag!
 
Zurück