webForumDet fria alternativet

Kod fel.!!

7 svar · 437 visningar · startad av cgi

cgiMedlem sedan jan. 2000358 inlägg
#1

Finns det någon som hittar något fel i denna kod:

#!/usr/bin/perl

use CGI;

$foo = new CGI;

# Om besökaren anropar CGI-skriptet utan att bifoga forumulärdata,
# sker omdirigeringen till formuläret.
if (!$foo->param()) {
     print $foo->redirect('/~snake/email/emailform2.html');
     die "";
}

# Kontrollera data som besökaren skickar
if (!$foo->param('subject')) {
    $subject_error = "<p>Du måste ge meddelandet en rubrik.</p>\n";
}
if (!$foo->param('to')) {
    $to_error = "<p>Du måste ange en mottagare av meddelandet.</p>\n";
}
if ($foo->param('to') ne "sales\@exempel.com" and
    $foo->param('to') ne "info\@exempel.com") {
    $to_error = "<p>Du valde inte en giltig mottagare, försök igen.</p>\n";
}
else {
    if ($foo->param('to') eq "sales\@exempel.com") {
        $sales = " selected";
    }
    if ($foo->param('to') eq "info\@exempel.com") {
        $info = " selected";
    }
}
if (!$foo->param('from')) {
    $from_error = "<p>Du måste ange din adress i fältet Från:.</p>\n";
}
if ($foo->param('from') !~ /^[\w-.]+\@[\w-.]+$/) {
    $from_error = "<p>Adressen som du skrev i fältet Från är ogiltigt, skriv in
en giltig adress.</p>\n";
}
if (!$foo->param('body')) {
     $body_error = "<p>Du måste något i rutan för meddelandets text.</p>\n";
}

if ($subject_error or $to_error or $from_error or $body_error) {
    print $foo->header;
    print "<html>\n<head>\n";
    print "</head>\n";
    print "<body>\n";
    print "<h1>Korrigera felen</h1>\n";
    print "<font color="#ff0000>\n";
    print $subject_error, "\n";
    print $to_error, "\n";
    print $from_error, "\n";
    print $body_error, "\n";
    print "<font>\n";
    print "<form action=\"email.cgi\" method=post>\n";
    print "<table border=0>\n<tr>\n";
    print "<td>Rubrik:</td>\n";
    print "<td><input type=text size=40 maxsize=80 name=\"subject\"value=\"",
  $foo->param('subject'), "\"></td>\n";
    print "</tr>\n<tr>\n";
    print "<td>Till:</td>\n";
    print "<option value=\"xau369j@tninet.se\"$sales>Webmastern\n";
    print "</select>\n";
    print "<tr>\n";
    print "<td>Från:</td>\n";
    print "<td><input type=text size=40 maxsize=80 name=\"from\" value=\"",
  $foo->param('from'), "\"><br>\n";
    print "Ange din riktiga e-postadress här, \n";
    print "    så att vi kan besvära ditt e-postmeddelande.\n";
    print "</td>\n";
    print "<tr>\n";
    print "<td colspan=2>\n";
    print "<Meddelande:<br>\n";
    print "<textarea name=\n</td>\n</tr>\n";
    print "</textarea>\n</td>\n</tr>\nn";
    print "<tr>\n<td colspan=2>\n";
    print "<input type=submit value=\"Skicka e-post\">\n";
    print "<input type=reset value=\"Töm formuläret\">\n";
    print "</table>\n</form>\n";
    print "</body>\n</html>";
}

else {
   $sendmail = "sendmail -t -n -oi";
   open(MAIL, "| $sendmail") or
        die "Content-type: text/plain\n\nKunde inte öppna sendmail med
alternativet -f.\n";
   $to = $foo->param('to');
   $from = $foo->param('from');
   $subject = $foo->param('subject');
   $body = $foo->param('body');
   print MAIL <<EOF;
From: $from
Reply-to: $from
Errors-to: $from
Sender: $from
To: $to
Subject: $subject

$body

EOF
    close MAIL;
    print $foo->header;
    print <<EOF;
<html>
<head>
   <title>Meddelandet har sänts</title>
</head>
<body>
<h1>Meddelandet har sänts</h1>
<p>Meddelandet har sänts till <b>$to</b>.</p>

<pre>
Rubrik: $subject

$body
</pre>
EOF
}
woodiMedlem sedan feb. 2000670 inlägg
#2

Du kan inte precicera Dig lite mer om vad som inte fungerar!?
Skickas inget mail i väg eller vad strular!?

------------------
Svenska FF1
www.johan-skog.nu
/W*

cgiMedlem sedan jan. 2000358 inlägg
#3

Ingenting funkar, du kan ju kolla själv på adressen: http://www.algonet.se/~snake/email/emailform2.html det borde ju funka tycker man,
men det är väl någonting som man har glömt.
Och det är det jag vill ha hjälp med att hitta på felet i denna kod.

RobbanMedlem sedan dec. 19992 272 inlägg
#4

Har för mig att jag tipsade dig om CGIWraps "debug-mode"? Eller misstar jag mig? :)

I vilket fall som helst, använder man den möjligheten får man följande:
http://cgi.algonet.se/htbin/cgiwrapd/snake/email.cgi

syntax error at /home/user11/snake/public_html/cgi-bin/email.cgi line 51, near "print"
In string, @tninet now must be written as \@tninet at /home/user11/snake/public_html/cgi-bin/email.cgi line 63, near "<option value="xau369j@tninet"
Execution of /home/user11/snake/public_html/cgi-bin/email.cgi aborted due to compilation errors.

------------------
Robban <robban@lipogram.com >

[Redigerat av Robban den 20 apr 2000]

cgiMedlem sedan jan. 2000358 inlägg
#5

Jag förstår inte riktigt det där, vad är det jag ska ändra förutom xau369j@tninet.se till
xau369j\@tninet.se.

RobbanMedlem sedan dec. 19992 272 inlägg
#6

...vad är det jag ska ändra förutom xau369j@tninet.se till xau369j\@tninet.se

Det är det du skall ändra för att fixa det felet. Korrekt tolkat alltså. :)

Sedan kan ju scriptet innehålla fler fel som hindrar det från att köras. Är bara att debugga vidare och ta dem ett efter ett i så fall.

------------------
Robban < robban@lipogram.com >

RobbanMedlem sedan dec. 19992 272 inlägg
#7

Det som felar nu är troligen raden:

print "<font color="#ff0000>\n";

D.v.s. du har glömt att avkoda citattecknet (dessutom kommer du få ett HTML-fel eftersom du bara har ett citattecken).

print "<font color=\"#ff0000\">\n";

------------------
Robban < robban@lipogram.com >

cgiMedlem sedan jan. 2000358 inlägg
#8

Ja nu funkar det lite bättre.

Genererad på 368 ms · cache AV · v20260730165559-full.f96bc7eb