Avatar billede nof Nybegynder
04. marts 2000 - 17:27 Der er 27 kommentarer og
1 løsning

MIT SMS SCRIPT VIRKER IKKE!

Hej!

Jeg har virkelig et kæmpe problem; mit nye sms-script fra http://www.script.dk virker ikke, og jeg fatter ikke hvad der er galt. Scriptet er et *.cgi script.

Her er scriptet:
----------------------------------------
#!/usr/bin/perl

#######################################
# FormMail-SMS.cgi                    #
# Copyright Ricki Runge for Script.dk #
# script@script.dk - www.script.dk    #
#######################################

$mailprog = '/usr/sbin/sendmail';

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@Datain = split(/&/, $buffer);

$nr=-1;
foreach (@Datain) {
$nr ++;
@Datain[$nr] =~ s/\+/ /g;
@Datain[$nr] =~ s/%(..)/pack("c",hex($1))/ge;
($name, $value) = split(/=/, @Datain[$nr], 2);
if (lc($name) eq "mail_til") {
  $email = $value;
}
if (lc($name) eq "mail_emne") {
  $emne = $value;
}
if (lc($name) eq "ok_html") {
  $ok_html = $value;
}
if (lc($name) eq "ok_html") {
  $fejl_html = $value;
}
if (lc($name) eq "mail_fra") {
  $fra = $value;
}
}

$udbyd = "fejl";
if ($email >= 20100000 && $email < 20600000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 20600000 && $email < 21000000) {
$udbyd = "note.sonofon.dk";
}
if ($email >= 21100000 && $email < 22000000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 22100000 && $email < 23000000) {
$udbyd = "note.sonofon.dk";
}
if ($email >= 23000000 && $email < 24000000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 26100000 && $email < 26900000) {
$udbyd = "sms.mobilix.dk";
}
if ($email >= 28100000 && $email < 28900000) {
$udbyd = "sms.mobilix.dk";
}
if ($email >= 40100000 && $email < 40500000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 40500000 && $email < 50000000) {
$udbyd = "note.sonofon.dk";
}

if ($udbyd eq "fejl") {
$ud_html = $fejl_html;
}
else {
$email = "$email\@$udbyd";

open(MAIL,"|$mailprog -t");
print MAIL "To: $email\n";
print MAIL "From: $fra\n";
print MAIL "Subject: $emne\n\n";
print MAIL "\n";
close (MAIL);

$ud_html = $ok_html;
}
#print "Content-type: text/html\n\n";
print "Location: $ud_html\n\n";
----------------------------------------
Jeg håber virkelig at I kan hjælpe for jeg er seriøst pisse irreteret over at det ikke virker (det er nok derfor at jeg giver hele 500 point, for et rigtigt svar).

Det skal lige siges at jeg har prøvet at omdøbe scriptet til formmail-sms.pl men det gav heller ikke noget resultat.
Min server står hos http://www.netsite.dk

Med venlig hilsen
nof/Christian Christoffersen
Avatar billede hatecaps Nybegynder
04. marts 2000 - 20:46 #1
selve indmaden ser rigtig nok ud efter et hurtigt tjek... er du sikker på placeringen af sendmail og perl på din server ?

Avatar billede nof Nybegynder
05. marts 2000 - 12:03 #2
hvad mener du?

hvis du mener placeringen; så lå scriptet på: http://www.nof.dk/sms/formmail-sms.cgi inden at jeg slettede det, men det er på den placering det skal ligge, når jeg har fået det til at virke.
Det skal også lige siges at jeg har overført scriptet med ASCII overførsel. Men der står også i den medfølgende forklaring til scriptet, at CHMOD skal på filen skal være: formmail-sms.cgi - 755 , men det ved jeg ikke hvad er, så det har jeg ikke pillet ved.

/nof
Avatar billede nof Nybegynder
05. marts 2000 - 12:06 #3
...Hvis du spørger om jeg overhovedet må bruge CGI på min server; er svaret ja! Det kan du se på http://www.netsite.dk under LIGHTsite

/nof
Avatar billede nof Nybegynder
05. marts 2000 - 12:17 #4
se her: http://www.eksperten.dk/spm.asp?id=7101
der er en der har det samme problem, med samme script...
Avatar billede nof Nybegynder
05. marts 2000 - 12:22 #5
...jeg har uploadet det hele igen, så kan du undersøge sagerne på http://www.nof.dk/sms

jeg får iøvrigt denne besked frem når jeg prøver på at sende en besked:



CGIWrap Error: Script Execution Failed
CGIWrap encountered an error while attempting to execute this script:

