Textformatierung in PHP

C

chris_9_11

Aktives Mitglied
Thread Starter
Dabei seit
11.06.2004
Beiträge
162
Reaktionspunkte
0
Hallo zusammen,

hoffentlich kann mir hier jemand helfen. Ich habe in Dreamweaver MX ein Kontaktformular eingebaut, welches über PHP verarbeitet wird und bei Fehleingaben eine Meldung bringt. Soweit funktioniert alles einwandfrei, doch leider passt die Formatierung des ausgegebenen Textes nicht zu meinem restlichen Design der Website. Wie kann ich den Text am besten formatieren? Außerdem frage ich mich, wie ich den Text der per Mail verschickt wird formatieren kann.

Dann hätte ich noch eine kleine Frage am Rande. Wie kann ich unter PHP überprüfen, ob in einem Feld nur Ziffern (z.B. bei der PLZ) oder nur Ziffern und Sonderzeichen (z.B. bei der Telefon- oder Faxnummer) eingegeben worden sind?

Danke für eure Hilfe!
chris_9_11
 
(Teil-) Antwort

Grüß dich, Chirs.

Mit der Dreamweaver-Thematik kann ich dir leider nicht weiter helfen - formuliere meinen Code eigendlich gern selbst. :)

Du kannst zwar die Ausgabe von PHP mit HTML-Tags selbst steuern; wenn du aber ja bereits Dreamweaver angeworfen hast, willste da bestimmt nicht mehr händisch ran *frageweitergeb*

Was die Überprüfung der Stringinhalte für Tel-/Faxnummer-Eingaben angeht, würde ich folgendes empfehlen:

zur Überprüfung der Länge der Eingabe schau dir mal folgende Funktion an:
http://de.php.net/manual/de/function.strlen.php

und zur Überprüfung, ob die enthaltenen Zeichen auch nur solche sind, die du haben möchtest, ist folgende Funktion interessant:
http://de.php.net/manual/de/function.strspn.php

Zusammengesetzt könnte das in PHP dann so aussehen:


<?php

// Daten aus Post-Übermittlung holen
// ggf. $_POST durch $_GET bei Get-Übermittlung des Formulars austauschen
$handy_nr = $_POST["formularfeld_beispiel_name"];

$erlaubte_zeichen = "0123456789/";
$erlaubte_laenge = 13;

if ( strlen($handy_nr) <= $erlaubte_laenge
&& strspn($handy_nr, $erlaubte_zeichen) == true )
{

// weitermachen bzw. versenden...

}
else
{

// zurück bzw. Fehlermeldung ausgeben...

}


?>


_________
goodluck

...netrob
 
Zuletzt bearbeitet:
Dreamweaver verwende ich nur um dem ganzen ein passendes Äußeres zu verleihen. Den PHP-Code habe ich komplett manuell eingegeben. Ich habe jetzt halt eine ganz simple if-Funktion, die mir bei einem Fehler eine Meldung mit echo ausgibt. Wie kann ich jetzt den Text dieser Meldung formatieren? Muss ich die html-Tags auf eine bestimmte Weise einfügen? Danke auf jedem Fall schon mal für deine Hilfe.

chris_9_11
 
Du kannst das (fast) einfach als normalen HTML-Code einpflegen:

PHP:
<?php
echo "<h2><font color = red><strong>Fehlermeldung</strong></font></h2>";
?>

erzeugt dir die Ausschrift Fehlermeldung in rot in der Grösse der Überschrift 2. Deiner Fantasie sind dabei keine Grenzen gesetzt ;)

Horror
 
Ich persönlich zähle da auf Template Engines. Mit solchen kann man wunderbar das Design von der Applikation trennen. Besonders praktisch wenn man zu mehreren an nem Projekt arbeitet. Ne freie Templateenigne wäre Smarty:
http://smarty.php.net/

Kurzes Beispiel:
PHP datei:
PHP:
<?php
require('smarty.class.php');
$smarty = new Smarty;

$smarty->assign('title','Testpage');
$smarty->assign('nachricht','Hello World!');
$smarty->display('template.tpl');
?>

