Darf in einer PHP-Datei kein head und body sein?
mortimer
- php
hi
ich habe folgenden code benutzt:
------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<?php
if($action=="senden") {
$betreff = trim(stripslashes($betreff));
$inhalt = trim(stripslashes($inhalt));
// Prüfung der Angaben nach dem Senden
if(!$name) $fehler[] = "Ihr Name fehlt.";
if(!$betreff) $fehler[] = "Der Betreff fehlt.";
if(!$inhalt) $fehler[] = "Sie haben keine Nachricht geschrieben.";
if(!$von) $fehler[] = "Ihre Emailadresse fehlt";
if(!count($fehler)) { // Sendet Email, wenn Prüfung "ok"
echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
echo "Name: <b>$name</b><br>\n";
echo "Betreff: <b>$betreff</b><br>\n";
echo "Inhalt: <b>".nl2br($inhalt)."</b><br>\n";
$text .= "inhalt: $inhalt\n";
@mail($an,$betreff,$inhalt,$von,"From: ".$von);
} else { // Fehlerausgabe, wenn Felder leer waren
echo "Beim Senden traten folgender Fehler auf:";
echo "<ul><li>".implode("<li>",$fehler)."</ul>";
}
}
?>
<head>
<title>bookmark</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
<!-- scrollbar link add here -->
</head>
<body background="face/content.jpg" bgproperties="fixed" topMargin=0 leftMargin=0 rightMargin=0 marginwidth="0" marginheight="0" link=#EFEFEF alink=#EFEFEF vlink=#EFEFEF>
<table width="340" height="250" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="340" height="30"> </td>
</tr>
<tr align="center">
<td width="340" height="220"> <table width="330" height="210" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="330" height="13" align="center" class="headfett">
<table width="330" height="13" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="230" height="13" background="lines/typ01.gif" class="newssmall"><img src="face/blank.gif" width="4" height="13" align="absmiddle">contact
- formular<img src="face/blank.gif" height="13" align="absmiddle"></td>
<td width="100" height="13" background="lines/typ02.gif" class="newssmall">
<img src="face/blank.gif" width="4" height="13" align="absmiddle">links<img src="face/blank.gif" height="13" align="absmiddle"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="330" height="197" align="center" valign="bottom" class="newssmall">
<table width="320" height="178" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="320" height="10" align="right" class="newssmall"> </td>
</tr>
<tr>
<td width="320" height="168">
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="action" value="senden">
<input type="hidden" name="an" value="indyaner@indyaner.de">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="40" height="20" class="newssmall">Name</td>
<td><input name="name" class="input" value="<?php echo $name; ?>"></td>
</tr>
<tr>
<td width="40" height="20" class="newssmall">Email</td>
<td><input name="von" class="input" value="<?php echo $von; ?>"></td>
</tr>
<tr>
<td width="40" height="20" class="newssmall">Betreff</td>
<td><input name="betreff" class="input" value="<?php echo $betreff; ?>"></td>
</tr>
<tr>
<td width="40" valign="top" class="newssmall">Inhalt</td>
<td><textarea name="inhalt" class="inputtext"><?php echo $inhalt; ?></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" class="inputbutton" value="Schicken"></td>
</tr>
</table>
</form></td>
</tr>
</table>
</td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
------------------------------------------------
aber das funktioniert nicht, was seltsam ist weil fats genau der gleich script (mail geändert) ohne body und Head funktionieren.
Darf also eine PHP-Datei kein head&body haben?
mfg
mortimer
Ich glaube am Anfang und Ende der ganzen Sache muß jeweils
<?
?>
stehen.
Guude!
Ich glaube am Anfang und Ende der ganzen Sache muß jeweils <? ?> stehen.
Hat er ja - Problem ist nur, dass Deine Ausgaben zwischen <html>- und <head>-Tag stehen... Wo und wie soll der Browser da was anzeigen?
Kopier Deinen PHP-Text einfach mal in den <body> und schau, was passiert.
LG
Lemmy
Neue Homepage, neues Design: http://www.olison.com
Hi Mortimer,
Darf also eine PHP-Datei kein head&body haben?
doch, sollte sie sogar. Allerdings müssen die Elemente dort stehen, wo sie auch hingehören. Dabei ist der PHP-Code absolut irrelevant, wichtig ist nur, was der Browser letztendlich erhält. In deinem Fall sind das einige <p> in einem Bereich, der weder <head> ist, geschweige denn <body>...
LG Roland
Moin!
ich habe folgenden code benutzt:
[code unwichtig...]
aber das funktioniert nicht, was seltsam ist weil fats genau der gleich script (mail geändert) ohne body und Head funktionieren.
"Funktioniert nicht" funktioniert nicht. _WAS_(!!!) FUNKTIONIERT NICHT???
Ich rate mal: Die Fehlermeldung bzw. die Erfolgsmeldung werden im Browser nicht oder nicht dort angezeigt, wo du es willst. Ist ja aber auch kein Wunder, denn der PHP-Code gibt diese Information zwischen <HTML> und <HEAD> aus - dort gehört es aber laut HTML-Standard nicht hin! Wenn Browser das ignorieren, ist es ihr gutes Recht.
Mit anderen Worten: Schreibe deinen PHP-Code dorthin, wo du die _Ausgabe_ haben willst, aber nicht irgendwo hin, wo gerade Platz ist.
Darf also eine PHP-Datei kein head&body haben?
Nein, PHP darf und _muss_ alles ausgeben, was für das jeweilige Ausgabeformat notwendig ist. Wenn PHP HTML ausgibt, muß es, um valide zu sein, auch DOCTYPE, <HTML>, <HEAD>, <TITLE> und <BODY> ausgeben.
- Sven Rautenberg
hi mortimer,
aber das funktioniert nicht, was seltsam ist weil fats genau der gleich script (mail geändert) ohne body und Head funktionieren.
natürlich, da Du dann den Fehler nicht machst
Darf also eine PHP-Datei kein head&body haben?
doch natürlich darf sie
guck mal auf die Reihenfolge
Du machts Ausgaben im nicht Body-Bereich!
Entweder, dein php-Code liefert keine Ausgaben oder er muss im Body-Bereich stehen.
bei Dir steht aber
<html>
irnegdwientext kreiert von php
<head>
<title>blabla</title>
</head>
<body>
blabla
</body>
</html>
siehst Du es ?
hih
romy
Hallo mortimer,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
her fängt html an.
[...]
echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
hier (oder weiter unten), fängst du mit dem inhalt von <body> an, obwohl der noch nicht geöffnet wurde (und <head> noch nicht da war)
[...]
<head>
hier fangst du mit <head> an
[...]
<body [...]>
hier fängt <body> dann an.
[viele tabellen gelöscht]
<form action="<?php echo $PHP_SELF; ?>" method="post">
verwende besser $_SERVER["PHP_SELF"]
<input type="hidden" name="an" value="indyaner@indyaner.de">
bau die e-mailadresse an die das ganze geschickt werden soll erst im Script die die e-mail verschickt ein, sonst kann dein Script zum Spamen missbraucht werden.
[noch mehr tabellen gelöscht]
aber das funktioniert nicht,
was funktioniert nicht? Fehlermeldung?
Grüße aus Nürnberg
Tobias
moin
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><?php
...
echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
echo "Name: <b>$name</b><br>\n";
echo "Betreff: <b>$betreff</b><br>\n";
echo "Inhalt: <b>".nl2br($inhalt)."</b><br>\n";
....
echo "Beim Senden traten folgender Fehler auf:";
echo "<ul><li>".implode("<li>",$fehler)."</ul>";
?>
<head>
....
</head>
<body background="face/content.jpg" bgproperties="fixed" >
....
</body>
</html>
Natürlich dar ein PHP-Skript head und body haben, sollte es im Normalfall auch. Allerdings wird es in der Reihenfolge abgearbeitet, wie es dasteht, also nicht erst alles php und dann der Rest.
Dein Problem ist, dass die Ausgaben des PHP-Skripts ins leere laufen, da sie VOR dem Head ausgegeben werden und nicht etwa in den Body, wo sie hingehören.
Hallo Mortimer,
selbstverständlich darf ein PHP-Script auch einen HTML-Head und einen HTML-Body entahlten. PHP ist eine Inline-Sprache, dass heißt, dass der zugehörige Parser die PHP-Anteile aus der HTML-Seite herausfinden kann.
Man sollte sich nur Strict an das EVA-Prinzip halten:
Eingabe (Postvars, Getvars, etc.)
Verarbeitung (PHP-Funktionen und -Körper)
Ausgabe (HTML-Teil gemischt mit den Ausgabeanweisungen von PHP);
Ein PHP-Script erzeugt HTML. Es MUSS deshalb sogar einen HEAD und einen BODY (oder ein FRAMESET) erzeugen, sonst wäre die Ausgabe ja nicht valide.
Liebe Grüße aus http://www.braunschweig.de
Tom
hi
was ich mit "nicht funktionieren" meinte ist dass bei mir keine e-mail ankommt!
mfg
mortimer
Hallo mortimer,
was ich mit "nicht funktionieren" meinte ist dass bei mir keine e-mail ankommt!
deine mail() Funktion ist falsch (die hat nur 4 Parameter bei dir aber 5 ->[1]). Wenn du das '@' vor der Funktion wegmachst, siehst du auch die Fehler die die Funktion vermutlich produziert. Deine Fehler behandlung ist aber auch nicht so ganz das wahre...
Grüße aus Nürnberg
Tobias