Probleme mit Netscape
Martin Jung
- cgi
0 Wilhelm0 Reiner Rusch0 Gero Takke0 stephan0 Martin Jung0 Cheatah
Woran könnte es liegen, dass Netscape eine per CGI erhaltene HTML-Seite im entsprechenden Frame nur als Quellcode anzeigt?? Mit IEP5 wird die Seite schön dargestellt.
http://www.auktionentk.de/run.html Dort dann auf <Katalog> und im rechten Frame auf <Anfordern>.
Gruesse und Danke, Martin
Woran könnte es liegen, dass Netscape eine per CGI erhaltene HTML-Seite im entsprechenden Frame nur als Quellcode anzeigt?? Mit IEP5 wird die Seite schön dargestellt.
Im NC 4.07 richtig. Vielleicht mal Deinen Cache loeschen.
Gruesse
Wilhelm
Hi Wilhelm,
1 Minute vor Reiner ;-))
Im NC 4.07 richtig. Vielleicht mal Deinen Cache loeschen.
Habe ich mehrmals gemacht. Trotzdem geht's weder mit NN4.04. noch NN4.51. Web_Washer abschalten hilft auch nicht. Sieht aber so aus, als wäre es ein lokales Problem bei mir, denn sonst würde es ja bei Dir nicht funktionieren.
Danke und Gruesse,
Martin
Hallo Martin,
hast Du vielleicht vergessen,
print "Content-type: text/html\n\n";
hinzuschreiben? Wäre meine Vermutung!
Alles Gute,
Reiner
Hi Reiner,
flotte Antwort ;-)))
hast Du vielleicht vergessen,
print "Content-type: text/html\n\n";
nee, ist korrekt gesetzt
Danke, Martin
flotte Antwort ;-)))
hast Du vielleicht vergessen,
print "Content-type: text/html\n\n";
nee, ist korrekt gesetzt
Dann muß es an etwas anderem im Header liegen!
Ist die Endung korrekt (.pl/.cgi)? Hast Du, falls es sich um Unix handelt, die "executable"-bits gesetzt (chmod 755)?
Reiner
Hi Reiner,
Dann muß es an etwas anderem im Header liegen!
Ist die Endung korrekt (.pl/.cgi)?
Ja - mailform.cgi
Hast Du, falls es sich um Unix handelt, die "executable"-bits gesetzt (chmod 755)?
Hatte ich schon gemacht, der Kollege von Strato hat dann mit chmod 777 (richtig?) alle Rechte vergeben - keine Hilfe. Netscape will bei mir einfach nicht.
Ich habe den (wichtigen) Teil des Perl-Codes in der Antwort an Gero gepostet.
Danke und Gruesse, Martin
Hatte ich schon gemacht, der Kollege von Strato hat dann mit chmod 777 (richtig?) alle Rechte vergeben - keine Hilfe. Netscape will bei mir einfach nicht.
zu den Flags generell:
Die Flags bestehen aus drei Trippeln:
[Version] [Besitzer] [Gruppe] [Others]
Version:
-: Datei
d: Verzeichnis
....
der Rest teilt sich in:
rwx
r: read (=4)
w: write (=2)
x: execute (=1)
, d.h. wenn Du z.B. 755 angibst, darfst Du (als Besitzer der Datei) alles machen, die Gruppe, der Du angehörst, darf nur lesen und ausführen, alle anderen (die Zugriff auf den Server haben) ebenso....
Alles Gute,
Reiner
hi!
chmod 777 (richtig?)
Falsch! Mit diesen Rechten könnte jeder die Datei umschreiben, nicht nur der Besitzer.
bye, Frank!
Ja, bei mir kommt auch nur Source an, sorry fürs "spamming"..
ich hatte gerade vor einer halben stunde das gleiche problem, und bin dann darauf gekommen, dass in dem skript (perl in meinem fall)
eine ausgabe _VOR_ dem header (Content-Type: text/html)
stattgefunden hat, allerdings ist dann das Content-Type mit auf der seite gewesen.
in meinem fall hat es geklappt, wenn ich statt des internen perl-interpreters von apache (mod_perl) den externen benutzt habe... vielleicht ist das ein ansatz, wenn auch keine lösung...
es scheint auf alle fälle mit dem header zu tun zu haben.
der entsprechende code wäre sehr hilfreich.
bis dann
gero
Hi Gero,
eine ausgabe _VOR_ dem header (Content-Type: text/html)
stattgefunden hat, allerdings ist dann das Content-Type mit auf der seite gewesen.
in meinem fall hat es geklappt, wenn ich statt des internen perl-interpreters von apache (mod_perl) den externen benutzt habe... vielleicht ist das ein ansatz, wenn auch keine lösung...der entsprechende code wäre sehr hilfreich.
#!/usr/bin/perl
$cgiurl = $domain.$ENV{'SCRIPT_NAME'};
$path_abs = "http://www.auktionentk.de";
$htmldir = "";
$path_rel = "..";
$path_graphic = "grafik";
&read;
if ($form[0] eq "send") {&thanks;}
else {&confirm;}
exit;
############
sub read {
read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
print $buffer;
@field = split(/&/, $buffer);
foreach $field (@field)
{
($name, $value) = split(/=/, $field);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.\n)*-->//g;
$form[$i] = $name;
$i = $i + 1;
$form[$i] = $value;
$i = $i + 1;
}
}
############
sub confirm {
print "Content-type: text/html\n\n";
print <<EndHdr
<HTML><HEAD><TITLE>E-Mail Bestätigung</TITLE>
<link rel="stylesheet" type="text/css" HREF="http://www.auktionentk.de/styles.css">
<STYLE type="text/css">
<!--
td {font-family:Verdana,Arial;font-size:9pt;}
//-->
</STYLE></HEAD>
EndHdr
;
print <<EndHTML
<BODY bgcolor="#93B5A0">
<DIV id="confirm" style="position:absolute; left:60px; top:1px; width:500px; height:400px; z-index:2">
<FORM method="POST" action="$cgiurl">
<TABLE border="0"><TR><TD class="a" colspan="3" align="left"><b>Sind folgende Angaben korrekt?</b></TD></TR>
<TR><TD colspan="3"> </TD></TR>
EndHTML
;
$n=0;
$max=$#form;
for ($n;$n<$max;$n=$n + 2)
{
print "<TR><TD align="right" width="150" style="color:#4A4A4A;">$form[$n]:</TD><TD align="right" width="20"> </TD>\n";
if ($form[$n+1] eq "")
{
print "<TD align="left" width="300" style=color:#4A4A4A;>ohne Angabe</TD></TR>\n";
}
else
{
print "<TD align="left" width="200" style="font-weight:bold;"><nobr>$form[$n+1]</nobr></TD></TR>\n";
}
}
print <<EndHTML
<TR><TD colspan="4"> </TD></TR><TR align=right><TD><input type="submit" name="send" value="Alles klar!"></TD><TD> </TD><TD align="left"><input type="button" value="Erneute Eingabe" onClick="history.back()"></TD></TR>
EndHTML
;
print "</TABLE></FORM></DIV>";
print <<EndHTML
<DIV style="position:absolute; left:0px; top:0px; width:100%; height:400px; z-index:1;">
<TABLE border="0" cellpadding="0" cellspacing="0"><TR><TD><IMG src="$path_rel/$path_graphic/1pxT.gif" width="50" height="2"></TD><TD><IMG src="$path_rel/$path_graphic/1pxT.gif" width="160" height="350"></TD><TD><IMG src="$path_rel/$path_graphic/1pxT.gif" width="180" height="1"></TD><TD><IMG src="$path_rel/$path_graphic/1pxT.gif" width="180" height="1"></TD></TR><TR><TD><IMG src="$path_rel/$path_graphic/1pxT.gif" width="50" height="72"></TD><TD align="right" class="botl"> </TD><TD class="botm"> </TD><TD class="botr"> </TD></TR><TR><TD colspan="2" height="30"> </TD><TD id="date" valign="bottom"> <B>aktualisiert am:</B><BR> 18·August·1999</TD><TD colspan="2"> </TD></TR></TABLE><BR></DIV></BODY></HTML>
EndHTML
;
}
###############
sub thanks {
print "Content-type: text/html\n\n";
print <<EndHdr;
<HTML><HEAD><title>E-Mail Bestätigung</title>
<link rel="stylesheet" type="text/css" HREF="http://www.auktionentk.de/styles.css">
<style type="text/css">
<!--
td {font-family:Verdana,Arial;font-size:9pt;}
//-->
</style>
<script language="Javascript">
<!--
function Show(Divname)
{
if (document.all)
{
document.all[Divname].style.visibility = "visible";
a = Divname;
setTimeout ("Hide(a)",2000);
}
---cut-----
Hier ist er. Es get um &confirm.
Danke und Gruesse, Martin
hm...
ich hab das skript noch mal lokal versucht, es ging ohne probleme, naja abgesehen davon, dass du 2 zeilen unten vergessen hast (EndHdr,}) =)
also kann es im prinzip nur an dem server liegen...
ich hab es hier als tmp.pl gespeichert, .pl's werden als application/x-perl übertragen.
mehr ist mir auf die schnelle nicht eingefallen,
naja
bis dann
gero
... und auch als .cgi in einem "normalen" verzeichnis abgesegnet.
liegt definitiv an strato...
irgendjemand hat übrigens gerade in einem anderen thread erwähnt, dass der IE alles als html ansieht, was ihm in die finger kommt...
also hat es auch nichts mit netscape zu tun, das file kommt einfach falsch rüber.
na gut, viel erfolg ;)
gero
Danke erstmal Gero,
ich hab das skript noch mal lokal versucht, es ging ohne probleme, naja abgesehen davon, dass du 2 zeilen unten vergessen hast (EndHdr,}) =)
Wo genau?
ich dachte <EndHDR> reicht...
also kann es im prinzip nur an dem server liegen...
ich hab es hier als tmp.pl gespeichert, .pl's werden als application/x-perl übertragen.
Dann dürfte es doch aber generell nicht laufen, auch nicht mit MSIEP, oder?
Gruss, Martin
Was ich meinte war,
dass sowohl die sub thanks als auch die print-funktion nich beendet wurden, allerdings bin ich mir fast sicher, dass du einfach nur zwei zeilen vergessen hast zu kopieren, also im sinne von kopieren/einfügen ;)
dass es nicht am netscape liegt, hab ich eben schon erwähnt, dafür leg ich meine hand ins feuer =)
versuch den: http://www.teamone.de/selfaktuell/self_forum/29388.html
bis dann
gero
Habe einen Fehler gefunden:
############
sub confirm {
»»
print "Content-type: text/html\n\n";
print <<EndHdr
Semikolon fehlt!!!:
print <<EndHdr;
<HTML><HEAD><TITLE>E-Mail Bestätigung</TITLE>
<link rel="stylesheet" type="text/css" HREF="http://www.auktionentk.de/styles.css">
<STYLE type="text/css">
<!--
td {font-family:Verdana,Arial;font-size:9pt;}
//-->
</STYLE></HEAD>
EndHdr
;
Was soll das ";" hier?
print <<EndHTML
siehe oben!
<BODY bgcolor="#93B5A0">
<DIV id="confirm" style="position:absolute; left:60px; top:1px; width:500px; height:400px; z-index:2">
<FORM method="POST" action="$cgiurl">
<TABLE border="0"><TR><TD class="a" colspan="3" align="left"><b>Sind folgende Angaben korrekt?</b></TD></TR>
<TR><TD colspan="3"> </TD></TR>
EndHTML
;
siehe oben!
Alles Gute,
Reiner
Hi Reiner,
Semikolon fehlt!!!:
print <<EndHdr;EndHdr
;
Was soll das ";" hier?
Das hatte ich einem "Perl"-Manual so gesehen.
Ich habe alle Punkte jetzt geändert, aber unter NN geht's immer noch nicht.
Kann ich aus der Tatsache, dass es mit MSIEP5 funktioniert wenigstens schliessen, dass es kein serverseitiges (sprich: generelles) Problem ist, sondern eher Netscape betrifft??
Alles Gute,
Danke :-)) - Meine Nerven...
Gruesse, Martin
Danke :-)) - Meine Nerven...
Gruesse, Martin
Mach' Dir keine Sorgen! Das wird schon laufen. Manchmal sind das ganz kleine Details, die einen in den Wahnsinn treiben. Ich kenne den Provider nicht, vielleicht liegt es wirklich an seinen Servereinstellungen?! Aber warum (gerade bei CGI) das mit einem Brwoser geht, mit dem anderen nicht, ist mir wirklich ein Rätsel!!!
Ich bin auch auf die Lösung gespannt!!!
Machs gut,
Reiner
Hi Reiner, hi Gero
Ich scheine den Fehler gefunden zu haben:
Ich habe einfach
<print "Content-type: text/html\n\n";>
nochmal direkt unter
<#!/usr/bin/perl
print "Content-type: text/html\n\n";>
eingegeben!!
Die Seiten werden jetzt angezeigt - jetzt muss ich mich nur noch um Netsacpe's Probleme bei den Pfadangaben für externe Style-Sheet-Dateien kümmern ;-)))
Danke Euch beiden nochmal für die ausdauernde Hilfe!!
Gruesse, Martin
Ich scheine den Fehler gefunden zu haben:
Ich habe einfach
<print "Content-type: text/html\n\n";>
nochmal direkt unter
<#!/usr/bin/perlprint "Content-type: text/html\n\n";>
eingegeben!!
Suuppperrr!!!!
Das dachte ich mir schon.
Freut mich, daß es nun endlich geklappt hat.
Reiner
......
und für die erklärung dazu siehe das posting von Calocybe
.
da gibts glaub ich nix mehr zu sagen, ausser was du für probleme mit externen style sheets hast...?
hehe
gero
Tag!
Du scheinst genau den Fehler gemacht zu haben, den auch Gero hatte, anemlich dass Du etwas ausgibst, BEVOR Du den text/html-Header ausgibst.
sub read {
read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
print $buffer;
read wird kurz nach dem Starten des Scriptes aufgerufen, und da steht dieses print $buffer. Ich weiss nicht, was Du da fuer einen Webserver verwendest. Der Apache wuerde Dich hier erstmal uebel beschimpfen und etwas von premature end of script headers faseln. Aber Deiner erzeugt offenbar einen default-Mimetyp, der nicht text/html ist. Ich wollte jetzt nicht sinnlos irgendwas abschicken, um das auszuprobieren. Wenn Du aber willst, kannst Du das tun und dann mit "View Frame Info" im Netscape den gesendeten Mime type ablesen.
Apart from that bin ich etwas verwundert darueber, dass Du eine Funktion read nennst und dann innerhalb dieser die Builtin-Funktion desselben Namen aufrufen kannst, ohne dass eine Endlos-Rekursion entsteht. Naja, offenbar funzt es ja, aber ich wuerde solche Mehrdeutigkeiten vermeiden.
Die Sache mit
> print <<EndHdr
...
> EndHdr
> ;
ist aber korrekt. Du solltest hier auch kein Semikolon nach print <<EndHdr setzen.
Calocybe
... was natürlich auch erklären würde, warum es hier lokal funktioniert, ich habe es ohne ein POST aufgerufen...
mist, dass ich sowas offensichtliches übersehen habe...
das einzige was mich noch verwundert ist, dass im body nicht noch einmal der Content-Type erwähnt ist, apache zumindest schickt ihn noch mal mit...
nunja, bis dann.
gero
Tag!
Guten Tag, Calocybe (wieder richtig geschrieben..),
Du scheinst genau den Fehler gemacht zu haben, den auch Gero hatte, anemlich dass Du etwas ausgibst, BEVOR Du den text/html-Header ausgibst.
Yep, ich bin vor ein paar Minuten selbst daraufgekommen.
Apart from that bin ich etwas verwundert darueber, dass Du eine Funktion read nennst und dann innerhalb dieser die Builtin-Funktion desselben Namen aufrufen kannst, ohne dass eine Endlos-Rekursion entsteht. Naja, offenbar funzt es ja, aber ich wuerde solche Mehrdeutigkeiten vermeiden.
Wird sofort geändert (Du meinst, weil "read" ein rservierter Name ist?).
Bin auch selten dämlich, der Name stammt noch aus der "Planungsphase" für die Orientierung. Ich wollte das eigentlich längst geändert haben. Jetzt wundert mich auch, dass es klappte (obwohl sich Xitami hier lokal auch nie beschwerte..).
Die Sache mit
> print <<EndHdr
...
> EndHdr
> ;
ist aber korrekt. Du solltest hier auch kein Semikolon nach print <<EndHdr setzen.
Mache ich wieder rückgängig.
Danke und Gruesse, Martin
PS. Habe wieder viel gelernt heute!
Woran könnte es liegen, dass Netscape eine per CGI erhaltene HTML-Seite im entsprechenden Frame nur als Quellcode anzeigt?? Mit IEP5 wird die Seite schön dargestellt.
Hallo Martin ...
ich hatte auch mal das Problem ...
bei mir lag es einfach daran, daß in der Zeile
print "Content-type: text/html\n\n"; kein Leerzeichen stehen darf !!!
Versuch es also mal mit print "Content-type:text/html\n\n";
... schreib mal zurück, wenn es funktioniert ...
cu Stephan
Hi Stephan,
es funzt bereits. Das steht alles in den restlichen Postings ;-))
kleiner Tipp: das Leerzeichen war es nicht.
Gruesse, Martin
Hi,
ich hatte auch mal das Problem ...
bei mir lag es einfach daran, daß in der Zeile
print "Content-type: text/html\n\n"; kein Leerzeichen stehen darf !!!Versuch es also mal mit print "Content-type:text/html\n\n";
entschuldige bitte, aber das ist definitiv falsch. Im Gegenteil _muß_ das Leerzeichen dort stehen. Andernfalls ist a) der Server krank, und b) ist es mehr oder weniger Zufall, wenn der Browser es korrekt interpretiert.
Cheatah