Avatar billede jjensen Juniormester
10. juli 2000 - 22:06 Der er 11 kommentarer og
1 løsning

Hjælp til 'tellafriend'

Jeg har fundet, og er ved at tilrette, nedenstående script. Det skal bruges til sende en standard besked, fra en form hvor brugeren selv har indtastet email adressen -

Jeg ligger hos DHT, hvor jeg har læst: http://www.dht.dk/support/perl.shtml at man skulle oploade i Ascii, det har jeg så gjort, men kan stadig ikke få det til at virke!

Se evt. resultat, efter at trykke send på: http://www.global-gateway.com/tellafriend.htm

På DHT's support side står desuden noget om CHMOD755, jeg ikke rigtig forstår...

Da jeg er bestemt ikke nogen haj til det her, er al hjælp meget velkommen!
---

#!/usr/bin/perl
                      #
                      # tell a friend cgi
                      # © 2000 Jackie Hamilton - http://www.cgi101.com/
                      #
                      # This script is generic; all of the configuration is done in the HTML form.
                      # Required fields in the HTML form are:
                      #        name : the name of the person suggesting the site.
                      # suggest_from : the email address of the person suggesting the site.
                      #  suggest_to : the email address to send the suggestion to.
                      #          url : the URL of the site being suggested.
                      #
                      # Optional fields:
                      #      subject : the subject line of the suggestion mail.
                      #  automessage : the path of a file on the server to include in the
                      #                suggestion mail.
                      #      message : a textarea for the suggester to write a message to the
                      #                suggestee.
                      #      ok_url : the url to redirect to after successfully recommending a site.
                      #
                      # configuration stuff:
                      # location of sendmail:
                      $mailprog = "/usr/sbin/sendmail";
                      #
                      # list of domains authorized to call this script:  you really SHOULD set this
                      # to avert inappropriate use or spam.
                      @allowed_domains =("www.global-gateway.com"); 

                      &chkdomain;

                      # main
                      #
                      %f = &parseform;

                      # now do some error-checking.
                      %reqs = ("name", "your name.", "suggest_from", "your e-mail address.",
                      "suggest_to", "the e-mail address of the person you're suggesting this site to.", "url", "the URL of the site being
                      suggested (typically this is a hidden field in the form)");

                      $errmsg = "";
                      foreach $i (keys %reqs) {
                        if ($f{$i} eq "") {
                            $errmsg .= "You must enter $reqs{$i}.<br>\n";
                        }
                      }
                      if ($errmsg ne "") {
                        &dienice($errmsg);
                      }
                      if ($f{suggest_from} !~ /[\w\-]+\@[\w\-]+\.[\w\-]+/) {
                        &dienice("Your e-mail address ($f{suggest_from}) doesn't appear to be valid.");
                      }
                      if ($f{suggest_to} !~ /[\w\-]+\@[\w\-]+\.[\w\-]+/) {
                          &dienice("Recipient address `$f{suggest_to}' doesn't appear to be valid.");
                      }

                      # now we can prepare the message.
                      @msg = ();
                      push(@msg,"Web site recommendation from $f{name} ($f{suggest_from}):\n\n    $f{url}\n\n");

                      if ($f{message} ne "") {
                        push(@msg,$f{message} . "\n\n");
                      }

                      if ($f{automessage} ne "") {
                        if (-e $f{automessage}) {
                            open(INF,$f{automessage});
                            @grok = <INF>;
                            close(INF);
                            push(@msg,@grok);
                            push(@msg,"\n\n");
                        }
                      }

                      if ($f{subject} eq "") {
                        $subject = "Web site recommendation: $f{url}";
                      } else {
                        $subject = $f{subject};
                      }

                      &sendmail($f{suggest_from},$f{suggest_to},$subject,@msg);
                      if (exists $f{ok_url} and $f{ok_url} ne "") {
                          print "Location:$f{ok_url}\n\n";
                      } else {
                        &thanks;
                      }

                      sub thanks {
                        &dohdr;
                      # You may reconfigure the HTML inside the Endthanks block.
                        print <<Endthanks;
                        <center>
                        <h2>Thank You</h2>
                        Thank you for suggesting $f{url}!  Your message has been sent.<p>
                        </center>
                      Endthanks
                        &dofooter;
                      }

                      sub sendmail {
                          my($from,$to,$subject,@msg) = @_;
                          open(MAIL,"|$mailprog -t");
                          print MAIL "To: $to\n";
                          print MAIL "From: $from\n";
                          print MAIL "Subject: $subject\n\n";
                          print MAIL <<EndMail;
                      @msg
                      EndMail
                          close(MAIL);
                      }

                      sub parseform {
                          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;
                              $FORM{$name} = $value;
                          }
                          return %FORM;
                      }

                      sub dienice {
                          ($msg) = @_;
                          &dohdr;
                          print "<h2>Error</h2>\n";
                          print $msg;
                          &dofooter;
                          exit;
                      }

                      sub dohdr {
                          print "Content-type:text/html\n\n";
                          print <<EndHdr;
                      <html><head><title>Results</title></head>
                      <body bgcolor=#ffffff text=#000000>
                      EndHdr
                      }

                      sub dofooter { print "</body></html>\n"; }

                      sub chkdomain {
                        if (@allowed_domains == () ) {
                          return
                        }
                        my($isok) = 0;
                        my($referer) = $ENV{'HTTP_REFERER'};
                        $referer =~ tr/A-Z/a-z/;
                        foreach $i (@allowed_domains) {
                          if ($referer =~ /$i/) {
                            return 1;
                          }
                        }
                        &dienice("Referring page ($referer) is not authorized to call this script!");
                      }
