自动为PDF下载添加唯一编号

I have a client that sells gift vouchers online - they currently have a piece of software they use to allocate numbers to certificates, so they can't be used more than once - when someone hands in the voucher they enter the number on the computer, this means if someone else has the same number it's not going to be accepted.

This is easy enough when their selling at the shop, but now they want to sell them online *using PayPal as the payment gateway). They have the design of the certificates, I just need to be able to do the following:

  1. Allow users to buy via PayPal (easy enough)
  2. Re-Direct users to the download page (again easy)
  3. This is where it gets hard, I need every download to have a unique number on it somewhere - so when they print it the number it on it i.e. not just the file name.

This would be easy enough on a webpage, I could just add one to the number on every view, but ideally this would be in a PDF format.

I can use any numbers (in any order) from 100 - 10,000.

Does anybody know the best way to go about this?

Firstly you would want to atleast add a check digit top stop people from guessing the next number in sequence. So $gift_code = $random_number . check_digit( $random_number );

This is not foolprof, idally you should generate a set of numbers from the existing software and go though that list. Store it in a db and mark them as sold after each sale.

For the PDF part, use http://www.fpdf.org/ or http://www.php.net/manual/en/intro.pdf.php Use the image you have of the gift certificate as the background of the PDF annd add the giftcard code as text.

Hope this helps. Good luck!

I'd use uniqid():

$filename = 'foobar'.uniqid();
echo $filename; //eg: foobar51f1048fcd26b

Or even, rand():

$filename = 'foobar'.rand(1,10000);
echo $filename; //eg: foobar6274

Im not sure if i get what u mean exactly .. but u can try to use time() function in php .. for example :

$file_name = time() . '_file.pdf'

Use md5,

$unique = md5(uniqid(rand (), true));