Error Message: Permission denied
Error Number: 13
This message usually indicates there is a problem with the script itself. Often this indicates either that the #! line of the script is incorrect, or the script was uploaded in binary mode instead of ascii mode. Check to make sure that the script does not have control-M's at the end of every line. That will prevent it from executing. An easy fix that takes care of this most of the time is to put '#!/.../perl --' instead of '#!/.../perl' on the first line of the script.
If you are not the owner of this script, please forward this error and the URL that caused it to the script owner. That is often the component in the URL right after /cgiwrap/.



--------------------------------------------------------------------------------


Local Information and Documentation:

Contact Name: Administrator
Contact EMail: admin

Server Data:

Server Administrator/Contact: admin
Server Name: www.nof.dk
Server Port: 80
Server Protocol: HTTP/1.0

Request Data:

User Agent/Browser: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Request Method: POST
Remote Address: 212.54.64.208
Remote Port: 1786
Extra Path Info: /sms/formmail-sms.cgi
Referring Page: http://www.nof.dk/sms/sms.html

Avatar billede hatecaps Nybegynder
05. marts 2000 - 14:21 #6
ok, så er sagen klar.. du SKAL CHMOD'e cgi filen til 755.

i det program du bruger til at uploade filen med, er der et eller andet sted en "change attributes" funktion.. i den skal du sørge for at sætte "read" og "execute" for både group og world, og "write", "read" og "execute" for owner.

Avatar billede nof Nybegynder
05. marts 2000 - 16:00 #7
ok - jeg har fundet noget der i WS_FTP  hedder "Remote file permissions"
Under Owner har jeg valgt: Read og Write
Under Group har jeg valgt: Read og Write
Under Other har jeg valgt: Read, Write og Execute.

Jeg er godt nok ikke helt sikker på at det jeg har lavet er rigtigt, men bagefter vil jeg lige se om det virker...
Avatar billede nof Nybegynder
05. marts 2000 - 16:05 #8
...det virker sq ikke!

jeg prøver lige med et andet program...

/nof
Avatar billede nof Nybegynder
05. marts 2000 - 16:23 #9
jeg har lige prøvet med FTP Voyager;
jeg klikkede på filen og valgte properties, derunder kunne jeg så ændre på owner, group og other, som du skrev, men det viker stadig ikke!
du kan selv prøve http://www.nof.dk/sms

/nof
Avatar billede nof Nybegynder
05. marts 2000 - 16:30 #10
skal jeg prøve at slette filen og gøre det sammme igen?
Avatar billede nof Nybegynder
05. marts 2000 - 16:31 #11
...eller skal jeg omdøbe den til formmail-sms.pl , uploade den og gøre det samme igen?
Avatar billede hatecaps Nybegynder
05. marts 2000 - 20:49 #12
ok, du skal ikke ændre fil-navnet så længe du har <form ACTION="http://www.nof.dk/sms/formmail-sms.cgi" METHOD="POST" name="sms"> i html'en. Den fejlmelding du får nu (no such file or directory) tyder på at det alligevel er placeringen af perl og sendmail du ikke har sat rigtigt op.

hvis du kigger i skriptet har du 2 linjer der har med det at gøre :
#!/usr/bin/perl
og
$mailprog = '/usr/sbin/sendmail';

disse to værdier SKAL stemme for at et cgi script kan virke. Hvis du modtog noget dokumentation da du fik hotel hos NetSite, så prøv at kigge der, ellers spørg hos NetSite efter de to placeringer
Avatar billede hatecaps Nybegynder
05. marts 2000 - 20:53 #13
Du kan iøvrigt sige "godt gjort" til dig selv :-)  du har CHMOD'et file rigtigt, uden at vide meget om det .. princippet bag CHMODning/CGI skripts er følgende:

en fil der skal udføres (typisk en fil med .pl eller .cgi) skal CHMOD'es med "execute" for alle typer (og selvfølgelig også med "Read"). Andre filer som et skript skriver til, f.eks, en fil der indeholder tallet til en counter, skal CHMOD'es til 777 , eller "read","write" og "execute" for alle typer.
Avatar billede cybermike Nybegynder
06. marts 2000 - 10:33 #14
Mange servere kræver at CGI scripts er markeret 755 der acceptere ikke 777 selvom det i teorien skulle være iorden!

Derudover, så er det lidt dum at begynde at lave nummergenkendelse i sit script da der jo ikke går særlig langt tid før den teknik ikke kan bruges mere.
(Jge tænker på at du snart kan tage nummeret fra et Sonofon abonement og flytte det til TeleDk osv.)
Avatar billede nof Nybegynder
06. marts 2000 - 22:05 #15
ok - jeg har lieg været inde på adressen
http://netsite.dk/support.asp?menu=support.asp&support=lightsitecgi

