von KnutWurst |
Danke euch beiden. Da wäre ich ehrlich gesagt glaube ich nicht drauf gekommen. Ausser ich hätte mir mal das Manual angesehen, wobei ich dann wahrscheinlich noch zu wenig Kenntnise über PHP im Allgemeinen habe, um das Problem zu erkennen. Aber danke, jetzt habe ich auf jeden Fall etwas über Header() und Output Buffering gelernt! 
Gute Nacht! |
von chip |
@subjective: Leider war ich zu langsam. Aber na ja: doppelt hält besser!  |
von chip |
Also, das ist logisch, dass das nicht funktioniert: Du gibst Daten aus, d.h. ein Header wird schon versendet und dann versuchst du die Daten im Header danach noch zu verändern (mit header("Location: ...")) und das funktioniert eben nicht. Du könntest dieses Problem allerdings umgehen, indem du das sog. Ouput-Buffering aktivierst. Dazu musst du vor jeglichen HTML-Code in den Anfang der Datei die PHP-Anweisung ob_start() schreiben und am Ende der Datei ob_end_flush(). Also in deinem Beispiel:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39: | <?php
ob_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>-- Bestätigung --</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$admin = "Knut2@web.de";
$subject = "Betreff eben";
$message = "Art des Eintrages: $art\n Titel/Name: $titel\n URL: $url\n EMail: $mail\n Beschreibung: $desc\n Rubrik: $rubrik\n" ;
mail($admin, $subject, $message);
switch($art){
case "kostenlos":
header("Location:http://www.domain.de/test1.htm");
break;
case "kostenpflichtig":
header("Location: http://www.domain.de/ test2.htm");
break;
}
?>
</body>
</html>
<?php
ob_end_flush();
?> |
Mehr dazu in der PHP-Manual! |
von subjective |
Das liegt daran, das du die Fehlerausgabe zu niedrig oder ganz aus hast. Du darft vor header()-Anweisungen keine Ausgabe machen - nichts außerhalb von <?php... ?> - nicht mal Leerzeichen oder Zeilenumbrüche. Erst recht keinen HTML-Quellcode. |
von KnutWurst |
Hallo zusammen,
mich werdet Ihr hier jetzt denke ich auch öfters sehen, da ich nun vor habe mich etwas tiefgreifender mit dynamischer (!) webprogrammierung zu befassen.
Also beginnen wir mal mit dem ersten problem, was mich ein wenig deprimiert, weil es im Grunde nicht so schwer ist (glaube ich zumindest)
Ich habe ein Formular, dessen Daten über einen Formmailer an meine Adresse geleitet werden. Das klappt auch wunderbar. Nun möchte ich den User, aber je nachdem wie er ein paar Radiobuttons ausgewählt hat (also 2 Auswahlmöglichkeiten, die RadioB haben denselben Namen nur andere values) auf die Seite A bzw. wenn er den anderen Radiobutton klick auf die Seite B leiten.
unverdorben wie ich bin, versuche ich das momentan mit der switch Anweisung, aber abgesehen davon, dass die Daten weitergeleitet werden passiert gar nichts.
So, damit das schneller geht hier das, was ich bisher haben:
Formular (der Teil, wo die Radiobuttons drin stehen)
1:
2:
3:
4:
5:
6:
7:
8: | ssd
<form name="formular" method="post" action="formmailer4.php">
<input name="art" type="radio" value="kostenlos" checked>
<strong>kostenlos</strong>
<input type="radio" name="art" value="kostenpflichtig">
<strong>kostenpflichtig</strong>
|
So jetzt der Formmailer, wie ich in momentan gestaltet habe (ein recht einfaches Teil, reicht mir aber vollkommen, wenn das mit dem um/weiterleiten funktionieren würde)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37: |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>-- Bestätigung --</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$admin = "Knut2@web.de";
$subject = "Betreff eben";
$message = "Art des Eintrages: $art\n Titel/Name: $titel\n URL: $url\n EMail: $mail\n Beschreibung: $desc\n Rubrik: $rubrik\n" ;
mail($admin, $subject, $message);
switch($art){
case "kostenlos":
header("Location:http://www.domain.de/test1.htm");
break;
case "kostenpflichtig":
header("Location: http://www.domain.de/ test2.htm");
break;
}
?>
</body>
</html>
|
So, ich wäre euch sehr dankbar, wenn mir jemand auf die Sprünge helfen würde was da falsch ist. Wie gesagt mit diesem Ding da oben, werden mir die Daten per Mail geschickt und dann bin ich eben auf ner weißen Seite und nichts passiert.
Danke schonmal! |
|