und die Template datei (template.tpl):
HTML:
<html>
<head><title>{$title}</title></head>
<body>
<span style="font-family: Helvetica, sans-serif; font-size: 12px;">{$nachricht}</span>
<body></html>
ausgegeben wird dann wenn man die php datei aufruft:
HTML:
<html>
<head><title>Testpage</title></head>
<body>
<span style="font-family: Helvetica, sans-serif; font-size: 12px;">Hello World!</span>
<body></html>

Die möglichkeiten von Smarty sind ziemlich groß. So kann man Strings im template verändern, If abfragen machen, schleifen oder auch phpcode direkt im template ausführen. Am besten mal die ersten paar seiten des Manuals lesen (gibts auch auf deutsch auf der site). Ist wirklich sehr Praktisch.

Nochwas:
Wenn dus so wie Horror machst, musst du alle " die im htmlcode vorkommen 'escapen', also nen vorangestellten backslash (\) verpassen.
PHP:
<?php
echo "<a href=\"index.php\">test</a>";
// besser ist:
echo '<a href="index.php">test</a>';
// wenn ' statt " verwendet wird, wird der code aber nicht nach variablen durchsucht. (das spart aber auch performance).
?>

Ich hoffe das war jetzt nicht zu kompliziert. :)
 
Es klappt einfach nicht!?

Ich habe es jetzt mal mit ganz einfachem HTML-Code versucht. Das alles sieht dann folgendermaßen aus:

PHP:
	if (strpos($HTTP_POST_VARS[email], "@") > -1 ){
		}
	else {
		echo "<font color = red; font = Times>Ihre angegebene Mail Adresse ist nicht gültig!</font><br>"; die; }

Der ausgegebene Text ist aber dann grün!? und wird in Arial bzw. der jeweiligen Systemschriftart (ich verwende Safari, unter IE in Windows ist es Times) angezeigt.

Außerdem füge ich mal einen Link zu der Seite an (ist wie gesagt unter Dreamweaver mit Hilfe von CSS-Styles angelegt worden):

http://www.sina-waechter.com

Ich möchte einfach, dass die Fehlermeldung so formatiert ist wie der normale Fließtext und die Abschlussmeldung nach erfolgreicher Übermittlung der Nachricht die gleiche Formatierung wie die Überschriften hat. Ihr könnte auch gerne mal probehalber das Formular ausfüllen, geht ja sowieso an mich.

Damit alles komplett ist, hänge ich einfach mal noch den gesamten Code des PHP-Scripts an:

PHP:
<?
$HTTP_POST_VARS[empfaenger] = "deiss@thomas-imaging.de";

// Zusammenfügen der Einzelteile zu einer Mail
$HTTP_POST_VARS[textfinal] = "Name: $HTTP_POST_VARS[name]\nAdresse: $HTTP_POST_VARS[strasse]\nPLZ, Ort: $HTTP_POST_VARS[plz] $HTTP_POST_VARS[ort]\nTelefon: $HTTP_POST_VARS[telefon]\nFax: $HTTP_POST_VARS[fax]\nE-Mail Adresse: $HTTP_POST_VARS[email]\n \nhat ihnen folgende Nachricht gesendet:\n \n$HTTP_POST_VARS[betreff]\n \n$HTTP_POST_VARS[text]";

