Forum: PC-Programmierung Wieso funktioniert PHP nicht im HTML ?


von Franl (Gast)


Lesenswert?

Ich habe folgendes PHP script im html Dokument eingebunden:
1
<!DOCTYPE html>
2
<html>
3
4
<head>
5
    <title>Titel</title>
6
    <meta charset="UTF-8">
7
</head>
8
9
<body>
10
    <?php
11
    $empf = "frank_sami@gmail.com";
12
    $betreff = "NeueEmail";
13
    $from = "From: Henrik Fricke <frick@gmail.com>\n";
14
    $from .= "Reply-To: frick@gmail.com \n";
15
    $from .= "Content-Type: text/html\n";
16
    $text = "Das ist eine Email.";
17
    mail($empf, $betreff, $text, $from);
18
  ?>
19
</body>
20
21
</html>

Aber wenn ich die html datei aufrufe, dann stehen da nur die einträge 
wie sie im php drinnen sind. Jedoch nicht eine Fehlermeldung von mail().
In allen Tutorials wird entweder eine Fehlermeldung ausgegeben oder aber 
die Mail wird auch tatsächlich versendet. Bei mir ist es aber so als ob 
php gar nicht existiert, denn ausgegeben wird nichts..

von html <> php (Gast)


Lesenswert?

Franl schrieb:
> Aber wenn ich die html datei aufrufe [...]

Kommt drauf an, wie der Webserver konfiguriert ist,
aber normalerweise wird PHP-Code nicht in .html-,
sondern nur in .php-Dateien ausgeführt.

von Gerd (Gast)


Lesenswert?

Weil du einen Webserver brauchst, auf dem php installiert ist und läuft.
Wenn du die Datei nur so öffnest, siehst du die Datei auch nur so.

von Georg A. (georga)


Lesenswert?

Die Datei sollte mindestens mal mit .php enden und nicht mit .html. 
Ansonsten ist vermutlich der PHP-Support bei dir nicht aktiviert. 
Mangels Infos zum Webserver von dir und kaputter Glaskugel bei mir ist 
es aber auch schwer, was dazu zu sagen...

von Franl (Gast)


Lesenswert?

Wenn ich es also so mache:
1
<!DOCTYPE html>
2
<html>
3
4
<head>
5
    <title>Titel</title>
6
    <meta charset="UTF-8">
7
</head>
8
9
<body>
10
    <form action="kontakt.php" method="post">
11
    <input type="submit" value="Absenden"/>
12
  </form>
13
</body>
14
15
</html>

und kontakt.php:
1
<?php
2
    $empf = "frank_sami@gmail.com";
3
    $betreff = "NeueEmail";
4
    $from = "From: Henrik Fricke <frick@gmail.com>\n";
5
    $from .= "Reply-To: frick@gmail.com \n";
6
    $from .= "Content-Type: text/html\n";
7
    $text = "Das ist eine Email.";
8
    mail($empf, $betreff, $text, $from);
9
  ?>

und alles beim serviceprovider oben wär, dann würde alles glatt gehen?

von Franl (Gast)


Lesenswert?

Wäre es sinnvoll für testzwecke es so zu machen:

http://webmasterjuice.com/how-to-activate-built-in-web-server-windows

von Gerd (Gast)


Lesenswert?

Hab ich noch keine Erfahrungen mit gesammelt.
Setz dir einfach nen Apache auf, gibts etliche
Seiten die dich dadurch lenken.

Such einfach mal "Apache php Windows", da solltest du genug finden.

Achte nur drauf, dass du den Apache, wenn du ihn nicht brauchst in
den Windows Diensten zu deaktivieren.

von Lukas K. (carrotindustries)


Lesenswert?

Gerd schrieb:
> Setz dir einfach nen Apache auf, gibts etliche
> Seiten die dich dadurch lenken.

Noch einfacher: Ein rundum-sorglos Paket wie XAMPP 
https://www.apachefriends.org/de/index.html nehmen, da ist gleich alles 
fertig konfiguriert drin.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

Franl schrieb:
> Wenn ich es also so mache:
...
> und alles beim serviceprovider oben wär, dann würde alles glatt gehen?

Nein. Die meisten serviceprovider deaktivieren die mail() funktion, weil 
sie das versenden von spam-mails von ihren Servern verhindern wollen. 
Soetwas ist immer riskant, besonders wenn man noch unerfahren ist und 
nicht weiss, wo man keine GET oder POST variabeln ohne überprüfung 
einsetzen darf. (momentan ist der obere code noch sicher)

Als erstes teste ich immer etwas einfaches auf dem server, danach wird 
alles klar:
1
<?php phpinfo(); ?>

von Fenki (Gast)


Lesenswert?

Bei meiner Applikation habe ich ein .htaccess-file erstellt mit 
folgendem Inhalt:

AddType application/x-httpd-php .php .html .htm

Seit da funktionieren auch PHP-Includes in .htm-Dateien. PHP muss 
natürlich vom Server unterstützt werden ;-)
Der Eintrag im .htaccess veranlasst den Server dazu, auch eine .htm oder 
.html-Datei zu parsen und allfälligen PHP-Code auzuführen. 
Standardmässig tut er dies nämlich nicht.
Ob die mail()-Funktion bei Deinem Provider/Server funktioniert, ist 
natürlich eine andere Frage...

Gruss

Fenki

von Kein Troll (Gast)


Lesenswert?

Wenn die mail() funktion deaktiviert ist, sollte man den provider 
wechseln.
Ein webserver ohne die mail funktion ist eher wertlos.
Jede baruchbare funktioalitaet, sei das ein webshop, irgendwas, 
benoetigt eine mailfunktion zur Bestaetigung.

von Εrnst B. (ernst)


Lesenswert?

Kein Troll schrieb:
> [..] benoetigt eine mailfunktion zur Bestaetigung.

Genau. EINE Mailfunktion. Nicht zwingend DIE mail()-Funktion.

Die mir bekannten größeren PHP-Projekte, Shop-Systeme, CMS-Suiten, ... 
kommen alle ohne mail() klar. Da konfiguriert man halt dem SMTP-Server 
und fertig.

: Bearbeitet durch User
von Andreas D. (rackandboneman)


Lesenswert?

Leicht OT: Reale Email-Addressen in Beispielcode sind keine gute Idee.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.