Forenindex » Archiv » Perl und CGI » [SSI] Deutsche Datumsangabe

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

26. Okt 2002, 21:55
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Mit SSI kann man ja das Datum auf einer HTML-Seite anzeigen. Ich hab jetzt den Provider gewechselt und bin deshalb grad am rumprobieren.

Bei <!--#echo var="DATE_LOCAL" --> erhält man ja das komplette Datum. Allerdings auf Englisch (z.B. Saturday, June,...) Wie kann man das auf deutsch anzeigen lassen (ohne JavaScript!), dass am Ende z.B. sowas dasteht wie

Heute ist Samstag, der 26. Oktober 2002. Es ist jetzt 22:00 Uhr.

GrEeZ und bis demnächst, hab jetzt viel Neues zu erkunden, bei dem ich sicher Hilfe brauche! Andreas




Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

[SSI] Deutsche Datumsangabe

SabineP
Beiträge gesamt: 7586

27. Okt 2002, 00:12
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Andreas, ich fürchte das wird nichts mit <!--#echo var="DATE_LOCAL" -->.
Wenn Dein Webserver ein englisches Datumsformat ausgibt (Apache?),
dann kannst Du nur Deinen Provider fragen, ob er daran etwas ändern kann.

Natürlich läßt sich das Datum auch mit Perl in der gewünschten Form ausgeben.

Möglich wäre so eine Variante:
<!--#exec cgi="/cgi-bin/datum.pl" -->

Wie die datum.pl für diesen Fall aussehen sollte, muß ich erstmal testen.

Grüße von Sabine

(Dieser Beitrag wurde von SabineP am 27. Okt 2002, 00:30 geändert)

[SSI] Deutsche Datumsangabe

Ollli
Beiträge gesamt: 458

27. Okt 2002, 02:04
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Wenn ich einen Vorschlag machen darf? :-)

Code
#!/usr/bin/perl 

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year+1900;

if ($min < 10) {
$min = "0$min";
}
if ($hour < 10) {
$hour = "0$hour";
}

@tag = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
@monat = ("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");

print "Heute ist $tag[$wday], der $mday. $monat[$mon] $year. Es ist jetzt $hour:$min Uhr.";


@Sabine
Sorry, aber ich fand das Thema interessant und hab das da gleichmal ausprobiert. :-)
Vielleicht hast du aber eine bessere Lösung?!

@Hanü
Es müsste jetzt eigentlich so rauskommen, wie du wolltest. :-)

Ollli

[SSI] Deutsche Datumsangabe

SabineP
Beiträge gesamt: 7586

27. Okt 2002, 11:42
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Ollli, ich habe da auch keine bessere Lösung, Dein Script ist perfekt. :-)

Damit der Browser die Zeit anzeigen kann brauchen wir nur noch den Content-type.

print "Content-type: text/html\n\n";
print "Heute ist $tag[$wday], der $mday. $monat[$mon] $year. Es ist jetzt $hour:$min Uhr.";

Um die Zeit in jeder beliebigen HTML-Seite anzuzeigen, reicht dann diese Zeile aus:
<!--#exec cgi="/pfad/datum.pl"-->

... und nicht vergessen, die HTML-Seiten als *.shtml speichern.

Grüße von Sabine


(Dieser Beitrag wurde von SabineP am 27. Okt 2002, 11:45 geändert)

[SSI] Deutsche Datumsangabe

Ollli
Beiträge gesamt: 458

27. Okt 2002, 12:47
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
> Damit der Browser die Zeit anzeigen kann brauchen wir nur noch den Content-type.
> print "Content-type: text/html\n\n";

Siehste, das hatte ich nicht mehr so genau gewusst - THX!

Ollli

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