//jetzt wird geprüft ob Mail, Name oder Betreff vielleicht zu lang sind
	$HTTP_POST_VARS[lengthe] = strlen($HTTP_POST_VARS[email]);
	$HTTP_POST_VARS[lengthn] = strlen($HTTP_POST_VARS[name]);
	$HTTP_POST_VARS[lengthf] = strlen($HTTP_POST_VARS[firma]);
	$HTTP_POST_VARS[lengths] = strlen($HTTP_POST_VARS[strasse]);
	$HTTP_POST_VARS[lengthp] = strlen($HTTP_POST_VARS[plz]);
	$HTTP_POST_VARS[lengtho] = strlen($HTTP_POST_VARS[ort]);
	$HTTP_POST_VARS[lengtht] = strlen($HTTP_POST_VARS[telefon]);
	$HTTP_POST_VARS[lengthfa] = strlen($HTTP_POST_VARS[fax]);
	$HTTP_POST_VARS[lengthb] = strlen($HTTP_POST_VARS[betreff]);
	$HTTP_POST_VARS[lengthtx] = strlen($HTTP_POST_VARS[text]);
	if ($HTTP_POST_VARS[lengthf] < 30) {
		}
	else {
		echo "Ihr Firmenname ist zu lang!"; die; }
	if ($HTTP_POST_VARS[lengthn] < 30) {
		}
	else {
		echo "Ihr Name ist zu lang!"; die; }		
	if ($HTTP_POST_VARS[lengths] < 30) {
		}
	else {
		echo "Ihre Adresse ist zu lang!"; die; }		
	if ($HTTP_POST_VARS[lengthp] < 6) {
		}
	else {
		echo "Ihre Postleitzahl ist zu lang!"; die; }
	if ($HTTP_POST_VARS[lengtho] < 30) {
		}
	else {
		echo "Ihr Ortsname ist zu lang!"; die; }
	if ($HTTP_POST_VARS[lengthe] < 50) {
		}
	else {
		echo "Ihre E-Mail Adresse ist zu lang!"; die; }
	if ($HTTP_POST_VARS[lengthb] < 100) {
		}
	else {
		echo "Ihr Betreff ist zu lang!"; die; }
	if ($HTTP_POST_VARS[lengthtx] < 500) {
		}
	else {
		echo "Ihre Nachricht ist zu lang!"; die; }
//Hier wird geprüft ob die Mail Adresse gültig ist und ob in Name, Betreff und Nachricht überhaupt Text ist.
	if (strpos($HTTP_POST_VARS[email], "@") > -1 ){
		}
	else {
		echo "<font color = red; font = Times>Ihre angegebene Mail Adresse ist nicht gültig!</font><br>"; die; }
	if ($HTTP_POST_VARS[name] == "") {
		echo "Sie müssen einen Namen eingeben!<br>"; die; }
	else {
		}
	if ($HTTP_POST_VARS[firma] == "") {
		echo "Sie müssen einen Firmennamen eingeben!<br>"; die; }
	else {
		}
	if ($HTTP_POST_VARS[text] == "") {
		echo "Sie haben keine Nachricht eingegeben!<br>"; die; }
	else {
		}
//und ab dafür
	if (@mail($HTTP_POST_VARS[empfaenger], $HTTP_POST_VARS[betreff], $HTTP_POST_VARS[textfinal], "From: \"$HTTP_POST_VARS[name]\" <$HTTP_POST_VARS[email]>"))
		{
		echo "<strong>Ihre Nachricht wurde übermittelt.<br>Vielen Dank!</strong></div>"; }
	else
		{
		echo "<div align='center'><strong>Aufgrund eines Fehlers<br>konnte Ihre Nachricht nicht übermittelt werden!<br>Bitte versuchen Sie es erneut.</strong></div>"; }
?>

Danke für eure Hilfe!

chris_9_11
 
Zuletzt bearbeitet von einem Moderator:
Es gibt in XHTML keine Farbe namens "red;". Das Element <font> ist veraltert und soll nicht mehr verwendet werden. Es kennt weiterhin kein Attribut namens "font".

Wolltest du sowas wie <span style="color: red; font: Times;">...</span> ?
Oder noch besser eine Klasse mit Deklaration im Stylesheet, ist ja nicht die einzige Fehlermeldung.

"<br>" ist kein gültiges Element in XHTML. Dort heißt es <br/>. Empfohlenderweise aber <br />, weil die Seite als HTML ausgeliefert wird, und sich die Browser ohne das Leerzeichen verschlucken können.

Das Beenden mittels die() erzeugt eine ungültige Seite. Schau dir mal den Quelltext an, bricht in den 65. Untertabelle ab.

Das Javascript ist nicht korrekt eingebaut, siehe http://www.w3.org/TR/xhtml1/#h-4.8

Das PHP Skript ist gruselig.

Viel Erfolg noch.
 
Zuletzt bearbeitet:
Mit <span style="color: red; font: Times;">...</span> habe ich es jetzt auch probiert, doch leider bringt er mir dann beim Ausführen einen Fehler.

