perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 22
Click for quality!




11.02.2012 / 08:33

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Installation der Umgebung zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragIIS und Perl (Rechte)
Seitenanfang
Hallo alle zusammen ….

Vielleicht könnt Ihr helfen …..
Ich möchte erreichen, dass sich jemand mit einem Domänen Account auf der Web-Seite Anmelden kann und dann Dateien Uploaden kann. Mit einem Admin-Account funktioniert das auch wunderbar. Jedoch …. Melde ich mich mit einem User an, was auch noch funktioniert, und versuche ich dann unter dieser Anmeldung eine Datei Upzuloaden erscheint folgender Fehler.„CGI-Fehler Die angegebene CGI-Anwendung hat keinen vollständigen Satz von HTTP-Headern zurückgegeben.“
Ich habe Versuchsweise dem USER im IIS als auch im Upload-Verzeichniss volle Rechte erteilt. Funktioniert aber trotzdem nicht mit einem User. Wenn ich den IIS (die Seite) auf Anonymus umstelle, (keine Anmeldung erforderlich) funktioniert auch wieder alles.
Danke schon mal …. Bernd

Nachfolgendes Script und html-Datei läuft auf einem W2K3 Server mit IIS …..

----SNIP----ANFANG HTML
<html>
<head>
<form action="scripts/upload.pl" method="post" enctype="multipart/form-data">
<p><b><font size="2">Eine Datei zum Upload auswählen NUR  ZIP, RAR, GZ,
GZIP:</font></b><br>

<input name="Datei" type="file" size="50">
</p>
<input type="submit" value=" Absenden ">
<input type="reset" value=" Abbrechen">
</form>
<body>
</html>
----SNIP----ENDE HTML

----SNIP----ANFANG PERL
#!c:/perl/bin/perl
#use URI;
#use Cwd;
use CGI;
use File::Basename;
use Net::SMTP;

my $errorcode = 0;
my @filesallow = qw(gz zip rar itw);
my $mailserver="192.168.2.2";
my @to=('Administrator@bs.home','bernie@bs.home');
my $from='Upload_ISA@bs.home';
my $cgi = new CGI;
print $cgi->header(-type => 'text/html');

my $file = $cgi->param("Datei");
my $oldfile = basename($file);
my $fname = 'e:\upload\Daten\\'.$ENV{REMOTE_ADDR}.'_'.time."_$oldfile";

sub Check {
my $result=0;
my $fcheck = shift;
foreach $ext(@filesallow) {
if ($fcheck =~/$ext/) {$result++}
}
if ($result < 1) {
$errorcode=1;
return 1;
}
}

sub Upload {
my $filename = shift;
open (DAT, ">$filename") or $errorcode=$!;
unless ($errorcode == 0) {return}
binmode $file;
binmode DAT;

my $data;
while(read $file,$data,1024) {
print DAT $data;
}
close DAT;
unless (-e $filename) {$errorcode=$!}
}

sub HTML {
my $result = shift;
print '<html><head><title>UPLOAD</title></head><body>';
print '<!--mstheme--><link rel="stylesheet" type="text/css" href="../../../../../../_themes/blitz/blit1011.css"><meta name="Microsoft Theme" content="blitz 1011">';

print '<p align="left"> </p>';

if ($result == 1) {print "<br><br><b><u><h2>F E H L E R ! ! !</h2></u><br><br>Dieses Dateiformat wird nicht unterstuetzt. Aus Performancegründen werden nur gepackte Dateien (zip, rar, gz, gzip) zugelassen. <br><br>Falls es Dir nicht möglich ist (zip, rar, gz, gzip) zu generieren und zu senden, wende Dich bitte an den Administrator dieser Seite.";}

elsif ($result == 0) {print "<h2><font color=green>Dateiupload erfolgreich</h2></font><b>die Datei $file wurde erfolgreich als ".basename($fname)." hochgeladen"}
else {print "<br><b><font color=red>Fehlercode = $errorcode<p><br><br><br><b><u><h2>F E H L E R ! ! !</h2></u> Im Moment steht auf dem System KEIN Speicherplatz zur Verfügung. <br><br>Bitte wenden Sie sich an den Administrator.<br>";}
#print '</body></html>';
}

sub SendMail {
$msg = shift;
$smtp = Net::SMTP->new(
Host => $mailserver,
Debug => 1,
) or print "$mailserver, $!";
#$smtp->mail($ENV{USER});
$smtp->mail($from);
$smtp->to(@to);
$smtp->data();
$smtp->datasend("To: @to \n");
if ($msg eq "exterror") {
$subject="Fehlerhafte Extension beim Upload";
$body="Es wurde versucht, eine Datei namens $file von ".$ENV{REMOTE_ADDR}." hochzuladen";
}
elsif ($msg ==0) {
$subject = "Dateiupload erfolgreich";
$body=" die Datei $file wurde erfolgreich als ".basename($fname)." hochgeladen\n";
}
else {
$subject="Serverfehler beim Dateiupload";
$body="Die Datei $file konnte nicht als $fname hochgeladen werden. Fehlercode: $msg";
}
$smtp->datasend("Subject: $subject\n");
$smtp->datasend("\n");
$smtp->datasend("$body\n");
$smtp->datasend("Dein Upload-Script\n");
$smtp->dataend();
$smtp->quit;

print '<p align="left"><b><a href="../index.htm">ZURÜCK zum Upload</a></b> </p>';

}
#################
Check($oldfile);
if ($errorcode == 1) {
HTML($errorcode);
SendMail("exterror");
}
else {
Upload($fname);
HTML($errorcode);
SendMail($errorcode);
}

exit 0;
----SNIP----ENDE PERL

Datum: 27.10.2006-07:14

Beitragre: IIS und Perl (Rechte)
Seitenanfang
Hat sich erledigt .... eine Anständige Fehlerausgabe im Script hat dann ergeben, das mein TEMP Verzeichnis von Windows für den USER keinen ausrechenden Schreibzugriff hatte.

Datum: 29.10.2006-05:04

Beitragre: IIS und Perl (Rechte)
Seitenanfang
Man kann übrigens bei Verwendung des CGI-Moduls für den Upload das temp-Verzeichnis angeben - das ist gerade in solchen Umgebungen oft notwendig, da die jeweiligen User keine Rechte an den temp-Verzeichnissen haben, die ausserhalb des eigentlichen Webs liegen.

Datum: 01.11.2006-00:00

-






-
-