27. Okt 2002, 13:42
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Da ich jetzt erst die Möglichkeit zu Perl und PHP habe, hab ich neben eurem Perl-Beispiel auch mal nach einer Lösung mit PHP gesucht - und bin fündig geworden ( http://www.schattenbaum.net/php/datum2.php )

Ich hab mir diesen PHP-Anfängerlehrgang mal durchgelesen, und muss sagen, soviele unterschiede zu Perl gibt es da ja gar nicht. Abgesehen von einigen anderen Deklarierungen sind sich PHP und Perl doch sehr ähnlich. Da fragt sich nur, was für die eigene Seite besser geeignet ist.

Da frag ich mich... warum bevorzugt ihr Perl? Ist der Code besser geschützt, seid ihr damit eingestiegen und dran hängengeblieben, findet ihr das einfacher, oder...???

Machen kann man damit ja so ziemlich das selbe wie mit PHP, oder nicht? Wann ist was besser geeignet?

Gruß und Danke!
Andreas


Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

[SSI] Deutsche Datumsangabe

Ollli
Beiträge gesamt: 458

27. Okt 2002, 14:32
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Also mit PHP geht das mit dem Datum einfacher, soweit ich mich erinnern kann.

Erstmal hast du Recht, dass es zwischen PHP und Perl rein vom Code nicht so viele gravierende Unterschiede gibt. Von der Funktion her müsstest du mal Miro fragen ;-)
Ich selber bin mit Perl eingestiegen und habe es auch nicht bereut. Perl ist meiner Meinung nach gut um fix einen Formmailer zu machen, oder auch ein GB, was auf einer Text-Datei basiert. Außerdem ist Perl besser bei der System-Programmierung, welche ich auch etwas ausübe, da ich einen Linux-Server habe. Zudem kann man mit Hilfe des Moduls TK auch unter Windows eine Fenster-Applikation erzeugen.
Ich finde auch, dass das Array-Management bei Perl besser ist als bei PHP, zumindest in mehrdimensionalen, assoziativen Arrays komme ich in Perl besser klar als in PHP, kann allerdings auch an mir liegen. ;-)

Naja und PHP vereinfacht teilweise die Programmierung durch die vielen Funktionen, die es beinhaltet. Ich ziehe PHP gerade in Verbindung mit MySQL vor, da es dafür einfach leichter zu bedienen ist. Zudem macht es sich gut, wenn man den Programmcode gleich in das HTML einbetten kann.
Allerdings brauchste für PHP (fast) immer einen Webserver um es zu testen ;-)

So, das ist meine Meinung (in Kurzform).

Ollli

[SSI] Deutsche Datumsangabe

Anonym
Beiträge gesamt: 22827

30. Okt 2002, 19:53
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Ich hab dein Skript jetzt mal auf'm Server ausprobiert, aber irgendwie krieg ich es nich zum laufen (ich denk aber, es liegt im Moment noch daran, dass der KK noch nicht ganz abgeschlossen ist). Dennoch hab ich zum Skript Fragen:

Zitat
Code
#!/usr/bin/perl 

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year+1900;

if ($min < 10) {
$min = "0$min";
}
if ($hour < 10) {
$hour = "0$hour";
}

@tag = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
@monat = ("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");

print "" (des html/text-Zeugs)
print "Heute ist $tag[$wday], der $mday. $monat[$mon] $year. Es ist jetzt $hour:$min Uhr.";



Was machst du mit den ersten Befehlen?

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year+1900;
if ($min < 10) {
$min = "0$min";
}
if ($hour < 10) {
$hour = "0$hour";
}

den versteh ich (noch) nicht ganz (Anfänger halt)?!?!?!

Was danach kommt kann ich nachvollziehen, du legst die Namen in einem Array fest und gibst dann die in den $-Variablen festgelegten Werte aus.

Bitte um kleine Erläuterung zum besseren Nachvollziehen :))
Danke! Gruß Andreas (ich denke, ich werde die Perl-Lösung auf der Website verwenden)

[SSI] Deutsche Datumsangabe

SabineP
Beiträge gesamt: 7586

30. Okt 2002, 21:51
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Hallo Andreas, hier die Erläuterung zum Script (schwitz):

#!/usr/bin/perl
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

# Wandelt die Zeit der Funktion "time" in eine Liste mit 9 Elementen um.
# Die Funktion "time" liefert die Systemzeit des Betriebssystems auf dem Perl gerade ausgeführt wird.

$year = $year+1900;
# In der Variable $year ist die Anzahl der Jahre seit 1900 gespeichert.
# Die korrekte Weise, ein komplettes 4-stelliges Jahr zu erhalten wäre laut Perl-Doku so:
# $year += 1900;
# so wie es oben steht gehts natürlich auch