Was meinst du mit "eine Klasse mit Deklaration im Stylesheet"? Ich habe mit Dreamweaver einige CCS-Styles angelegt, die auch schon abrufen wollte, was aber auch nicht funktioniert hat.

Allgemein muss ich zu dem PHP-Script sagen, dass ich mir vor einer Woche einfach mal ein Beispiel-Script aus dem Netz geladen habe, welches eigentlich funktionieren sollte, es aber nicht tat. Ich bin froh, dass ich es bis jetzt immerhin geschafft habe mit Self-PHP und vielem Ausprobieren das PHP-Skript an meine Seite anzupassen, einige Fehler zu korrigieren und dass das Script das macht, was ich von ihm möchte. Von daher kann ich gut verstehen, dass es gruselig ist. Was habe ich falsch gemacht und welche Korrekturen sollte ich vornehmen? Sollte ich statt dem die-Befehl den exit-Befehl verwenden?

Das Java-Script habe ich mithilfe von Fireworks erstellt und einfach in Dreamweaver importiert.
 
chris_9_11 schrieb:
Mit <span style="color: red; font: Times;">...</span> habe ich es jetzt auch probiert, doch leider bringt er mir dann beim Ausführen einen Fehler.

das liegt an den anführungstrichen. verwende entweder ' anstelle von " oder setze vor jedem " einen backslash. so z.B.

Code:
<span style=\"color: red; font: Times;\">

der fehler "grüne farbe" könnte auch an den leerzeichen um das = liegen. verwende aber lieber css/style angabe - das ist sauberer.

gruss, cat
 
chris_9_11 schrieb:
Von daher kann ich gut verstehen, dass es gruselig ist. Was habe ich falsch gemacht und welche Korrekturen sollte ich vornehmen? Sollte ich statt dem die-Befehl den exit-Befehl verwenden?

na... :) gruselig ist es nicht - man muss am anfang nur ne menge lernen...
grundsätzlich ist das - wie du schon sagts - ein rohes anfänger-skript und
dafür ja schon recht gut.

zu der die-frage: du kannst die oder exit verwenden. das ist identisch.
ich nehme lieber exit. klingt positiver :)

grundsätzlich fällt bei dem skript auf, dass es auf biegen und brechen
nur das nötigste erledigt und das z.T. noch nicht optimal. da du
programmier-einsteiger bist, fehlt bei dem skript eine grundsätzliche
konzeption. um das zu schaffen, braucht man allerdings grundkenntnisse
der programmierung.

ich würde dir für den anfang empfehlen, das skript nicht ständig per die/exit
abzubrechen - das ist bei dir zur Zeit weder notwendig noch sinnvoll. mach es
lieber so:

1.) zuerst prüfen ob alle daten da sind
2.) dann prüfen, ob die daten deinen vorgaben entsprechen (z.B. länge)
3.) dann entscheiden, ob du die mail sendest oder nicht
4.) dann einen entsprechenden info-text an den user ausgeben
5.) dann exit, von mir aus auch die :) !

so könntest du zum beispiel zunächst fehler sammeln und dann
eine komplette status-info über diese fehler an den user senden:


PHP:
// hier kommen die bedingungen wie z.B. strlen

 if ($HTTP_POST_VARS[name] == "") {
   $fehlermeldung .= "Sie müssen einen Namen eingeben!<br>"; 
   // wichtig: wenn du .= anstelle von = schreibts, wird es 
   // deiner Variablen $fehlermeldung hinzugefügt. 
   // .= ist quasi ein additions-zeichen für text...
   // Du kannst damit also alle Fehlermeldung der einzelnen Abfragen sammeln.

   $error = TRUE;
   // $error ist dein Indikator, ob es einen fehler gegeben hat. 
   // sobald ein fehler auftritt, schreibst du diese zeile.  ps: das ist keine 
   // eigenschaft von php - das definierst du einfach selber.
}

if ($HTTP_POST_VARS[lengthtx] > 500) { // hier mit > "größer als" matchen
   $fehlermeldung .= "Der Text ist zu lang!<br>";
   $error = TRUE;
}

// hier kommt deine prüfung auf existenz von betreff, text etc.
// ...


// hier kommt der versand der mail
// ...