Avatar billede erikjacobsen Ekspert
10. juli 2000 - 22:40 #1
Du skal nok - ifølge DHTs beskrivelse - lægge det i cgi_bin kataloget på din virtuelle server.
Og så skal du nok bruge telnet til at komme ind på serveren, gå til det rigtige katalog med
cd og så skrive

  chmod 755 *.cgi

Prøv evt. først bare sidste punkt. Det kunne godt virke ...
Avatar billede jjensen Juniormester
10. juli 2000 - 23:44 #2
Jeg har prøvet med at placere det i cgi_bin kataloget - det med at bruge telnet er nyt for mig, hvad er det/hvordan gør jeg det?

Hidtil har jeg bare brugt CuteFTP....
Avatar billede jjensen Juniormester
11. juli 2000 - 00:09 #3
Jeg downloadede noget software fra tucows og fandt ud af det med at  fyret den komando 755 af. Jeg ved dog stadig ikke en dyt om hvad telnet er, og hvad 755 gør - noget med rettigheder?

Anyway - Mange tak!

/John
Avatar billede erikjacobsen Ekspert
11. juli 2000 - 00:35 #4
Ja, det er nemlig noget med rettigheder på en unix-maskine.  755 er tre oktale cifre som
repræsenterer de ting ejeren af filen, andre i samme gruppe, og alle andre må gøre ved den.
Og 755 svarer til en anden skrivemåde rwxr-xr-x hvor rwx (=7) betyder at du selv må læse, skrive
og udføre (execute) filen, r-x (=5) betyder at man ikke må skrive. x-et er det afgørende her for
din .cgi-fil. Hvis det ikke er sat, kan den ikke køre som et program.

Prøv i Windows at vælge "Kør" i Start-menuen, og så skriv  telnet ditdomæne . Så bør du
kunne logge ind på maskinen med dit brugernavn og password fra DHT. Så får du noget
der ligner en DOS-prompt, men som altså en det tilsvarende i Unix. Du kan se filer med
kommandoen  ls    og skifte katalog med  cd  .
Avatar billede breum Nybegynder
11. juli 2000 - 09:51 #5
Telnet er en slags skærmvideresending, således at du skriver som om du sad med et tastatur sat direkte til serveren. Det er således UNIX kommandoer du skal skrive. CHMOD kan man også fra de fleste FTP-programmer.

Hos DHT kan man dog ikke bruge telnet, du skal bruge ssh i stedet, men ellers er ovenstående korrekt! SSH virker fuldstændigt ligesom telnet (bortset fra at forbindelsen er krypteret så det er mere sikkert) du vil ikke kunne se forskel og man kan det samme.

På http://www.dht.dk/ssh.html kan du læse hvordan.

En anden ting: hos DHT behøver scriptet IKKE ligge i cgi_bin kataloget, hvis det hedder .pl .cgi kan du lægge det hvor du vil.
Avatar billede breum Nybegynder
11. juli 2000 - 09:52 #6
Hvis du synes ovenstående er et par point værd, så sig til....
Hvis du vil vide mere om hvad SSH er eller hvilke andre muligheder du har hos DHT så sig endelig til, jeg har selv konto hos DHT.
Avatar billede jjensen Juniormester
11. juli 2000 - 23:55 #7
-> breum: Jo, det var nyttigt info! Jeg lærer med 120 km/t lige nu :-)

Jeg endte dog med at vælge en php løsning som, til netop dette problem - det er faktisk også det DHT selv bruger - nu har jeg dog et (lille) nyt problem - se evt. i php kategorien

Måske kunne du komme med en lille vurdering af sitet, (altså med de givne muligheder hos DHT i baghovedet) Og vil meget gerne honorere din input med point!
Avatar billede jjensen Juniormester
12. juli 2000 - 00:06 #8
-> breum: Der er intet postet i php - jeg fik selv løst prob.
Avatar billede breum Nybegynder
12. juli 2000 - 11:08 #9
dvs ingen point?

Nå men skidt med det, sig endelig til hvis der er noget specifikt du gerne vil vide, så er jeg klar igen, med mulighederne hos DHT i baghovedet.

Avatar billede jjensen Juniormester
12. juli 2000 - 22:19 #10
Jo-jo gerne points; og specielt hvis du kunne give en lille evaluering, med mulighederne hos DHT i hovedet - Jeg poster et nyt spørgsmål med point, du så kan svare på - men lad os lige mailes ved - jjensen@image.dk

Mvh,
John
Avatar billede breum Nybegynder
08. august 2000 - 10:04 #11
Hmmm 2 lange mails har jeg sendt dig???
Avatar billede jjensen Juniormester
08. august 2000 - 10:11 #12
Sorry - svar på \'Til Breum\' i denne kategori

JJ
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester