#!/usr/bin/perl
#
use strict;
use CGI qw(:standart);
use Fcntl qw(:DEFAULT);
my $q = new CGI;
print "Content-Type: text/html\n\n";
#read input parameters
my $username = $q->param("username");
my $firstname = $q->param("firstname");
my $telephone = $q->param("telephone");
my $zipcode = $q->param("zipcode");
my $areacode = $q->param("areacode");
my $country = $q->param("country");
my $street = $q->param("street");
my $town = $q->param("town");
my $email = $q->param("email");
my $fax = $q->param("fax");
my $link = $q->param("link");
my $category = $q->param("category");
my $subcategory = $q->param("subcategory");
my $adverttype = $q->param("adverttype");
my $busitype = $q->param("busitype");
my $advertheader= $q->param("advertheader");
my $advertbody = $q->param("advertbody");
my $adults_only = $q->param("adults_only");
my $advertID = $q->param("advertID");
# Get the current time.
my($date) = scalar(localtime());
# Append the data to a file.
open(F, ">>tester.txt");
print F "From $0 at $date\n";
#for $key (keys %CGI) {
# print F "$key => $CGI{$key}\n";
#}
print F "Name: $username \n";
print F "Vorname: $firstname \n";
print F "Telefon: $telephone \n";
print F ": $zipcode \n";
print F "Vorwahl: $areacode \n";
print F "Land-Vorwahl: $country \n";
print F "Strasse: $street \n";
print F "Stadt: $town \n";
print F "Email: $email \n";
print F "Fax: $fax \n";
print F "URL: $link \n";
print F "Kategorie: $category \n";
print F "Unterkategorie: $subcategory \n";
print F "Suchen-Bieten: $adverttype \n";
print F "Privat-Gesch: $busitype \n";
print F "Anzeigenkopf: $advertheader \n";
print F "Anzeigentext: $advertbody \n";
print F "Nur für Erwachsene: $adults_only \n";
print F "ID der Anzeige: $advertID \n";
close(F);
print "<pre>\n";
receiveAdsImage($q);
print "</pre>\n";
exit;
#recieve and store advert image file if exist
sub receiveAdsImage {
my($query) = @_;
unless (defined($query->param('asimage')) && ($query->param('asimage') !~ /^\w*$/)) {
return 1;
} else {
#T print $query->param('asimage')."<br>\n";
my $file = $query->upload('asimage');
my $fileinfo = $query->uploadInfo($file);
my $fileext;
#determine file name as transmitted (full path may be included)
my $filename = getFileName($file,$query->uploadInfo($file)->{'Content-Disposition'});
#determine file extension
if ($filename =~ /\.(jpg|jpeg|gif|pgn)$/i) {
$fileext = lc($1);
} else {
print("Falscher Typ der Bild-Datei. Nur jpeg (jpg), pgn, gif sind erlaubt.\n");
return();
}
#genertate random file name
my $fileID = generateID(10);
#compose complete file name with random name and determined extension
my $storeFile = "$fileID.$fileext";
#Tprint "Size $storeFile= $filesize\n<br>";
if (!$file && $query->cgi_error) {
print("Fehler beim Holen der Bild-Datei im CGI.\n");
return();
}
if (not sysopen FILE, "$storeFile", O_EXCL | O_CREAT | O_WRONLY, 0600) {
print("Fehler bei der Erzeugung der Bild-Datei. ($!)\n");
return();
} else {
my $buffer = "";
my $BUFFER_1K = 1024;
my ($fsize,$rsize) = (0,0);
binmode FILE;
while (($rsize = read ($file, $buffer, $BUFFER_1K))) {
print FILE $buffer or print("Fehler beim Schreiben der Bild-Datei. ($!)\n");
$fsize += $rsize;
}
close FILE;
print ("Store image file (name=$storeFile,size = $fsize)\n");
return 2;
}
}
}
#Used in receiveAdsImage function
sub getFileName {
my ($cginame, $disp) = @_;
my $name;
if ($disp =~ /filename\=\"(.+)\"/) {
$name = ($1);
} else {
$name = $cginame;
}
return $name;
}
#generate random string $idSize chars length
sub generateID {
my $idSize = shift;
$idSize = 8 if not defined($idSize);
my @chars = ("A".."Z","a".."z",1..9);
return join("", @chars[ map{rand @chars} (1..$idSize) ]);
}