if ($error != TRUE){ // != meint "wenn es nicht ist"
   @mail(.... hier dein mail-dingens einbauen... ....);
    // hier noch echo mit dem OK-Text einbauen
    echo "danke... alles prima!";
    exit;
} else { // else bedeutet hier: es gab einen fehler
    // hier werden nun die gesammelten fehlermeldung ausgegeben.
   echo $fehlermeldung;
   exit;
}

Achtung: deine E-Mail-Kontrolle ist falsch. damit würden auch falsche
adressen als gültig angesehen werden. verwende lieber das hier:

PHP:
if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-]+(\.[_a-z0-9-]+)*(\.([a-z]{2,4}))+$",$HTTP_POST_VARS['email'])){
  // hier rein schreiben, was passieren soll, wenn alles OK ist.
} else {
  // hier rein schreiben, was passieren soll, wenn die email FALSCH ist.

}

hoffe, du kannst damit was anfangen...

viele grüße, cat
 
Zuletzt bearbeitet:
Ich habe das PHP-Script einfach mal umgebaut und es sieht jetzt folgendermaßen aus:
PHP:
<?

//Hier werden die verschiedenen Variablen festgelegt
	$HTTP_POST_VARS[lengthe] = strlen($HTTP_POST_VARS[email]);
	$HTTP_POST_VARS[lengthn] = strlen($HTTP_POST_VARS[name]);
	$HTTP_POST_VARS[lengthf] = strlen($HTTP_POST_VARS[firma]);
	$HTTP_POST_VARS[lengths] = strlen($HTTP_POST_VARS[strasse]);
	$HTTP_POST_VARS[lengthp] = strlen($HTTP_POST_VARS[plz]);
	$HTTP_POST_VARS[lengtho] = strlen($HTTP_POST_VARS[ort]);
	$HTTP_POST_VARS[lengtht] = strlen($HTTP_POST_VARS[telefon]);
	$HTTP_POST_VARS[lengthfa] = strlen($HTTP_POST_VARS[fax]);
	$HTTP_POST_VARS[lengthb] = strlen($HTTP_POST_VARS[betreff]);
	$HTTP_POST_VARS[lengthtx] = strlen($HTTP_POST_VARS[text]);
	$HTTP_POST_VARS[empfaenger] = "deiss@thomas-imaging.de";
	
//Hier wird geprüft ob der Name, die E-Mail-Adresse, ein Betreff und eine Nachricht eingegeben wurden.
	if ($HTTP_POST_VARS[Name] == "") { 
Z185 ***		$fehlermeldung .= "Bitte geben Sie Ihren Namen ein!<br />";
		$error = TRUE;
		}
	if ($HTTP_POST_VARS[email] == "") { 
***		$fehlermeldung .= "Bitte geben Sie eine E-Mail-Adresse ein!<br />";
		$error = TRUE;
		}
	if ($HTTP_POST_VARS[betreff] == "") { 
***		$fehlermeldung .= "Bitte geben Sie einen Betreff ein!<br />";
		$error = TRUE;
		}
	if ($HTTP_POST_VARS[text] == "") { 
***		$fehlermeldung .= "Sie haben keine Nachricht eingegeben!<br />";
		$error = TRUE;
		}
	if ($error = TRUE){ 
***		echo "<strong>Aufgrund der folgenden Fehler konnte Ihre Nachricht nicht übermittelt werden:<br /></strong>$fehlermeldung"; 
***		exit; 
		}
		
