Homepage selbermachen 7.851 Themen, 35.615 Beiträge

PHP-Fehler

gelöscht_97727 / 17 Antworten / Baumansicht Nickles

Eigentlich heißt es ja: "Aberstund hat Gold im Mund" - für mich aber nicht mehr. Vorhin lud ich PHP-Dateien für meine Homepage auf den Server von tripod.lycos, musste aber feststellen, dass das Versenden von E-mails über ein PHP- Formular  nicht funktionierte. Es wurde die Fehlermeldung angezeigt: Parse error: parse error, expecting `','' or `';'' in check.php on line 22


Ich habe aber keine Ahnung, was ich falsch gemacht habe! Hier einmal der Quelltext meiner Datei check.php: ( Die Linie 22 ist FETT)


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <title>Prüfung</title>
</head>
<body>
<body bgcolor="#31659C">
<table width='350' cellspacing='1' bgcolor='#666699' align='center'>
<tr><td>
<table width='100%' bgcolor='#AAAADD'>
<tr>
 <td colspan='2' align='center'><font face="Arial, Helvetica" size=3 font color="#FFFFFF">
  Prüfung der Eingaben</font>
 </td>
</tr>
<tr>
<td>
<?
$form_error=false;
if ($nname == ''):
 
 echo "<font face="Arial" size=3 font color="#FFFFFF">Geben Sie einen Nachnamen an!</font><br>\n";
 
 $form_error=true;
endif;
if ($vname == ''):
 echo "<font face="Arial" size=3 font color="#FFFFFF">Geben Sie einen Vornamen an!<br></font>\n";
 $form_error=true;
endif;


if ($email == ''):
 echo "<font face="Arial" size=3 font color="#FFFFFF">Geben Sie eine E-Mail-Adresse an!<br></font>\n";
 $form_error=true;
endif;


if ($message == ''):
 echo "<font face="Arial" size=3 font color="#FFFFFF">Geben Sie einen Nachrichtentext an!<br></font>\n";
 $form_error=true;
endif;


if ($form_error):
 
 echo "<a href='javascript:history.back()'><font face="Arial" size=3 font color="#FFFFFF">zurück</font></a><font face="Arial, Helvetica" size=3 font color="#FFFFFF"> zum Formular<br></font\n";
else:
 
 echo "<font face="Arial" size=3 font color="#FFFFFF">Alles angegeben.</font>";
 
 echo "<font face="Arial" size=3 font color="#FFFFFF">Wirklich senden?</font> <a href='send.php?nname=$nname&vname=$vname&email=$email&message=$message'><font face="Arial, Helvetica" size=3 font color="#FFFFFF">JA!</font></a><br>\n";
endif;
?>
</td></tr>
</table>
</td></tr>
</table>
</body>
</html>


Könnte es vielleicht sein, dass die Formatierungsbefehle des auszugebenden Textes die Browser "verwirrt"?


 


 


 


 


 

bei Antwort benachrichtigen
Zaphod gelöscht_97727 „PHP-Fehler“
Optionen

... sind die "-Zeichen alle mit einem Backslash maskiert?
Have fun,
Z.

bei Antwort benachrichtigen
Heinz_Malcher Zaphod „... sind die -Zeichen alle mit einem Backslash maskiert? Have fun, Z.“
Optionen

genau das war sein fehler :-)

bei Antwort benachrichtigen
Heinz_Malcher gelöscht_97727 „PHP-Fehler“
Optionen

Hi, die Sache ist denkbar einfach. die offizielle Lösung:

ersetze jedes Anführungszeichen in einem echo Befehl, also \" durch \\" (das ist die offizielle Version)

da mir das aber viel zu umständlich ist, ersetze einfach die Anführungszeichen \" durch einfache Hochkommatas '
Das ist zwar nicht die offizielle Version, aber so klappts immer. Dann wird richtig geparsed.

Viel Spass
und hier die Quelle:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Prüfung</title>
</head>
<body>
<body bgcolor="#31659C">
<table width='350' cellspacing='1' bgcolor='#666699' align='center'>
<tr><td>
<table width='100%' bgcolor='#AAAADD'>
<tr>
<td colspan='2' align='center'><font face="Arial, Helvetica" size=3 font color="#FFFFFF">
Prüfung der Eingaben</font>
</td>
</tr>
<tr>
<td>
<?
$form_error=false;
if ($nname == ''):

echo "<font face='Arial' size=3 font color='#FFFFFF'>Geben Sie einen Nachnamen an!</font><br>\n";

$form_error=true;
endif;
if ($vname == ''):
echo "<font face='Arial' size=3 font color='#FFFFFF'>Geben Sie einen Vornamen an!<br></font>\n";
$form_error=true;
endif;



if ($email == ''):

