• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Form error ausgeben ohne PHP

jakestyler

Mitglied
Hallo,
ich erstelle gerade einen komplette HTML Website mit einem Kontaktformular. Das PHP zum Formular liegt zwar auch auf dem Server, ich möchte aber auf der Haupt-Seite keine .php Endung verwenden.
Nun würde ich von der PHP-datei gerne wieder zu index.html zurückleiten, wenn alles richtig war.
Dann soll automatisch zu "Contact us" gescrollt werden (z.B via #[<a name="contact"></a> habe ich schon eingebaut]). Dazu soll dann da stehen "Your message was send successfully.", oder sowas.
Normal hätte ich das via PHP gemacht und dann meineurl.com?message=success benutzt.
So brauche ich aber einen andere Lösung.
Darf auch gerne mit Javascript passieren :)
 
Von deiner Forderung mal abgesehen kannst du beispielsweise dem (apache-)Webserver per .htaccess-Datei mitteilen, dass er auch *.html interpretieren soll. Damit wäre dem Endungsproblem aus dem Weg gegangen (nicht empfehlenswert).
Von der Überprüfungsdatei aus (die unabdingbar eine serverseitige Sprache enthalten muss) kannst du dann z. B. per header() auf die vorherige Seite rück- bzw. weiterleiten und den Ankerparameter mit angeben.

Nils aka XraYSoLo
 
Und jetzt erklärst du uns, warum du keine .php-Extension haben willst.
Du kannst natürlich per mod_rewrite .php wie .html behandeln.

Code:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.html$ $1.php [L]
 
Ich habe mir selbst als Aufgabe gestellt, die Seite als HTML zu bauen.
Ich habe auchschon gesehen dass das geht, ich weiß nur nichtmehr wo.

BTW: Ich habe ehrlich gesagt garkeine Ahnung, wiem an dieses url.com?contact=success nennt (also das mit dem ?).
Wisst ihr wie das heisst?
 
Zuletzt bearbeitet von einem Moderator:
Das ist ganz normale Variablenweitergabe per GET-Methode (also Browserzeile).

Klar kannst du eine Seite komplett ohne Scriptsprache erstellen, nur die dynamischen Funktionen fliegen dann eben flach.

Nils aka XraYSoLo
 
Das sind Parameter die man an eine URL anhängen kann. Mit dem ? wird gesagt "ab jetzt kommen Parameter" und danach kommen eben diese in der Form "name=wert", wobei bei Verwendung mehrerer Parameter dann ein & als Trennzeichen genutzt wird. Also z.B. so:

Code:
http://www.example.com/index.php?parameter1=value1&parameter2=value2

In Bezug auf HTML muss man lediglich darauf achten das & im HTML-Code generell als &amp; zu schreiben.

Dein eigentliches Vorhaben würde ich folgendermaßen umsetzen:
kontakt.html ruft das Kontaktformular auf.
Dieses wird an eine PHP-Datei, z.B. kontakt.php abgeschickt. Die kontakt.php prüft alle Angaben auf Richtigkeit.
Wenn irgendetwas nicht stimmt, dann leitet kontakt.php per header-Location zu kontakt.html zurück.
Wenn alles stimmt, dann leitet kontakt.php zu index.html zurück.

Der Knackpunkt ist jetzt, wie Du auf kontakt.html die Fehler bzw. index.html den Danketext darstellen könntest. Hierfür müsstest Du jetzt JavaScript verwenden. Als Weiterleitungsziel in PHP gibst Du z.B.

PHP:
header("Location: /kontakt.html?fehlerfelder=".urlencode($fehlerfelder));

an, wodurch z.B. zu dieser URL weitergeleitet wird:

Code:
/kontakt.html?fehlerfelder=feld1,feld2,feld3

In kontakt.html musst Du nun ein JavaScript beim Aufruf ausführen lassen, welches diese Parameter an der URL prüft. JavaScript selbst kann per

Code:
window.location.href

auf die aktuell aufgerufene URL zugreifen. Mit einer entsprechenden Funktion kannst Du dir dann die Parameter auslesen. So eine Funktion gibt es z.B. hier:
URL Parameter mit JavaScript auslesen | Jaqe's Blog
Und je nachdem was dabei heraus kommt, kannst Du dann per JavaScript den HTML-Code der Seite so beeinflussen, dass er die entsprechenden Hinweise ausgibt.

Alternativ dazu würde ich die oben bereits erwähnte Möglichkeit von mod_rewrite nochmal nennen. Dadurch könntest Du in der Adresszeile .html stehen haben, aber tatsächlich .php-Dateien aufrufen können. Nachteil davon ist lediglich, dass Du alle Links in deiner Programmierung auf .html setzen musst, nicht auf .php.

Noch eine weitere Alternative wäre, wenn Du die .html-URLs direkt durch den PHP-Parser abarbeiten lässt. Dann könntest Du die Dateien .html nennen, sie könnten aber beliebig PHP-Code enthalten. Stichwort dafür wäre "PHP mappen".
 
Danke erstmal!
Wenn ich jetzt alles auf php umstelle, gibt es dann die Möglichkeit garkeine Endung anzuzeigen, ohne dass ich Ordner erstellen muss (also mit mode_rewrite)?
 
Zurück
Oben