Hvor jeg har kigget på placeringen af mine scripts - der står følgende:

Hvad er stien til Perl og Sendmail?
Perl: /usr/bin/perl
Sendmail: /usr/sbin/sendmail

- så skal jeg altså selv lave stien til det directory hvor mit SMS script skal ligge?
Det må altså være denne: http://www.nof.dk/usr/bin/perl/formmail-sms.cgi , eller er det:
http://www.nof.dk/sms/usr/bin/perl/formmail-sms.cgi ???

Det eriterer mig bare lidt at NETsite har skrevet til mig at placeringen af mine scripts ingen betydning har. Men det må jeg jo så bare huske til en anden gang :o)

/nof

Avatar billede hatecaps Nybegynder
07. marts 2000 - 09:06 #16
NEJ !!  med de settings du viser i din sidste kommentar er værdierne rigtig nok, så du skal ikke ændre noget der. Efter at have gravet noget mere fandt jeg et andet sted fejlen kunne ligge:

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

denne linje forsøger at omdirigere browseren til det filnavn du har sat op i $ud_html, men så vidt jeg kan se bruger du der kun alm. filnavne uden sti. Det betyder at fjel.html og ok.html (eller hvad de nu hedder) SKAL ligge i det samme bibliotek som skriptet. Hvis du ikke vil ha' det (og det bør du ikke ville ha' ;-), så placer disse html filer i sms biblioteket (hvis de ikke allerede er der) og ændrer så ovenstående linje til :

print "Location: \/sms\/$ud_html\n\n";
Avatar billede nof Nybegynder
07. marts 2000 - 22:23 #17
ok - det vil altså sige at mit script skal ligge på: http://www.nof.dk/http://www.nof.dk/usr/bin/perl/formmail-sms.cgi
og mail-fejl.html og mail_sendt.html skal ligge henholdsvis på http://www.nof.dk/sms/mail-fejl.html og på http://www.nof.dk/sms/mail-sendt.html , desuden skal jeg ændre: print "Location: $ud_html\n\n"; til: print "Location: \/sms\/$ud_html\n\n"; , er det rigtigt forstået???

/nof
Avatar billede hatecaps Nybegynder
08. marts 2000 - 09:03 #18
hehe , nej ikke helt. Her er hvad jeg ville gøre hvis jeg var dig.

Lave et "cgi-bin" bibliotek på din server lige under roden, altså www.nok.dk/cgi-bin. Dette bibliotek skal CHMOD'es til 755  eller "read,"write" og "execute" for "owner", og "read" og "execute" for både "group" og "world". I dette bibliotek lægger du selve skriptet (igen uploadet med ASCII type), og CHMOD'er det til 755.

Dernæst sørge for at mail-fejl.html og mail-sendt.html ligger i www.kof.dk/sms biblioteket.

Dernæst ændre 
ACTION="http://www.nof.dk/sms/formmail-sms.cgi" METHOD="POST" name="sms"> linjen til
ACTION="http://www.nof.dk/cgi-bin/formmail-sms.cgi" METHOD="POST" name="sms">
da skriptet nu ligger i cgi-bin  biblioteket.

Tilsidst ville jeg så ændre: print "Location: $ud_html\n\n"; til: print "Location: \/sms\/$ud_html\n\n";
Avatar billede nof Nybegynder
08. marts 2000 - 13:50 #19
- scriptet virker fint nu :o)
Men det vil ikke stille om til de to sider (http://www.nof.dk/sms/mail-fejl.html og http://www.nof.dk/sms/mail-sendt.html), det forstår jeg ikke for jeg har jo placeret filerne ligesom du skrev...

Hvis du kan svare på dette spm: http://www.eksperten.dk/spm.asp?id=11968 så får du 150 point oven i. Spørgsmålet handler om en LOG-fil til scriptet...

/nof
Avatar billede hatecaps Nybegynder
08. marts 2000 - 23:14 #20
med hensyn til de to filer : prøv at klikke på linksene du har skrevet i den seneste kommentar. Du får af en eller anden grund "file not found" på dem begge to. Det kunne tyde på at de ikke ligger der hvor de skulle ;-)

når det er løst kan du bruge følgende skript inkl. logfil:

#!/usr/bin/perl

#######################################
# FormMail-SMS.cgi                    #
# Copyright Ricki Runge for Script.dk #
# script@script.dk - www.script.dk    #
#######################################

$mailprog = '/usr/sbin/sendmail';
$logfil  = '/cgi-bin/log/smslog.dat';

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@Datain = split(/&/, $buffer);