echo "<font face='Arial' size=3 font color='#FFFFFF'>Geben Sie eine E-Mail-Adresse an!<br></font>\n";
$form_error=true;
endif;



if ($message == ''):

echo "<font face='Arial' size=3 font color='#FFFFFF'>Geben Sie einen Nachrichtentext an!<br></font>\n";
$form_error=true;
endif;



if ($form_error):


echo "<a href='javascript:history.back()'><font face='Arial' size=3 font color='#FFFFFF'>zurück</font></a><font face='Arial, Helvetica' size=3 font color='#FFFFFF'> zum Formular<br></font>\n";
else:

echo "<font face='Arial' size=3 font color='#FFFFFF'>Alles angegeben.</font>";

echo "<font face='Arial' size=3 font color='#FFFFFF'>Wirklich senden?</font> <a href='send.php?nname=$nname&vname=$vname&email=$email&message=$message'><font face='Arial, Helvetica' size=3 font color='#FFFFFF'>JA!</font></a><br>\n";
endif;
?>
</td></tr>
</table>
</td></tr>
</table>
</body>
</html>

bei Antwort benachrichtigen
Armageddon Heinz_Malcher „Fehler ganze einfach“
Optionen

Vorschlag: Vertausche die Anführungszeichen mit den Hochkommatas.
<?php
$variable = 'web of xxx.yyy';
echo ''.$variable.'';" target="_blank" rel="nofollow">http://www.xxx.yyy/">'.$variable.'';
?>
Das ist im PHP- und im HTML-Code korrekt, wobei das bei den Hochkommatas bei der Variablendeklaration egal ist.

Ich lasse mich aber gerne belehren ;-)

Armageddon

bei Antwort benachrichtigen
xafford Armageddon „Fehler ganze einfach“
Optionen

es gibt einen unterschied zwischen einfachem und doppeltem hochkomma:
variablen zwischen doppelten hochkommas werden interpretiert, zwischen einfachen hochkommas nicht.
zur veranschaulichung ein kleines beispiel:
$var="Test";
echo "Dies ist ein $var"; // Es wird ausgegeben: Dies ist ein Test
echo 'Dies ist ein $var'; // Es wird ausgegeben: Dies ist ein $var

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Armageddon xafford „Fehler ganze einfach“
Optionen

Genau! Aber das ist ja kein Problem, wenn man Variablen nicht mit in die Hochkommata schreibt, sondern mit einem Punkt anhängt, wie in meinem Beispiel: echo 'Dies ist ein '.$var;
Diese Schreibweise gefällt mir sowieso besser, weil man die Variablen so ganz klar getrennt hat und leichter wiederfindet.

Ich hoffe mal, dass hier genug Leser draus lernen, weil wir uns beide wahrscheinlich nur Sachen erzählen, die wir sowieso schon wissen ;-)

Gruß

Armageddon

bei Antwort benachrichtigen
Heinz_Malcher Armageddon „Fehler ganze einfach“
Optionen

Ich nutze eigentlich ausschliesslich diese Varianten um Variablen auszugeben:

echo \' $variable \';

manche (Xafford glaube ich auch) nutzen diese

echo \\" $variable \\";

welche ist nun die offiziell version

bei Antwort benachrichtigen
xafford Heinz_Malcher „und wie lautet die offizielle Version???“
Optionen

es gibt keine "offizielle". ich arbeite gewohnheitsmäßig mit "$variable" wenn es sich um einen string handelt, einfach aus dem grund, daß ich da eine gewisse konstanz drin habe. PHP deklariert variablen kontextabhängig. packe ich eine variable die ein int oder double ist in hochkommata, so wird sie als string umdeklariert.
deswegen packe ich strings immer in hochkommata um keine typenfehler unabsichtlich zu erzeugen.
ps: okay, man könte die variable auch anders deklarieren, so behalte ich aber den überblick. bei ausgaben ist das noch nicht das problem, aber mal angenommen man macht eine überprüfung nach wert UND typ in einer if-abfrage, dann wird das plötzlich sehr wichtig.

$x="1";
if($x===1) // ergibt false
if($x==="1") // ergibt true

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
gelöscht_97727 Nachtrag zu: „PHP-Fehler“
Optionen

Vielen Dank für eure Tipps! Jetzt klappt es endlich, über das Formular E-mails an mich zu schicken.Musste allerdings zuerst noch bei
einer anderen Datei den Fehler verbessern. Wer sich meine Seite anschauen will, hier der Link: http://mitglied.lycos.de/jakobseverin

bei Antwort benachrichtigen
Heinz_Malcher gelöscht_97727 „Vielen Dank für eure Tipps! Jetzt klappt es endlich, über das Formular E-mails...“
Optionen

sieht gut aus :-)