if ($min < 10) {
$min = "0$min";
}
# wenn Anzahl der Minuten kleiner 10, dann male davor eine Null (führende Null)

if ($hour < 10) {
$hour = "0$hour";
}
# wenn Anzahl der Stunden kleiner 10, dann male davor eine Null (führende Null)

@tag = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
# die Liste (Array) der deutschen Wochentage

@monat = ("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
# die Liste (Array) der deutschen Monate

print "Content-type: text/html\n\n";
# Hier erfährt der Webserver, daß das Script jetzt HTML-Code ausgeben möchte.

print "Heute ist $tag[$wday], der $mday. $monat[$mon] $year. Es ist jetzt $hour:$min Uhr.";
# zum Beispiel:
# Falls gerade Mittwoch ist, steht in der Variable $wday eine 3.
# Daraufhin wird der 4. Tag aus @tag ausgegeben.
# Wenn in $wday eine 0 steht wird der Sonntag ausgegeben.
# usw.

Grüße von Sabine

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

30. Okt 2002, 22:06
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
ok, das hab ich jetzt soweit kapiert. war nur verwirrend, weil ich nicht mehr dran gedacht hab, das die funktion time bei Perl was anderes als Ergebnis liefert, als die entsprechende Funktion bei SSI bzw. PHP. bin halt durcheinandergekommen (das kommt davon, wenn man alles auf einmal ausprobieren / lernen will :)

Funktionieren tut es bei mir trotzdem nicht. Hab das Skript als datum.pl gespeichert, in den Ordner CGI-BIN gepackt und eine SHTML Seite erstellt, die den SSI-Kommentar enthält <!--#exec cgi="/cgi-bin/datum.pl"--> (liegt im root). Die datum.pl hat 755 als Rechte und der Pfad zu Perl stimmt auch. Nur wird auf der Seite im Browser nichts ausgegeben (zunächst kam ne Fehlermeldung, weil ich <!--#exec cgi="/cgi-bin/datum.ol"--> geschrieben hatte, und jetzt kommt gar nix mehr.

Wie gesagt, ich vermute, es liegt dran, dass der kk noch net ganz abgeschlossen ist. ich hab zwar schon den neuen Webspace und unter einer seltsamen Adresse auch schon Zugriff darauf, aber die eigentliche Domain (URL) wurde noch nicht an den neuen Hoster übertragen... mal sehen, wie's aussieht, wenn der KK fertig ist. wenns dann immer noch net läuft, poste ich mal die Adresse...

Gruß Andreas
Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

6. Nov 2002, 17:48
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
So, der KK scheint endlich fertig zu werden. Ich habe gleich mal auf der oberten Datei (index.shtml) im Root verucht, das datum.pl mit einzubinden. Was daraus wird, solltet ihr hier sehen:

//edit:
URLs stimmen nicht mehr, deshalb entfernt
//end

Was ist falsch???
Gruß Andreas



Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

(Dieser Beitrag wurde von Hanü am 10. Dez 2002, 02:03 geändert)

[SSI] Deutsche Datumsangabe

SabineP
Beiträge gesamt: 7586

6. Nov 2002, 18:08
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Deine datum.pl geht nicht.

http://www.hanue.de/cgi-bin/datum.pl
http://web330.businessbox2.server-home.net/cgi-bin/datum.pl

Was steht da drin?
Hat die datum.pl chmod 755?

[SSI] Deutsche Datumsangabe

Anonym
Beiträge gesamt: 22827

6. Nov 2002, 20:39
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Ja, sie hat 755 als Rechte. Das steht drin:

<?
$tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$tag = date("w");

$datum = date("d");

$monate = array(1=>"Januar",2=>"Februar",3=>"März",4=>"April",5=>"Mai",6=>"Juni",7=>"Juli",8=>"August",9=>"September",10=>"Oktober",11=>"November",12=>"Dezember");
$monat = date("n");

$jahr = date("Y");

echo "$tage[$tag], $datum. $monate[$monat] $jahr";
?>

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

6. Nov 2002, 20:44
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Halt, Medung zurück, das steht drin:

#!/usr/bin/perl

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year+1900;

if ($min < 10) {
$min = "0$min";
}
if ($hour < 10) {
$hour = "0$hour";
}

@tag = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
@monat = ("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");

print "Content-type: text/html\n\n";
print "$tag[$wday], der $mday. $monat[$mon] $year";
_____________________________________________________

Hab mich grad vertan. Anmerkung an HDS.CH - wann kommen endlich die Cookies, dass man sich nicht jedesmal einloggen muss / die Favoriten benutzen muss. Wäre ganz geschickt, gerade dann, wenn man - so wie ich - einen Threat aus einer Antwortmail aus öffnet...

Gruß Andreas

(Dieser Beitrag wurde von Hanü am 13. Aug 2004, 13:52 geändert)

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

6. Nov 2002, 20:49
Bewertung:

gelesen: 9696

Beitrag als Lesezeichen
Ich habe nochmal nachgeschaut und die datum.pl vom Perl-Debugger überprüfen lassen. Das kam dabei raus:

Name "main::sec" used only once: possible typo at [..]/cgi-bin/datum.pl line 3.
Name "main::isdst" used only once: possible typo at [..]/cgi-bin/datum.pl line 3.
Name "main::yday" used only once: possible typo at [..]/cgi-bin/datum.pl line 3.
[..]/cgi-bin/datum.pl syntax OK

Hilft das irgendwie weiter? Denke nicht...
Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

(Dieser Beitrag wurde von Hanü am 10. Dez 2002, 02:06 geändert)

[SSI] Deutsche Datumsangabe

SabineP
Beiträge gesamt: 7586

6. Nov 2002, 22:34
Bewertung:

gelesen: 3119

Beitrag als Lesezeichen
Das sind nur ein paar Warnungen, die der Debugger ausgibt.
Die Warnungen betreffen alle Variablen, die Du nicht verwendest.
Du kannst diese Variablen durch undef ersetzen.

(undef,$min,$hour,$mday,$mon,$year,$wday,undef,undef) = localtime(time);

Ich glaube aber nicht, daß dies das Problem ist.

Probier mal dieses Script:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello world";

Im Browser muß dann "Hello worl" erscheinen und nicht error 500.

Falls wieder error 500 kommt, solltest Du mal den Pfad zu Perl überprüfen.
Vielleicht ist der Pfad so eingerichtet:
#!/usr/local/bin/perl

(Dieser Beitrag wurde von SabineP am 7. Nov 2002, 01:07 geändert)

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

7. Nov 2002, 00:27
Bewertung:

gelesen: 3119

Beitrag als Lesezeichen
Der Pfad zu Perl ist schon richtig, hab das extra nochmal in den Unterlagen nachgeschaut. Ich habe die "Hello World" test.pl mal in cgi-bin hochgeladen:

Unter [//edit: URL entfernt, weil Datei nicht mehr vorhanden] funktioniert der Spaß, bei der Hanü.de-Adresse klappt es nur manchmal, wenn man das "www" weglässt. Der Providerwechsel scheint da noch Probleme zu machen. Zur Zeit wird auch manchmal meine alte Seite angezeigt, und dann wieder die neue... morgen haben die das vielleicht alles richtig eingestellt (hoffentlich!)

Fact ist, da die test.pl unter [//edit: URL entfernt, weil Datei nicht mehr vorhanden] funktioniert, und die datum.pl nicht, dass da immernoch irgendwas falsch ist...

Was heißt dieser Serverfehler 500??? Fehler im Skript oder Serverdefekt?

Gruß und Danke
Andreas



Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

(Dieser Beitrag wurde von Hanü am 10. Dez 2002, 02:08 geändert)

[SSI] Deutsche Datumsangabe

SabineP
Beiträge gesamt: 7586

7. Nov 2002, 01:05
Bewertung:

gelesen: 3119

Beitrag als Lesezeichen
Hanü, das ist ja wirklich eine harte Nuß :-)

Du kannst mal noch in der datum.pl eine Zeile hinzufügen.
So werden eventuell Fehler im Browser angezeigt.

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);

Der Fehler 500 bedeutet, daß die datum.pl nicht ausgeführt werden kann.
Das kann eventuell auch an der Serverkonfiguration liegen.
Ich verstehe nur nicht warum so eine einfache Datumsausgabe nicht laufen will.
Hast Du die datum.pl im ASCII-Modus übertragen?

Grüße von Sabine

(Dieser Beitrag wurde von SabineP am 7. Nov 2002, 01:10 geändert)

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

7. Nov 2002, 16:32
Bewertung:

gelesen: 3119

Beitrag als Lesezeichen
Ja, ASCII war eingestellt, habe die Zeile eingefügt.

Wenn man die Datei direkt aufruft, scheint sie auf einmal zu funktionieren: [//edit: URL entfernt, weil Datei nicht mehr vorhanden] oder [//edit: URL entfernt, weil Datei nicht mehr vorhanden]

Aber auf der Startseite wird immer noch die Fehlermeldung angezeigt!
[//edit: URL entfernt, weil Datei nicht mehr vorhanden]

Das macht so langsam keinen Spaß mehr :(
...aber da muss man durch *g*

Gruß Andreas



Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

(Dieser Beitrag wurde von Hanü am 10. Dez 2002, 02:09 geändert)

[SSI] Deutsche Datumsangabe

Anonym
Beiträge gesamt: 22827

7. Nov 2002, 17:50
Bewertung:

gelesen: 3119

Beitrag als Lesezeichen
Es ist schon eigenartig, was sich die Provider so ausdenken.
Wiso geht Deine Datumsausgabe nur mit dem Carp-Modul?
Normal ist das jedenfalls nicht.
Das würde mir auch keinen Spaß machen.
Mit der Zeit wirst Du herausfinden was geht und was nicht.
Das ist bestimmt nicht die letzte Überraschung gewesen.

Wichtig wäre nun noch, wie der Pfad zur datum.pl in der index.shtml steht.

Möglichkeit 1:
<!--#exec cgi="/cgi-bin/datum.pl" -->

Möglichkeit 2:
<!--#include virtual="/cgi-bin/datum.pl" -->

Probiere mal beides aus.

Hier noch ein kleines hilfreiches Script.
Es gibt die Umgebungsvariablen aus:

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
for ( keys %ENV){
print "$_ : $ENV{$_} <br>";
}

Nehmen wir mal an, Du nennst dieses Script test.pl.
Wenn Du das Script im cgi-bin Ordner startest,
dann schau mal nach, ob irgendeine Variable den Wert "/cgi-bin/test.pl" liefert.

Ich schau mal in der Apache-Dokumentation nach, ob wir damit weiterkommen.

Grüße von Sabine

[SSI] Deutsche Datumsangabe

Hanü
Beiträge gesamt: 219

8. Nov 2002, 02:34
Bewertung:

gelesen: 3112

Beitrag als Lesezeichen
ES FUNKTIONIERT !!!!!!!!!!!!!!!!!

Hab mir in der letzten Stunde nochmal
alle Dateien und Dinge angeschaut und
sicherheitshalber alles nochmal in
einem zweiten Durchgang erstellt. Dann
habe ich noch die Server-Einstellung
für Perlskripte geändert, dass ich sie
nicht in den Ordner CGI-BIN speichern
muss, und jetzt funktioniert die
Datumsanzeige!!!! Ich bin soo glücklich
:) :) :) genial... der KK ist auch be-
endet (hab ich den Eindruck). Jetzt
macht das doch alles gleich wieder
viel mehr Spaß!

Vielen Dank euch beiden, dass ihr mir
bei diesem ersten kleinen Perlskript
soviel geholfen habt!! Ihr seid Klasse!

GrEeZ Andreas !!!!!!!!!!!!!!!!!!!!!



Jetzt ist erst mal Zeit für den Winterschlaf...
[ Das Lexikon der Trinksprüche ]
Ab 2003 wieder online!

[SSI] Deutsche Datumsangabe

SabineP
Beiträge gesamt: 7586

8. Nov 2002, 12:13
Bewertung:

gelesen: 3112

Beitrag als Lesezeichen
Na wunderbar :-) Glückwunsch ... ich dachte schon, Du hättest aufgegeben.

[SSI] Deutsche Datumsangabe

Ollli
Beiträge gesamt: 458

8. Nov 2002, 15:53
Bewertung:

gelesen: 3112

Beitrag als Lesezeichen
Vielleicht ging das vorher nicht so richtig mit dem SSI, weil es nicht im CGI-BIN lag, obwohl das natürlich eigentlich auch außerhalb funktionieren muss, aber man weiß ja nie, was die so für configs haben ;-)

Ollli