$nr=-1;
foreach (@Datain) {
$nr ++;
@Datain[$nr] =~ s/\+/ /g;
@Datain[$nr] =~ s/%(..)/pack("c",hex($1))/ge;
($name, $value) = split(/=/, @Datain[$nr], 2);
if (lc($name) eq "mail_til") {
  $email = $value;
}
if (lc($name) eq "mail_emne") {
  $emne = $value;
}
if (lc($name) eq "ok_html") {
  $ok_html = $value;
}
if (lc($name) eq "ok_html") {
  $fejl_html = $value;
}
if (lc($name) eq "mail_fra") {
  $fra = $value;
}
}

$udbyd = "fejl";
if ($email >= 20100000 && $email < 20600000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 20600000 && $email < 21000000) {
$udbyd = "note.sonofon.dk";
}
if ($email >= 21100000 && $email < 22000000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 22100000 && $email < 23000000) {
$udbyd = "note.sonofon.dk";
}
if ($email >= 23000000 && $email < 24000000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 26100000 && $email < 26900000) {
$udbyd = "sms.mobilix.dk";
}
if ($email >= 28100000 && $email < 28900000) {
$udbyd = "sms.mobilix.dk";
}
if ($email >= 40100000 && $email < 40500000) {
$udbyd = "sms.tdm.dk";
}
if ($email >= 40500000 && $email < 50000000) {
$udbyd = "note.sonofon.dk";
}

if ($udbyd eq "fejl") {
$ud_html = $fejl_html;
}
else {
$email = "$email\@$udbyd";
$datostreng = localtime;
open(LOG,">>$logfil") or &fejl;
print LOG "$env{'REMOTE_ADDR'} sendte til $email d. $datostreng";
close (LOG);
open(MAIL,"|$mailprog -t");
print MAIL "To: $email\n";
print MAIL "From: $fra\n";
print MAIL "Subject: $emne\n\n";
print MAIL "\n";
close (MAIL);

$ud_html = $ok_html;
}
#print "Content-type: text/html\n\n";
print "Location: \/sms\/$ud_html\n\n";

##################################################
sub fejl {
  print "Content-type: text/html\n\n";
  print "Logfilen kunne ikke åbnes, prøv igen !<br>Af sikkerhedsgrunde sender vi ingen beskeder hvis vi ikke kan logge processen";
  exit;
}

Før du bruger skriptet skal du lave et bibliotek UNDER cgi-bin biblioteket der hedder log, altså http://www.nof.dk/cgi-bin/log og det skal du CHMOD'e 777 (read, write og execute for alle typer). Dernæst skal du lave en tom fil (tekstfil) kalde den smslog.dat og uploade den (med ASCII type) til det nye "log" bibliotek. Denne fil skal også CHMOD'es til 777.

Hvis alt går vel burde det virke. :-) Jeg har desværre ikke haft mulighed for at teste det, så det kan godt være der er et par småfejl
Avatar billede nof Nybegynder
08. marts 2000 - 23:20 #21
...jeg kigger på det :o)
Avatar billede nof Nybegynder
09. marts 2000 - 13:30 #22
...jeg havde omdøbt de to filer til; mail_fejl.html og mail_sendt.html , fordi at jeg i første omgang troede at det var det der var galt, men det virker altså stadig ikke...
jeg fortår ikke hvad der er galt!

/nof
Avatar billede hatecaps Nybegynder
09. marts 2000 - 19:19 #23
hmm, det kunne du godt ha sagt noget før..

fejlen ligger her:
<input type="hidden" name="ok_html" value="http://www.nof.dk/sms/mail_sendt.html">
<input
  type="hidden" name="fejl_html" value="http://www.nof.dk/sms/mail_fejl.html">

på din HTML side. Lav det om til
<input type="hidden" name="ok_html" value="mail_sendt.html">
<input type="hidden" name="fejl_html" value="mail_fejl.html">


Avatar billede hatecaps Nybegynder
10. marts 2000 - 09:09 #24
nå det ser da rigtigt godt ud nu :-)
Avatar billede nof Nybegynder
10. marts 2000 - 17:43 #25
har du ICQ? så kan jeg kontakte dig hvis jeg skulle få problemer med noget andet CGI, det lader jo til at du er ret god til det :o)

/nof
Avatar billede hatecaps Nybegynder
10. marts 2000 - 19:58 #26
beklager, du må nøjes med eksperten :-)
hvorfor har du ikke akcepteret mit svar endnu ??
Avatar billede nof Nybegynder
10. marts 2000 - 22:14 #27
ok - jeg nøjes med eksperten :o)
Avatar billede nof Nybegynder
10. marts 2000 - 22:49 #28
lort...!

nu vil denne her side heller ikke virke!

http://www.nof.dk/nyhedsbrev

vil du hjælpe?

/nof
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