bei Antwort benachrichtigen
Armageddon gelöscht_97727 „Vielen Dank für eure Tipps! Jetzt klappt es endlich, über das Formular E-mails...“
Optionen

Na da fühle ich mich ja gleich wieder aufgefordert etwas dazu zu schreiben ;-)
Erstmal wie mein Vorschreiber: Sieht gut aus.
Was ich aber noch verbessern würde:
- Farbe der Überschrift > zu grell, mach sie etwas dunkler
- bewegender Titel > nervig, ein Titel braucht nicht so viel Aufmerksamkeit, unbewegt oder einmal am Anfang ist besser
- Menü sieht gut aus, aber man könnte noch schon besuchte Seiten kenntlich machen

Zu PHP empfehle ich dir noch einen Editor wie Proton zu verwenden. Der stellt den Quelltext farbig dar, sodass du genau erkennst, was in Anführungszeichen, als Funktion oder als Kommentar gilt. Das erleichtert die Übersicht extrem.

Gruß

Armageddon

bei Antwort benachrichtigen
gelöscht_97727 Armageddon „Na da fühle ich mich ja gleich wieder aufgefordert etwas dazu zu schreiben -...“
Optionen

An Armageddon: Habe deine Tipps befolgt, wie du auf meiner Site sehen kannst, und mir eben Proton heruntergeladen.
Zu deiner Homepage: Die finde ich toll, würde aber eine andere schriftart verwendendie Schrift ist nämlich nicht besonders
gut zu lesen.
Ich habe auch einen PIII 500 im guten alten Sockel1.

bei Antwort benachrichtigen
Armageddon gelöscht_97727 „An Armageddon: Habe deine Tipps befolgt, wie du auf meiner Site sehen kannst,...“
Optionen

Danke für deine Kritik.
Welche Schriftart kann man wohl am besten Lesen? Ich dachte es sei TimesNewRoman oder ähnliche. Ist Arial besser?
Zu deiner Seite ist mir auch noch was eingefallen:
Der neue Titel "Willkommen!" sagt nicht sehr viel aus. Beachte, dass dieser Titel meist für Bookmarks verwendet wird und man bei Fenstern im Hintergrund nur den Titel als Information über die Seite hat (Taskleiste). Stell dir vor, jemand hat fünf Fenster auf verschiedenen Seiten offen und überall steht "Willkommen!", dann muss er/sie sich ja genau merken, in welcher Reihenfolge er/sie jetzt die Fenster geöffnet hat oder alle durchprobieren bis er/sie das richtige erwischt hat.
Dann heißt es weiter "Willkommen auf meiner Homepage!" und man fragt sich "Auf wessen denn?". Wenn man dann den Text darunter durchliest, kommt auch zu keiner Antwort. Du musst davon ausgehen, dass der User zuerst gar nichts weiß und alle Antworten von deiner Seite erwartet.
Weiter sind markierte Textstellen wie Links besonders attraktiv für das Auge und von daher auch sehr wichtig für die Orientierung. Ein "Hier" sagt da nicht viel aus und man muss erst den ganzen Satz lesen um zu wissen, worum es geht. Also statt "Hier geht es zu meiner Homepage" schreibt man besser "Ich freue mich über Besuch auf meiner Homepage". Wenn man Links zu mehreren Homepages macht, sollte man das "meiner" natürlich auch verlinken. In diesem Beispiel reicht ein Blick auf das Wort daneben um zu wissen, worum es geht.

Zu diesem Thema empfehle ich immer KommDesign.de.

man liest sich

Armageddon

bei Antwort benachrichtigen
gelöscht_97727 Armageddon „Danke für deine Kritik. Welche Schriftart kann man wohl am besten Lesen? Ich...“
Optionen

Vielen Dank Armageddon! Morgen werde ich wohl einiges an meiner Site
umbauen. Klingt einleuchtend, was du meinst.
noch 'n schönen Abend!

bei Antwort benachrichtigen
gelöscht_97727 Armageddon „Danke für deine Kritik. Welche Schriftart kann man wohl am besten Lesen? Ich...“
Optionen

Ach ja, hab ich doch etwas glatt vergessen!
Nehm Arial oder Verdana. Sieht wirklich besser aus.

bei Antwort benachrichtigen
xafford Armageddon „Danke für deine Kritik. Welche Schriftart kann man wohl am besten Lesen? Ich...“
Optionen

ich würde helvetica, arial und sans-serif-schriftarten empfehlen, da z.b. helvetica auch auf nicht-ms-betriebssystemen vorhanden ist.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Armageddon xafford „ich würde helvetica, arial und sans-serif-schriftarten empfehlen, da z.b....“
Optionen

Ok, danke ihr beiden. Ich werde die mal ausprobieren.

bei Antwort benachrichtigen