//Hier wird geprüft, ob die angegebenen Daten den Anforderungen entsprechen.
	if ($HTTP_POST_VARS[lengthf] > 30) { 
***		$fehlermeldung .= "Ihr eingegebener Firmenname ist zu lang!<br />"; 
***		$error = TRUE; 
		}
	if ($HTTP_POST_VARS[lengthn] > 30) { 
***		$fehlermeldung .= "Ihr eingegebener Name ist zu lang!<br />"; 
***		$error = TRUE; 
		}
	if ($HTTP_POST_VARS[lengths] > 30) { 
***		$fehlermeldung .= "Ihre eingegebene Adresse ist zu lang!<br />"; 
***		$error = TRUE; 
		}
	if ($HTTP_POST_VARS[lengthp] != 5) { 
***		$fehlermeldung .= "Ihre eingegebene Postleitzahl ist ungültig!<br />"; 
***		$error = TRUE; 
		}
	if ($HTTP_POST_VARS[lengtho] > 30) { 
***		$fehlermeldung .= "Ihr eingegebener Ortsname ist zu lang!<br />"; 
***		$error = TRUE; 
		}
	if ($HTTP_POST_VARS[lengthe] > 50) { 
***		$fehlermeldung .= "Ihre eingegebene E-Mail Adresse ist zu lang!<br />"; 
***		$error = TRUE; 
		}
	if ($HTTP_POST_VARS[lengthb] > 100) { 
***		$fehlermeldung .= "Ihr eingegebener Betreff ist zu lang!<br />"; 
***		$error = TRUE; 
		}
	if ($HTTP_POST_VARS[lengthtx] > 500) { 
***		$fehlermeldung .= "Ihre eingegebene Nachricht ist zu lang!<br />"; 
***		$error = TRUE; 
		}


//Hier werden die Email-Adresse, die PLZ, die Telefon- und die Faxnummer auf ihre Gültigkeit überprüft.
	if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-]+(\.[_a-z0-9-]+)*(\.([a-z]{2,4}))+$",$HTTP_POST_VARS['email'])){ 
		$fehlermeldung .= "Ihre eingegebene E-Mail-Adresse ist ungültig!<br />"; 
***		$error = TRUE; 
		}
	if (eregi("[0-9]",$HTTP_POST_VARS['plz'])){ 
		$fehlermeldung .= "Achten Sie bitte darauf, dass Ihre PLZ nur Zahlen enthält!<br />"; 
***		$error = TRUE; 
		}
	if (eregi("[/-()0-9]",$HTTP_POST_VARS['telefon'])){ 
		$fehlermeldung .= "Ihre eingegebene Telefonnummer ist ungültig!<br />"; 
***		$error = TRUE; 
		}
	if (eregi("[/-()0-9]",$HTTP_POST_VARS['fax'])){ 
		$fehlermeldung .= "Ihre eingegebene Faxnummer ist ungültig!<br />"; 
***		$error = TRUE; 
		}

//Hier wird die E-Mail zusammengestellt und versendet.
	if ($error != TRUE){ 
***		$HTTP_POST_VARS[textfinal] = "Name: $HTTP_POST_VARS[name]\nAdresse: $HTTP_POST_VARS[strasse]\nPLZ, Ort: $HTTP_POST_VARS[plz] $HTTP_POST_VARS[ort]\nTelefon: $HTTP_POST_VARS[telefon]\nFax: $HTTP_POST_VARS[fax]\nE-Mail Adresse: $HTTP_POST_VARS[email]\n \nhat ihnen folgende Nachricht gesendet:\n \n$HTTP_POST_VARS[betreff]\n \n$HTTP_POST_VARS[text]";
		@mail($HTTP_POST_VARS[empfaenger], $HTTP_POST_VARS[betreff], $HTTP_POST_VARS[textfinal], "From: \"$HTTP_POST_VARS[name]\" <$HTTP_POST_VARS[email]>"); 
	****echo "<strong>Ihre Nachricht wurde übermittelt.<br>Vielen Dank!</strong></div>"; 
****	exit; 
		}
	else { 
***		echo "<strong>Aufgrund der folgenden Fehler konnte Ihre Nachricht nicht übermittelt werden:<br /></strong>$fehlermeldung"; 
***		exit; 
		}
?>
Leider bringt er mir aber beim Ausführen gleich in der zweiten Zeile (bei der Überprüfung des Namens) einen Fehler. Für eure weitere Hilfe bin ich sehr dankbar!

chris_9_11

PS: Weshalb macht der mir jetzt hier in der PHP-Ansicht immer wieder Sternchen rein?
 
Zuletzt bearbeitet:
du hast "$HTTP_POST_VARS[Name]" geschrieben - müsste "$HTTP_POST_VARS[name]" heißen (kleines n)

gruß, cat
 
ps:
achtung: deine regexes für tel/fax werden nicht so funktionieren... das ganze ist auch nicht so einfach, da es keinen wirklichen standard für tel-nummern gibt. nimm die lieber raus!
 
