This was more so a test on my web-server when I didn't have the internet.. Just simple and a reply to my VB post @ http://www.mmowned.com/forums/vb/170...ml#post1112100
This script is ran under 2 files. I always try to keep key variables in separate files.. So lets start.
--
This code is for "acceptable.php", it defines the length of the serial, the acceptable amount in a serial, the count of letters in the array and the actual letters to be used in the serial.
Code:
<?php
$length = 16;
$letter_max = 10;
$letter_count = 8;
$letter[1] = 'A';
$letter[2] = 'Z';
$letter[3] = 'P';
$letter[4] = 'U';
$letter[5] = 'W';
$letter[6] = 'E';
$letter[7] = 'G';
$letter[8] = 'V';
?>
--
This is the actual "generator", it uses a simple concept described on my VB post. The letters have a value (assigned by the array count), any number keep there value; Add then up, and it's valid if it's a multiple of a number.
Now this isn't a fool-proof way of generating serials, it wasn't meant to be; It's merely tests. Also, I know I used a class and a declaration of a function to call the key generator. At the time I had plans to expand the functionality and wanted to keep the code "clean"; So I know it's actually useless but it had meaning.
NOTE: The multiplier is 7..
Code:
<?php
$serial = new serial();
$serial->generate();
class serial {
function generate() {
require('acceptable.php');
$serials_max = 20;
$serials_gen = 0;
$count_letter = 0;
$count_total = 0;
$serial[i] = 0;
while ($serials_gen <= $serials_max) {
if ($count_total == $length) {
$number = 0;
$number_check = 0;
$number_count = 1;
while ($number_count <= $length) {
$number_check = $serial[$number_count];
if ($number_check == 1 or $number_check == 2 or $number_check == 3 or $number_check == 4 or $number_check == 5 or $number_check == 6 or $number_check == 7 or $number_check == 8 or $number_check == 9) {
$number += $number_check;
$number_count += 1;
} else {
if ($number == $letter [1]) {
$number += 1;
} elseif ($number == $letter [2]) {
$number += 2;
} elseif ($number == $letter [3]) {
$number += 3;
} elseif ($number == $letter [4]) {
$number += 4;
} elseif ($number == $letter [5]) {
$number += 5;
} elseif ($number == $letter [6]) {
$number += 6;
} elseif ($number == $letter [7]) {
$number += 7;
} elseif ($number == $letter [8]) {
$number += 8;
}
$number_count += 1;
}
}
if ($number == 49 or $number == 52 or $number == 58 or $number == 64 or $number == 73 or $number == 85 or $number == 89) {
$echo_count = 1;
while ($echo_count <= $length) {
echo $serial[$echo_count];
$echo_count += 1;
}
echo '<br />';
$serials_gen += 1;
$count_letter = 0;
$count_total = 0;
} else {
$count_letter = 0;
$count_total = 0;
}
} else {
if ($count_letter == $letter_max) {
$rand = 1;
} else {
$rand = mt_rand(1, 2);
}
if ($rand == 1) {
$count_total += 1;
$serial[$count_total] = mt_rand(1,9);
} elseif ($rand == 2 && $count_letter <= $letter_max) {
$count_total += 1;
$letter_rand = mt_rand(1, $letter_count);
$count_letter +=1;
$serial[$count_total] = $letter[$letter_rand];
}
}
}
}
}
?>