Zum Inhalt springen

CGI Scripte


Empfohlene Beiträge

Habe mal ne Frage:

ich habe ein Onlinetest CGI-Script das bei mir (Windows 2000 Rechner) Lokal einwandfrei unter dem Webserver WAMP läuft! Nun wollt ichs Online stellen. hab den Pfadt von Perl am anfang in /usr/bin/perl geändert so wied er Provieder gesagt hat und sogar allen Dateien sowie ggf. allen Unterverzeichnissen die Rechte 755 wie vom Provieder gewollt.

Doch es geht immer noch nicht!

es kommt ein Internal Server Error!

Aber es kann doch nicht sein das das Script auf ner Windows Kiste funzt und auf ner Unix Kiste nich ... oder ???

Bitte um Antwort woran es liegen könnte!

Ps: Der Provieder hat ein testscript ausprobiert dieses auch tatsächlich funktionierte!

:( :( :( :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, das sind 2 CGI Scripte!

Einmal das edit (Wo man ein Quiz erstellen kann):

#!/usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);

# © NueDream Inc. 2000-2002 (www.nuedream.com)

################ USER VARIABLES ################

$editurl = "/home/13/tfcffchd/cgi-bin/edit.cgi"; # Location of this edit page, no trailing slashes(/).

$password = "test"; # Password for administration.

############ THESE ARE OPTIONAL CHANGES ###########

$file = "questions.db"; # This is the name of your questions file.

$quizname = "NueQuiz"; # This is what appears in the TITLE.

$spacer = '|'; # Delimeter used in the database.

@list = ('a','b','c','d','e','f');

############## GET INFO FROM WEBPAGE #############

if($ENV{'HTTP_REFERER'} =~ /$editurl/) {

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {

($name,$value) = split (/=/, $pair);

$value =~ tr/+/ /;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("c", hex($1))/eg;

$value =~ s/\n/ /g; # newlines are now spaces

$value =~ s/\r//g; # removes hard returns

$value =~ s/\cM//g; # deletes ^M's

$FORM{$name} = $value;

}

############## MAIN PROGRAM ############

if ($FORM{'action'} eq "") {

print "Content-type: text/html\n\n";

print <<EndADMIN

<html>

<head>

<title>:::: NueQuiz Administration Page ::::</title>

</head>

<!-- © NueDream Inc. 2000-2002 -->

<body bgcolor="white">

<font size="1" face="verdana">

<font size="4"><b>Administrative Menu</b></font><br>

<hr color="#000000" width="450" align="left" noshade>

<b>NOTE: Choose what action you wish to perform and click on the Submit button.</b><br>

<hr color="#000000" width="450" align="left" noshade>

<form action="$editurl" method="POST">

<input type="radio" name="edit" value="modbeg" checked>Modify Beginner Quiz Questions.<br>

<input type="radio" name="edit" value="modnov">Modify Novice Quiz Questions<br>

<input type="radio" name="edit" value="modexp">Modify Expert Quiz Questions<br>

<br>

<input type="radio" name="edit" value="addbeg">Add Beginner Quiz Question<br>

<input type="radio" name="edit" value="addnov">Add Novice Quiz Question<br>

<input type="radio" name="edit" value="addexp">Add Expert Quiz Question<br>

<br>

<input name="action" value="Submit" type="submit">

</Form>

<hr color="#000000" width="450" align="left" noshade>

<b>NueQuiz - © 2000 <a href="http://www.nuedream.com">NueDream Inc.</a></b>

</font>

</body>

</html>

EndADMIN

} elsif ( $FORM{'action'} eq "check" ) {

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {

($name, $value) = split(/=/, $pair);

$value =~ tr/+/ /;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/~!/ ~!/g;

$FORM{$name} = $value;

}

if ($FORM{'pass'} eq $password) {

print "Location: $editurl\n\n";

} else {

dienice("Invalid Password! Please go back and try again!");

}

} elsif ( $FORM{'action'} eq "Submit" ) {

$edit = $FORM{'edit'};

if ($edit =~ /\w+beg$/) {

$quiz = "beginner";

} elsif ($edit =~ /\w+nov$/) {

$quiz = "novice";

} elsif ($edit =~ /\w+exp$/) {

$quiz = "expert";

} else {

dienice("Invalid quiz type go to the <a href=\"$editurl\">Admin Page</a> and try again");

}

if ($edit =~ /^mod\w+/) {

$type = "modify";

} elsif ($edit =~ /^add\w+/) {

$type = "add";

} else {

dienice("Invalid action to perform go to the <a href=\"$editurl\">Admin Page</a> and try again");

}

open(DATA,$file) or dienice("Couldn't open $file :: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

@data = <DATA>;

close(DATA);

Link zu diesem Kommentar
Auf anderen Seiten teilen

##### GENERAL ADMIN DISPLAY #####

print "Content-type: text/html\n\n";

print "<html><head><title>:::: Quiz Administration Page :::: $ENV{'HTTP_REFERER'}</title></head>\n<body bgcolor=\"white\">";

print "<font size=\"1\" face=\"verdana\">";

print "<font size=\"4\"><b>Administrative Menu</b></font><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>You are ".$type."ing a record in the $quiz quiz.</b></font>\n";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

if ($type eq "add") {

print "Complete the required(<font color=\"red\">*</font>) information and hit add.<br>";

print "You may leave some of the questions empty if you choose.<br>";

print "To display no reason just use a blank space in the Reason area.<br>";

print "<form action=\"$editurl\" method=\"POST\">";

print "<input type=\"Hidden\" name=\"quiz\" value=\"$quiz\">";

print "<table><tr><td colspan=\"3\"><font size=\"2\" face=\"verdana\"><font color=\"red\">*</font>Question:</font></td></tr>\n";

print "<tr><td colspan=\"3\"><input type=\"text\" name=\"question\" size=\"45\"></td></tr>\n";

print "<tr><td><font size=\"2\" face=\"verdana\"><font color=\"red\">*</font>Answer</font></td><td><font size=\"2\" face=\"verdana\">#</font></td><td><font size=\"2\" face=\"verdana\"><font color=\"red\">*</font>Choices</font></td></tr>\n";

foreach $i (@list) {

print "<tr><td><input type=\"radio\" name=\"answer\" value=\"$i\"></td><td><font size=\"2\" face=\"verdana\">$i)</font></td>\n";

print "<td><input type=\"text\" name=\"$i\" size=\"30\"></td></tr>\n";

}

print "<tr><td colspan=\"3\"><font size=\"2\" face=\"verdana\"><font color=\"red\">*</font>Reasoning for answer</font></td></tr>\n";

print "<tr><td colspan=\"3\"><textarea cols=\"34\" rows=\"3\" name=\"reason\"></textarea></td></tr>\n";

print "<tr><td colspan=\"3\" align=\"right\"><input type=\"submit\" name=\"action\" value=\"Add\"></td></tr>";

print "</table>\n</form>\n";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>NueQuiz - © 2000 <a href=\"http://www.nuedream.com\">NueDream Inc.</a></b></font>\n";

} elsif ($type eq "modify") {# modifying a database of quizzes

print "<table>";

foreach $line (@data) {

($quizin,$num,$question,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\Q$spacer/,$line);

if ($quizin eq $quiz) {

print "<form action=\"$editurl\" method=\"POST\">";

print "<tr><td><font size=\"2\" face=\"verdana\">$num) $question<input type=\"hidden\" name=\"question\" value=\"$question\"><input type=\"hidden\" name=\"number\" value=\"$num\"><input type=\"hidden\" name=\"quiz\" value=\"$quiz\"></font></td></tr>\n";

print "<tr><td nowrap><input type=\"Submit\" name=\"action\" value=\"Edit\"><input type=\"Submit\" name=\"action\" value=\"Remove\"></form></td></tr>";

}

}

print "</table>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>NueQuiz - © 2000 <a href=\"http://www.nuedream.com\">NueDream Inc.</a></b></font>\n";

}

} elsif ($FORM{'action'} eq "Add") {

print "Content-type: text/html\n\n";

#check if input is correct and put it into the database

if ($FORM{'reason'} eq "" || $FORM{'answer'} eq "" || $FORM{$FORM{'answer'}} eq "" || $FORM{'question'} eq ""){

print "<br><h1>ERROR :: Information Incomplete</h1><br>Please hit your browser's back button and complete the information";

} else {

open(DATA,$file) or dienice("Couldn't open $file :: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

@data = <DATA>;

close(DATA);

$count = 0;

foreach $line (@data) {

($quizin,$num,$question,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\Q$spacer/,$line);

if ($quizin eq $FORM{'quiz'}) {

if ($count < $num) {

$count = $num;

}

}

}

$count++;

$line = $FORM{'quiz'}.$spacer.($count).$spacer.$FORM{'question'}.$spacer.$FORM{'answer'}.$spacer;

foreach $i (@list){

$line .= $FORM{$i}.$spacer;

}

$line .= $FORM{'reason'};

open(DATA,">>".$file) or dienice("Couldn't open $file :: $!\n");

print DATA $line."\n";

close(DATA);

print "<html><head><title>:::: $quizname Administration Page ::::</title></head>\n<body bgcolor=\"white\">";

print "<font size=\"1\" face=\"verdana\">";

print "<font size=\"4\"><b>Administrative Menu</b></font><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>You have successfully Added a question in the $FORM{'quiz'} $quizname quiz</b></font><br>\n";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><br>You may now return to the <a href=\"$editurl\">administration page</a>.</font><br><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>NueQuiz - © 2000 <a href=\"http://www.nuedream.com\">NueDream Inc.</a></b></font>\n";

}

} elsif ($FORM{'action'} eq "Update") {# going to update a specific question

print "Content-type: text/html\n\n";

open(DATA,$file) or dienice("Couldn't open $file :: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

@data = <DATA>;

close(DATA);

foreach $line (@data) {

chomp($line);

($quizin,$num,$question,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\Q$spacer/,$line);

if ($quizin eq $FORM{'quiz'} && $num eq $FORM{'number'}) {

$string = $FORM{'quiz'}.$spacer.$FORM{'number'}.$spacer.$FORM{'question'}.$spacer.$FORM{'answer'}.$spacer;

foreach $i (@list){

$string .= $FORM{$i}.$spacer;

}

$string .= $FORM{'reason'};

push (@result, $string);

} else {

push (@result, $line);

}

}

open(DATA,">".$file) or dienice("Couldn't open $file for overwriting:: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

sort @result;

foreach $line (@result) {

print DATA $line."\n";

}

close(DATA);

##### MODIFIED QUESTION DISPLAY #####

print "<html><head><title>:::: $quizname Administration Page ::::</title></head>\n<body bgcolor=\"white\">";

print "<font size=\"1\" face=\"verdana\">";

print "<font size=\"4\"><b>Administrative Menu</b></font><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>You have successfully Modified a question in the $FORM{'quiz'} $quizname quiz</b></font><br>\n";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><br>You may now return to the <a href=\"$editurl\">administration page</a>.</font><br><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>NueQuiz - © 2000 <a href=\"http://www.nuedream.com\">NueDream Inc.</a></b></font>\n";

} elsif ($FORM{'action'} eq "Edit") {# going to edit a specific question

print "Content-type: text/html\n\n";

open(DATA,$file) or dienice("Couldn't open $file :: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

@data = <DATA>;

close(DATA);

Link zu diesem Kommentar
Auf anderen Seiten teilen

##### EDITING QUESTION DISPLAY #####

print "<html><head><title>:::: $quizname Administration Page ::::</title></head>\n<body bgcolor=\"white\">";

print "<font size=\"1\" face=\"verdana\">";

print "<font size=\"4\"><b>Administrative Menu</b></font><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>You are Editing a record in the $FORM{'quiz'} quiz.</b></font>\n";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

foreach $line (@data) {

($quizin,$num,$question,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\Q$spacer/,$line);

if ($quizin eq $FORM{'quiz'} && $question eq $FORM{'question'} && $num eq $FORM{'number'}) {

print "<form action=\"$editurl\" method=\"POST\">";

print "<input type=\"hidden\" name=\"number\" value=\"$FORM{'number'}\">";

print "<input type=\"hidden\" name=\"quiz\" value=\"$FORM{'quiz'}\">";

print "<table><tr><td colspan=\"3\"><font size=\"2\" face=\"verdana\">Question:</font></td></tr>\n";

print "<tr><td colspan=\"3\"><input type=\"text\" name=\"question\" size=\"45\" value=\"$question\"></td></tr>\n";

print "<tr><td><font size=\"2\" face=\"verdana\">Answer</font></td><td><font size=\"2\" face=\"verdana\">#</font></td><td><font size=\"2\" face=\"verdana\">Choices</font></td></tr>\n";

$addon = ($ans eq "a")?" checked":"";

print "<tr><td><input type=\"radio\" name=\"answer\" value=\"a\"$addon></td><td>a)</td>\n";

print "<td><input type=\"text\" name=\"a\" size=\"30\" value=\"$a\"></td></tr>\n";

$addon = ($ans eq "b")?" checked":"";

print "<tr><td><input type=\"radio\" name=\"answer\" value=\"b\"$addon></td><td>B)</td>\n";

print "<td><input type=\"text\" name=\"b\" size=\"30\" value=\"$b\"></td></tr>\n";

$addon = ($ans eq "c")?" checked":"";

print "<tr><td><input type=\"radio\" name=\"answer\" value=\"c\"$addon></td><td>c)</td>\n";

print "<td><input type=\"text\" name=\"c\" size=\"30\" value=\"$c\"></td></tr>\n";

$addon = ($ans eq "d")?" checked":"";

print "<tr><td><input type=\"radio\" name=\"answer\" value=\"d\"$addon></td><td>d)</td>\n";

print "<td><input type=\"text\" name=\"d\" size=\"30\" value=\"$d\"></td></tr>\n";

$addon = ($ans eq "e")?" checked":"";

print "<tr><td><input type=\"radio\" name=\"answer\" value=\"e\"$addon></td><td>e)</td>\n";

print "<td><input type=\"text\" name=\"e\" size=\"30\" value=\"$e\"></td></tr>\n";

$addon = ($ans eq "f")?" checked":"";

print "<tr><td><input type=\"radio\" name=\"answer\" value=\"f\"$addon></td><td>f)</td>\n";

print "<td><input type=\"text\" name=\"f\" size=\"30\" value=\"$f\"></td></tr>\n";

print "<tr><td colspan=\"3\"><font size=\"2\" face=\"verdana\">Reasoning for answer</font></td></tr>\n";

print "<tr><td colspan=\"3\"><textarea cols=\"34\" rows=\"3\" name=\"reason\">$reason</textarea></td></tr>\n";

print "<tr><td colspan=\"3\" align=\"right\"><input type=\"submit\" name=\"action\" value=\"Update\"></td></tr>";

print "</table>\n</form>\n";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>NueQuiz - © 2000 <a href=\"http://www.nuedream.com\'>http://www.nuedream.com\">NueDream Inc.</a></b></font>\n";

last;

}

}

} elsif ($FORM{'action'} eq "Remove") {# going to remove a specific question

print "Content-type: text/html\n\n";

open(DATA,$file) or dienice("Couldn't open $file :: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

@data = <DATA>;

close(DATA);

foreach $i ("beginner", "novice", "expert") {

$nextnum{$i} = 0;

}

foreach $line (@data) {

chomp($line);

($quizin,$num,$question,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\Q$spacer/,$line);

if ($quizin eq $FORM{'quiz'} && $question eq $FORM{'question'} && $num eq $FORM{'number'}) {

} else {

$nextnum{$quizin}++;

$string = $quizin.$spacer;

$string .= $nextnum{$quizin}.$spacer.$question.$spacer.$ans.$spacer;

$string .= $a.$spacer.$b.$spacer.$c.$spacer.$d.$spacer.$e.$spacer.$f.$spacer;

$string .= $reason;

push (@result, $string);

}

}

open(DATA,">".$file) or dienice("Couldn't open $file for overwriting:: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

sort @result;

foreach $line (@result) {

print DATA $line."\n";

}

close(DATA);

##### REMOVED QUESTION DISPLAY #####

print "<html><head><title>:::: $quizname Administration Page ::::</title></head>\n<body bgcolor=\"white\">";

print "<font size=\"1\" face=\"verdana\">";

print "<font size=\"4\"><b>Administrative Menu</b></font><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>You have successfully Removed a question in the $FORM{'quiz'} $quizname quiz</b></font><br>\n";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><br>You may now return to the <a href=\"$editurl\">administration page</a>.</font><br><br>";

print "<hr color=\"#000000\" width=\"450\" align=\"left\" noshade>";

print "<font size=\"1\"><b>NueQuiz - © 2000 <a href=\"http://www.nuedream.com\'>http://www.nuedream.com\">NueDream Inc.</a></b></font>\n";

} else {

dienice("You have not used a valid way to access this program go to the <a href=\"$editurl\">Admin Page</a>");

}

} else {

print "Content-type: text/html\n\n";

print <<Passpage

<html>

<head>

<title>:::: NueQuiz Admin Page :::: www.nuedream.com</title>

</head>

<!-- © NueDream Inc. 2000-2002 -->

<body>

<font size="1" face="verdana">

<font size="4"><b>Password Check</b></font>

<br>

<hr color="#000000" width="450" align="left" noshade>

<b>Please input the password to administrate quiz.</b>

<hr color="#000000" width="450" align="left" noshade>

<form method="post" action="$editurl">

<input type="password" name="pass" size="10" maxlength="8">

<input type="hidden" name="check" value="pass">

<input type="hidden" name="action" value="check">

<input type="submit" value="Validate">

</form>

<hr color="#000000" width="450" align="left" noshade>

<b>NueQuiz - © 2000 <a href="http://www.nuedream.com">NueDream Inc.</a></b>

</font>

</body>

</html>

Passpage

}

############## DYING SUBROUTINE ############

sub dienice {

my($msg) = @_;

print "Content-type: text/html\n\n";

print ("<br><hr><br><h1>FATAL ERROR</h1><hr><br>\n");

print ($msg);

exit;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

#!/usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);

# © NueDream Inc. 2000-2002 (www.nuedream.com)

############## GLOBAL CONSTANTS ############

$file = "questions.db"; # This is the name of your questions file.

$quizname = "NueQuiz"; # This is what appears in the TITLE.

$spacer = '|'; # The delimeter used in the database.

$result1 = "You need to think a little harder before you answer next time."; # Message Displayed when user gets below 50%.

$result2 = "You did pretty good. Some of those questions are harder than they look."; # Message Displayed when user gets between 51%-80%.

$result3 = "Wow! You did excellent, looks like you know your stuff."; # Message Displayed when user get above 80%.

$cheater = "Cheating won't get you anywhere in life."; # Message Displayed when user cheated.

$fontface = "verdana, tahoma, arial"; # Font Type.

$anticheat = 1; # Enables or disables the anti-cheating feature

# (1-Enabled, 0-Disabled).

############## PROGRAM START ############

@pairs = split(/&/, $ENV{'QUERY_STRING'} );

foreach $pair (@pairs) {

($name,$value) = split (/=/, $pair);

$value =~ tr/+/ /;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("c", hex($1))/eg;

$value =~ s/\n/ /g;

$value =~ s/\r//g;

$value =~ s/\cM//g;

$GET{$name} = $value;

}

$cookie = $ENV{'HTTP_COOKIE'};

(@cookies) = split(/;/, $cookie);

$content = $ENV{'QUERY_STRING'};

($type, $question) = split(/=/, $content);

if($question eq "") {

$question = 1;

}

$current = $question-1;

$correct = 0;

if($GET{'action'} eq "") {

print "Content-type: text/html\n\n";

print "<html>\n<head>\n<title>$quizname</title>\n</head>\n\n<body bgcolor=\"white\">\n";

print "\n<!-- NueQuiz. © NueDream Inc. 2000-2002. (www.nuedream.com) -->\n\n";

print "<center>\n<table width=\"450\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n<tr>\n<td>\n";

print "<font face=\"$fontface\" size=\"2\">\n";

open(DATA,$file) or dienice("Couldn't open $file :: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

@data = <DATA>;

close(DATA);

# Calculating total number of questions.

$total = 0;

foreach $line (@data) {

($quiz,$num,$q,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\|/,$line);

if ($quiz eq $type) {

$total++;

}

}

$total++;

# Printing Quiz results.

if ($question == $total) {

print "<br><b>QUIZ Results:</b><br><hr width=\"450\" align=\"left\" color=\"black\" NOSHADE><br>";

print "<font size=\"1\">";

foreach $part (@cookies) {

if ($part =~ /$type/) {

($name, $value) = split(/=/,$part);

(@answers) = split(/-/,$value);

foreach $a (@answers) {

($questionc, $answerc) = split(/_/,$a);

foreach $line (@data) {

chomp($line);

($quiz,$num,$q,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\|/,$line);

#####################################################################

if ($quiz eq $type && $questionc eq $num) {

if(substr($answerc,0,1) eq $ans) {

$tempa = substr($answerc,0,1);

$tempb = substr($answerc,1,1);

print "<b>$questionc.</b> $q<br>You Answered: <b>$tempa</b>. <font color=\"#33cc00\"><b>CORRECT!</b></font><ol>$reason</ol>";

$correct++;

} else {

$tempa = substr($answerc,0,1);

$tempb = substr($answerc,1,1);

print "<b>$questionc.</b> $q<br>You Answered: <b>$tempa</b>. <font color=\"red\"><b>INCORRECT!</b></font><br>Correct Answer: <b>$tempb</b>.<ol>$reason</ol>";

}

}

}

}

}

}

print "</font>";

print "<br><hr width=\"450\" align=\"left\" color=\"black\" NOSHADE>";

$percent = ($correct/$current)*100;

printf ("<b>$correct</b> / <b>$current</b> = <b> %4.1f", $percent, "%</b><br><br>");

print "%</b><br><br>";

if ( ($correct/$total) < 0.5) {

print "$result1";

} elsif (($correct/$total) < 0.8) {

print "$result2";

} elsif (($correct/$total) <= 1.0) {

print "$result3";

} else {

print "$cheater";

}

} else {

foreach $line (@data) {

chomp($line);

($quiz,$num,$q,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\|/,$line);

if ($quiz eq $type && $question eq $num) {

print "<form action=\"quiz.cgi?$type=$question&action=check\" method=\"GET\">\n";

print "<br><b>$question. $q</b><br>";

if ($a ne "") { print "<input type=\"radio\" name=\"$num\" value=\"a\" checked>A. $a<br>\n"; }

if ($b ne "") { print "<input type=\"radio\" name=\"$num\" value=\"b\">B. $b<br>\n"; }

if ($c ne "") { print "<input type=\"radio\" name=\"$num\" value=\"c\">C. $c<br>\n"; }

if ($d ne "") { print "<input type=\"radio\" name=\"$num\" value=\"d\">D. $d<br>\n"; }

if ($e ne "") { print "<input type=\"radio\" name=\"$num\" value=\"e\">E. $e<br>\n"; }

if ($f ne "") { print "<input type=\"radio\" name=\"$num\" value=\"f\">F. $f<br>\n"; }

print "<br><input type=\"hidden\" name=\"$type\" value=\"$num\">\n";

print "<br><input type=\"hidden\" name=\"action\" value=\"check\">\n";

print "<input type=\"submit\" value=\"Continue »\">\n</form>\n";

}

}

}

print "</font>\n</td>\n</tr>\n</table>\n</center>\n</body>\n</html>";

} elsif ($GET{'action'} eq "check") {

$content = $ENV{'QUERY_STRING'};

($temp, $temp2, $temp3) = split(/&/, $content);

($question, $answer) = split(/=/, $temp);

($type, $question) = split(/=/, $temp2);

($temp4, $act) = split(/=/,$temp3);

$start = $question+1;

$url = "quiz.cgi?$type=$start";

$tempv = "";

(@cookies) = split(/;/, $ENV{'HTTP_COOKIE'});

foreach $crum (@cookies) {

($name, $value) = split(/=/, $crum);

if($name =~ /$type/) {

$tempv = $value;

last;

}

}

open(DATA,$file) or dienice("Couldn't open $file :: $!\n");

#flock(DATA,0); # uncomment this line if using unix based server

seek(DATA,0,0);

@data = <DATA>;

close(DATA);

foreach $line (@data) {

chomp($line);

($quiz,$num,$q,$ans,$a,$b,$c,$d,$e,$f,$reason) = split(/\|/,$line);

if ($quiz eq $type && $question eq $num) {

if($tempv ne "") {

if ($tempv =~ /$question/) {

if($anticheat == 1) {

print "Content-type: text/html\n\n";

print "<br><br><center><font face=\"verdana\" size=\"2\"><b>$cheater</b><br><br>If you did not try to cheat, try again. This time do not double click the next button.<br> Click once and wait until the next question is fully displayed before clicking again.</font></center>";

} else {

print "Location: $url\n\n";

}

} else {

$tempcookie = "$tempv" . "-" . $question . "_" . $answer . $ans;

print "Set-cookie: $type=$tempcookie\n";

print "Location: $url\n\n";

}

} else {

$tempcookie = $question . "_" . $answer . $ans;

print "Set-cookie: $type=$tempcookie\n";

print "Location: $url\n\n";

}

}

}

}

############# DYING SUBROUTINE ############

sub dienice {

my($msg) = @_;

print ("<br><hr><br><h1>FATAL ERROR</h1><hr><br>\n");

print ($msg);

exit;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

teste mal ein ganz einfaches Script mit


#!/usr/bin/perl

print "irgendwas";

Mein Provider ist irgenwie komisch! Die führen aus Sicherheitsgründen keine Scripts mit den Rechten 777 aus und am anfang des Perlscripts muss folgendes stehen:

#!/usr/bin/perl -w

Ohne -w geht das Script nciht :(

Durfte desshalb das halbe Script umprogrammieren (Bin immernoch dran), weil das Script jetzt Bedienungen wie if($Data eq "") nicht mehr erlaubt! Und noch einiges mehr.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also das mit dem nicht im ASK. Mode Hochladen hat nicht geklappt. immer noch Server Fehler! Das mit dem -w hintendran bin ich gestern durch zufall auch drauf gestoßen funktioniert aber auch nicht. Was natürlich sein kann, das man das script nun ebenfalls umschreiben müsste :( Ich hab ne CGI Test Page draufgeladen und die ging werde aber mal das -w vornedrann wegnehmen und dann schauen obs geht!

Ach ja.... hat ned jemand nen funktionierendes modul zum online test erstellen? Kann GGI oder PHP oder von mir aus auch Java Script sein...

Währe nett!

:P

Link zu diesem Kommentar
Auf anderen Seiten teilen

onlinetestscript?? Das billigste ist in HTML geschrieben (man glaub es kaum :D ):

Machst eine Tabelle mit einer Zeile und einer Spalte.

Als Hintergrund in der Tabelle ein Bild und in der Tabelle ein normales Bild!

Das Hintergrundbild zeigt z.B. ein Offlinebild.

Wird der Server gefunden, wird das Onlinebild von dem Server runtergeladen und angezeigt (das offline wird überdeckt).

Voraussetzung: Es sind deine Server, das heisst du musst auf dem zu testenden Server dieses onlinebild hochladen.

Wenn du nicht hochladen kannst, musst dus wohl mit cgi/perl machen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja genau, diese art von tests.... am besten noch mit einer punktezahl am ände diese zusammengerechnet wurde. Nu ja, der Supporter mit dem ich sprach war ratlos und meinte, soweit würde alles gehen allerdings könnte er mir jetzt nict das script debuggen. Ich weiß ned, aber von der website von der ich des habe, gibts auch nen demo script und des läuft einwandfrei wie bei mir aufm lokalen webserver!

Ich denke, es liegt wirklich an dieser ******e von schreib leseberechtigung das die aus sicherheitsgründen nur so und so lauten darf :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab da so einen Test auf meiner Page http://www.planet-trash.de unter der Rubrik Special/Meinungstest.

Geht über mehrere Seiten und am Ende wird die Punktzahl zusammengerechnet.

Kucks dir mal an, ob es das ist, was du brauchst.

Ist aber in PHP.

Ich schick dir dann die Dateien zu, du musst sie halt nur anpassen und die Globalen Variablen ersetzen(War noch in meiner Anfangszeit).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...