Avatar billede cool-wil Nybegynder
02. maj 2002 - 14:18 Der er 4 kommentarer og
1 løsning

Hvad er problemet med denne her?

Jeg sidder og arbejder lidt på noget perl+ delphi, men den laver fejl i dette perl script...

use Math::BigInt;
use CGI_LIB;

my($cgi) = new CGI_LIB;

  # Process Input
  $license = $cgi->{"licensename"};
  $registrationcode = &CalculateCode($license);


  # Print out HTML response with registration code
  # This is the part of the program you would most likely want to change
  print &htmlpage_begin("Product Registration Code"),
        "<H1>Registration Code for Product</H1>\n",
        "<BR>\n<BR>\n",
        "Your User name is: $license\n<BR>\n",
        "Your Registration Code is: ",
        $registrationcode,
        &htmlpage_end;



sub CalculateCode {
  my($LicenseName)= @_;

  # Create error is LicenseName was greater than MaxChars (25),
  # or shorter than MinChars (3)
  if ((length($LicenseName) > 25) or (length($LicenseName) < 3)) {
    # Make HTML response for failure
    print "Content-type: text/html\n\n",
          "Incorrect Size\n";
    exit;
  }
  # Takes the last 6 characters (going backwards), converting each
  # character to ASCII and taking the remainder of dividing it into Seed
  $i = 0;
  $Seed = 4133185345; # Set to whatever your seed property is set to
  $RegCodeSize = 12; # Same as property in component
  $CodeStr = "";
  $ReversedName = reverse $LicenseName;
  while (($i <= 6) and ($i < length($ReversedName))) {
    $CodeStr = $CodeStr . ($Seed % ord(substr($ReversedName, $i, 1)));
    $i++;
  }

  # Convert to Hex
  $BigCodeStr = Math::BigInt->new($CodeStr);
  @hexnums=qw( 0 1 2 3 4 5 6 7 8 9 A B C D E F );
  while($BigCodeStr)
  {
    unshift @RegCode,$hexnums[$BigCodeStr%16];
    $BigCodeStr=$BigCodeStr/16;
  }
  $RegCode=join("", @RegCode);

  if (($RegCodeSize > 0) and (length($RegCode) < $RegCodeSize)) {
    # If RegCode is not big enough then fill the front of it with 0's
    $RegCode = reverse $RegCode;
    for ($diff = $RegCodeSize - length($RegCode); $diff > 0; $diff--) {
      $RegCode = $RegCode . "0";
    }
    $RegCode = reverse $RegCode;
  } elsif (($RegCodeSize > 0) and (length($RegCode) > $RegCodeSize)) {
    # Chop off the ending characters if reg code is bigger than RegCodeSize
    $diff = length($RegCode) - $RegCodeSize;
    while ($diff > 0) {
      chop $RegCode;
      $diff--;
    }
  }
  return $RegCode;
}

sub htmlpage_begin {
  my($Title)= @_;
  return "Content-type: text/html\n\n",
        "<HTML>\n<HEAD>\n<TITLE>$Title</TITLE>\n</HEAD>\n\n<BODY>\n\n";
}

sub htmlpage_end {
    return "\n</BODY>\n</HTML>";
}

http://www.talkzone.dk/regware200.pl

Jeg får en: Incorrect Size  fejl...

hvad kan problemet være?

Jeg er 100% newbiee i perl, så please hjælp:-)


wil/

Avatar billede erikjacobsen Ekspert
02. maj 2002 - 18:55 #1
Der er ikke noget galt, men du skal jo kalde den med en parameter
 
  http://www.talkzone.dk/regware200.pl?licensename=aksjhdajkshd
Avatar billede cool-wil Nybegynder
07. maj 2002 - 10:54 #2
oki fedest erikjacobsen:-) det var jo lige hvad jeg skulle bruge
Ved du hvordan jeg så f.eks. via en tekst boks kan skrive et username, og så få det her script til at regne sig frem til en licenskode?

har du en ide?
Avatar billede erikjacobsen Ekspert
07. maj 2002 - 12:21 #3
Mnajh:

<form action="ditperlscript">
<input type="text" name="licensename">
<input type="submit">
</form>
Avatar billede cool-wil Nybegynder
07. maj 2002 - 13:14 #4
tester:-)
Avatar billede cool-wil Nybegynder
21. maj 2002 - 06:50 #5
tak for hjælpen:-)
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