CGI Parameterübergabe ?


ert18

Grünschnabel
Hallo,

ich habe folgendes Problem. Ich verwende eine .cgi Datei welche einer .html Datei verbunden ist (index.html). In der index.html Datei sind schon links vorgegeben; wie z.B.:

PHP:
<br>&nbsp;<A HREF="index.cgi?page=impressum"><B>Impressum</B></A>

Nur wenn ich auf den Link gehe (ist schon alles hochgeladen) funktioniert der Link nicht. Kann mir jemand weiterhelfen?

Muss ich da noch irgendwas zusätzlich machen?
 

ert18

Grünschnabel
Was funktioniert nicht? Was wird angezeigt?
Also wenn ich bei der vorgegebenen Datei (welche hochgeladen ist) z.B. auf den Link Impressum klicke kommt bei mir eine weiße Seite (also nichts gefunden) trotz das es den Link im Browser anzeigt > http://test/index.cgi?page=impressum

Muss ich da vielleicht noch (siehe hierzu bitte auch mein ersten Beitrag) eine .html Seite machen mit Namen Impressum?

Ich bin leider absoluter Laie in diesem Gebiet.

MfG
 

renee

Erfahrenes Mitglied
Nein, eine .html brauchst Du nicht. Du musst nur eine Ausgabe mit dem Skript erzeugen. Wie sieht denn das Skript aus?
 

ert18

Grünschnabel
@renee Danke insoweit, bin für dieses oben genannten Teil weitergekommen.

Es lag (Test habe ich mit .php gemacht) an diesen fehlenden Code:

PHP:
<?
    if (empty($_REQUEST['page']))
    {
        $_REQUEST['page'] = 'beispiel';
    }

    switch($_REQUEST['page'])
    {
        default:
        case 'beispiel':
	include "hier.htm";
        break;

        case 'hallowelt':
	include "hallowelt.htm";
        break;

        case 'test':
	include "test.htm";
        break;
    }
?>

Nun aber meine Frage; wie muss dieser Code für meine index.cgi aussehen?
 

renee

Erfahrenes Mitglied
Code:
#!/usr/bin/perl

# Module und Pragmas einbinden
use strict;
use warnings;
use CGI;

my $cgi = CGI->new; # erzeuge ein neues Objekt der Klasse "CGI"
print $cgi->header; # gib einen Header aus
my %params = $cgi->Vars;

# selbst einen Text ausgeben
if( $params{page} eq 'impressum.htm' ){
    print "<h2>Impressum</h2>...";
}
# oder aus einer Datei auslesen
elsif( $params{page} eq 'was_anderes.htm' ){
    if( open my $filehandle, '<', 'was_anderes.htm' ){
        while( my $line = <$filehandle> ){
           print $line;
        }
    }
}

Das Skript muss mit den Rechten 755 versehen werden und es für den Ordner müssen CGI's erlaubt sein...