Ich habe die Variable abgeändert, aber er bringt den Fehler trotzdem noch und zwar in der nächsten Zeile. (war vorher auch schon so)

Wie müsste die regexes für tel/fax aussehen, damit es funkrioniert? Davon abgesehen, dass du natürlich recht hast und ich es rausnehmen werde.
 
Leider bringt er mir aber beim Ausführen gleich in der zweiten Zeile (bei der Überprüfung des Namens) einen Fehler. Für eure weitere Hilfe bin ich sehr dankbar!

..und ich für den Text der Fehlermeldung!!!

Falsch ist in jedem Fall das zuweisen von Werten in ein PHP-Global-array!
aus $HTT_POST_VARS[] kann gelesen werden. Überschrieben jedoch nicht,
auch sollte man dort nichts selbst speichern (probiert habe ich das nie, da es dem Prinzip dieser Arrays entgegenläuft)! Vielmehr werden die Globalen-Post-Variablen für die Skriptausführung ggf. inlokale kopiert:

if ($HTTP_POST_VARS)
$post_email=$HTTP_POST_VARS[email];

durch ein weiteres Formular kann dann $post_email wieder als email in $HTTP_POST_VARS[email] eingetragen werden. Zusätzlichs chreibe ich auch immer

$HTTP_POST_VARS['email'], also mit '-Zeichen!
 
Zuletzt bearbeitet:
Der Text der Fehlermeldung lautet wiefolgt:

Parse error: parse error, unexpected T_VARIABLE in .../kontaktsend.php on line 185

Meinst du mit deiner Ausführung, dass ich die Variablen mit der Längenangabe (length...) anders ausdrücken soll. Deine Argumentation kann ich gut nachvollziehen, aber in meinem letzten Script (das gruselige :)) hat es auf jedem Fall funktioniert.
 
wegus schrieb:
Falsch ist in jedem Fall das zuweisen von Werten in ein PHP-Global-array!

autsch - das habe ich überlesen - ja. das sollte auf keinen gefall gemacht werden. m.E. dürfte das auch gar nicht funktionieren.


ps: wo ist zeile 185?
 
@chris: exakt! Die HTTP_* arrays wurden bei PHP später hinzugefügt. Früher war es so, daß eine per FORM übergebene Variable

<input type=text name=heinz>

auch als $heinz im Zielskript existierte. Dumemrweise läßt sich damit $heinz leicht beim Aufruf überschreiben (Sicherheitsleck). Daher hat man die _POST, _GET,... eingeführt. Hieraus können gezielt POST/GET-Variablen gelesen werden. Ein hineinschreiben sollte zumindest existierende Werte nicht überschreiben, ist aber eben auch nicht vorgesehen. Du sollst daraus übergebene Werte auslesen und diese dann lokal speichern. Bei der nächsten Formularübergabe landen sie dann im dortigen _POST-array. Oder Du verwendest sessions und das zugehörige array, da macht das Setzen von Variablen dann auch Sinn. So ist es nicht vorgesehen, daher auch die unerwartete Variable in Zeile 185 ( welche auch immer das ist).
 
Ich habe meinen Beitrag #11 abgeändert und die Zeile 185 markiert (Z185). Wenn es aber an der Variablen liegt, warum hat es dann im ersten Script funktioniert? An den Variablen habe ich bis jetzt noch nicht geändert. - Kam noch nicht dazu! Werde ich aber morgen machen. Soll ich dann alle vom Formular ausgegebenen Variablen in "normale" Variablen umwandeln?
 
Jepp, das ist unabhängig vom Fehler nicht korrekt!

P.S.: Es hilt glaube ich das Leerzeichen zwischen Variable und Punkt

$variable.=

zu entfernen ! Generell hilft bei PHP aufgrund der grausigen Fehlermeldungen einfach nur Isolation. Zieh die Zeile in ein kurzes Beispielskript und teste sie. Da freuen sich dann auch die die Du um Hilfe fragst! Niemand wühlt sich auch nur gern durch 20 Zeilen Code!
 
Zuletzt bearbeitet:
Zurück
Oben Unten