creeer code
4c42a1a00b58 (12 cijfer en letter combinatie)
Graag zou ik de nummers alleen in cijfers willen hebben bijv.
123456789012 ( 12 alleen bestaande uit cijfers)
wat moet ik aanpassen in het stukje script hieronder?
function create_coupon_code($salt="secret", $length=SECURITY_CODE_LENGTH) {
$ccid = md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
srand((double)microtime()*1000000); // seed the random number generator
$random_start = @rand(0, (128-$length));
$good_result = 0;
while ($good_result == 0) {
$id1=substr($ccid, $random_start,$length);
$query = tep_db_query("select coupon_code from " . TABLE_COUPONS . " where coupon_code = '" . $id1 . "'");
if (tep_db_num_rows($query) == 0) $good_result = 1;
}
return $id1;
}
combinatie van preg_match en dan iets met [0-9], zelf niet zoveel ervaring mee.
Gewijzigd op 01/01/1970 01:00:00 door Henk PHP
Ik wil alleen cijfers.
Ps ik ben geen script schrijver. Misschien dat iemand de aanpassing kan maken in mijn script?
je zou een array kunnen maken met 0 tot en met 9 erin. en een lus maken met een random functie die elke keer 1 array uitkiest en dat in een string zetten. Een makkelijk script dus :)
SanThe schreef op 10.01.2008 16:23:
Hoi Santhe,
Hoe verwerk ik dit in mijn script? Bovenstaand script (1e)
Ik heb geen idee wat je daar aan het doen bent.
SanThe schreef op 10.01.2008 16:56:
Ik heb geen idee wat je daar aan het doen bent.
Het stukje script maakt een 12 cijferige/letterige code voor een cadeaubon.
Ik wil een 12 cijferige code (ipv letters en cijfers).
de $id1 is erg belangrijk want deze wordt telkens opgevraagd. Bijvoorbeeld als ik een cadeaubon per email stuur. In het formulier wordt dus een $id1; opgevraagd (aangemaakt) die bovenstaande script maakt. klant krijgt cadeaubonnummer en kan deze verzilveren.
mis ik wat gegevens in het script? Want het script werkt wel maar geeft een cijfer en lettercode bijv 12d5f42s5ds5, deze zelf wordt gemaakt door het script. ik wil alleen cijfers bijv 125478912254
PS: Let wel: Mijn scriptje kan bij toeval meerdere keren hetzelfde getal genereren.
Daarnaast kan een code meerdere keren worden gebruikt, er vindt nergens een update van de status plaats. Daarvoor heb je ook helemaal geen SELECT-query nodig.
Imho is de hele aanpak verkeerd/omslachtig, dit kan veel beter.
pgFrank schreef op 10.01.2008 17:20:
Wat is nu precies de bedoeling? Er wordt een random code aangemaakt en er wordt gekeken of deze random code in de database staat. Waarom zou deze code in de database staan? Het lijkt me toch sterk dat je een paar miljard codes in de database gaat opslaan, of niet dan?
Daarnaast kan een code meerdere keren worden gebruikt, er vindt nergens een update van de status plaats. Daarvoor heb je ook helemaal geen SELECT-query nodig.
Imho is de hele aanpak verkeerd/omslachtig, dit kan veel beter.
Daarnaast kan een code meerdere keren worden gebruikt, er vindt nergens een update van de status plaats. Daarvoor heb je ook helemaal geen SELECT-query nodig.
Imho is de hele aanpak verkeerd/omslachtig, dit kan veel beter.
hoi pg frank dit is de complete script
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
DEFINE('FILENAME_GV_QUEUE', 'gv_queue.php');
DEFINE('FILENAME_GV_MAIL', 'gv_mail.php');
DEFINE('FILENAME_GV_SENT', 'gv_sent.php');
define('FILENAME_COUPON_ADMIN', 'coupon_admin.php');
define('TABLE_COUPON_GV_QUEUE', 'coupon_gv_queue');
define('TABLE_COUPON_GV_CUSTOMER', 'coupon_gv_customer');
define('TABLE_COUPON_EMAIL_TRACK', 'coupon_email_track');
define('TABLE_COUPON_REDEEM_TRACK', 'coupon_redeem_track');
define('TABLE_COUPONS', 'coupons');
define('TABLE_COUPONS_DESCRIPTION', 'coupons_description');
// Below are some defines which affect the way the discount coupon/gift voucher system work
// Be careful when editing them.
//
// Set the length of the redeem code, the longer the more secure
define('SECURITY_CODE_LENGTH', '12');
////
// Create a Coupon Code. length may be between 1 and 16 Characters
// $salt needs some thought.
function create_coupon_code($salt="secret", $length=SECURITY_CODE_LENGTH) {
$ccid = md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
srand((double)microtime()*1000000); // seed the random number generator
$random_start = @rand(0, (128-$length));
$good_result = 0;
while ($good_result == 0) {
$id1=substr($ccid, $random_start,$length);
$query = tep_db_query("select coupon_code from " . TABLE_COUPONS . " where coupon_code = '" . $id1 . "'");
if (tep_db_num_rows($query) == 0) $good_result = 1;
}
return $id1;
}
////
// Update the Customers GV account
function tep_gv_account_update($customer_id, $gv_id) {
$customer_gv_query = tep_db_query("select amount from " . TABLE_COUPON_GV_CUSTOMER . " where customer_id = '" . $customer_id . "'");
$coupon_gv_query = tep_db_query("select coupon_amount from " . TABLE_COUPONS . " where coupon_id = '" . $gv_id . "'");
$coupon_gv = tep_db_fetch_array($coupon_gv_query);
if (tep_db_num_rows($customer_gv_query) > 0) {
$customer_gv = tep_db_fetch_array($customer_gv_query);
$new_gv_amount = $customer_gv['amount'] + $coupon_gv['coupon_amount'];
$gv_query = tep_db_query("update " . TABLE_COUPON_GV_CUSTOMER . " set amount = '" . $new_gv_amount . "' where customer_id = '" . $customer_id . "'");
} else {
$gv_query = tep_db_query("insert into " . TABLE_COUPON_GV_CUSTOMER . " (customer_id, amount) values ('" . $customer_id . "', '" . $coupon_gv['coupon_amount'] . "')");
}
}
////
// Output a day/month/year dropdown selector
function tep_draw_date_selector($prefix, $date='') {
$month_array = array();
$month_array[1] =_JANUARY;
$month_array[2] =_FEBRUARY;
$month_array[3] =_MARCH;
$month_array[4] =_APRIL;
$month_array[5] =_MAY;
$month_array[6] =_JUNE;
$month_array[7] =_JULY;
$month_array[8] =_AUGUST;
$month_array[9] =_SEPTEMBER;
$month_array[10] =_OCTOBER;
$month_array[11] =_NOVEMBER;
$month_array[12] =_DECEMBER;
$usedate = getdate($date);
$day = $usedate['mday'];
$month = $usedate['mon'];
$year = $usedate['year'];
$date_selector = '<select name="'. $prefix .'_day">';
for ($i=1;$i<32;$i++){
$date_selector .= '<option value="' . $i . '"';
if ($i==$day) $date_selector .= 'selected';
$date_selector .= '>' . $i . '</option>';
}
$date_selector .= '</select>';
$date_selector .= '<select name="'. $prefix .'_month">';
for ($i=1;$i<13;$i++){
$date_selector .= '<option value="' . $i . '"';
if ($i==$month) $date_selector .= 'selected';
$date_selector .= '>' . $month_array[$i] . '</option>';
}
$date_selector .= '</select>';
$date_selector .= '<select name="'. $prefix .'_year">';
for ($i=2001;$i<2019;$i++){
$date_selector .= '<option value="' . $i . '"';
if ($i==$year) $date_selector .= 'selected';
$date_selector .= '>' . $i . '</option>';
}
$date_selector .= '</select>';
return $date_selector;
}
?>
DEFINE('FILENAME_GV_QUEUE', 'gv_queue.php');
DEFINE('FILENAME_GV_MAIL', 'gv_mail.php');
DEFINE('FILENAME_GV_SENT', 'gv_sent.php');
define('FILENAME_COUPON_ADMIN', 'coupon_admin.php');
define('TABLE_COUPON_GV_QUEUE', 'coupon_gv_queue');
define('TABLE_COUPON_GV_CUSTOMER', 'coupon_gv_customer');
define('TABLE_COUPON_EMAIL_TRACK', 'coupon_email_track');
define('TABLE_COUPON_REDEEM_TRACK', 'coupon_redeem_track');
define('TABLE_COUPONS', 'coupons');
define('TABLE_COUPONS_DESCRIPTION', 'coupons_description');
// Below are some defines which affect the way the discount coupon/gift voucher system work
// Be careful when editing them.
//
// Set the length of the redeem code, the longer the more secure
define('SECURITY_CODE_LENGTH', '12');
////
// Create a Coupon Code. length may be between 1 and 16 Characters
// $salt needs some thought.
function create_coupon_code($salt="secret", $length=SECURITY_CODE_LENGTH) {
$ccid = md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
$ccid .= md5(uniqid("","salt"));
srand((double)microtime()*1000000); // seed the random number generator
$random_start = @rand(0, (128-$length));
$good_result = 0;
while ($good_result == 0) {
$id1=substr($ccid, $random_start,$length);
$query = tep_db_query("select coupon_code from " . TABLE_COUPONS . " where coupon_code = '" . $id1 . "'");
if (tep_db_num_rows($query) == 0) $good_result = 1;
}
return $id1;
}
////
// Update the Customers GV account
function tep_gv_account_update($customer_id, $gv_id) {
$customer_gv_query = tep_db_query("select amount from " . TABLE_COUPON_GV_CUSTOMER . " where customer_id = '" . $customer_id . "'");
$coupon_gv_query = tep_db_query("select coupon_amount from " . TABLE_COUPONS . " where coupon_id = '" . $gv_id . "'");
$coupon_gv = tep_db_fetch_array($coupon_gv_query);
if (tep_db_num_rows($customer_gv_query) > 0) {
$customer_gv = tep_db_fetch_array($customer_gv_query);
$new_gv_amount = $customer_gv['amount'] + $coupon_gv['coupon_amount'];
$gv_query = tep_db_query("update " . TABLE_COUPON_GV_CUSTOMER . " set amount = '" . $new_gv_amount . "' where customer_id = '" . $customer_id . "'");
} else {
$gv_query = tep_db_query("insert into " . TABLE_COUPON_GV_CUSTOMER . " (customer_id, amount) values ('" . $customer_id . "', '" . $coupon_gv['coupon_amount'] . "')");
}
}
////
// Output a day/month/year dropdown selector
function tep_draw_date_selector($prefix, $date='') {
$month_array = array();
$month_array[1] =_JANUARY;
$month_array[2] =_FEBRUARY;
$month_array[3] =_MARCH;
$month_array[4] =_APRIL;
$month_array[5] =_MAY;
$month_array[6] =_JUNE;
$month_array[7] =_JULY;
$month_array[8] =_AUGUST;
$month_array[9] =_SEPTEMBER;
$month_array[10] =_OCTOBER;
$month_array[11] =_NOVEMBER;
$month_array[12] =_DECEMBER;
$usedate = getdate($date);
$day = $usedate['mday'];
$month = $usedate['mon'];
$year = $usedate['year'];
$date_selector = '<select name="'. $prefix .'_day">';
for ($i=1;$i<32;$i++){
$date_selector .= '<option value="' . $i . '"';
if ($i==$day) $date_selector .= 'selected';
$date_selector .= '>' . $i . '</option>';
}
$date_selector .= '</select>';
$date_selector .= '<select name="'. $prefix .'_month">';
for ($i=1;$i<13;$i++){
$date_selector .= '<option value="' . $i . '"';
if ($i==$month) $date_selector .= 'selected';
$date_selector .= '>' . $month_array[$i] . '</option>';
}
$date_selector .= '</select>';
$date_selector .= '<select name="'. $prefix .'_year">';
for ($i=2001;$i<2019;$i++){
$date_selector .= '<option value="' . $i . '"';
if ($i==$year) $date_selector .= 'selected';
$date_selector .= '>' . $i . '</option>';
}
$date_selector .= '</select>';
return $date_selector;
}
?>
in een ander stukje script staat
if ($HTTP_POST_VARS['email_to']) {
$id1 = create_coupon_code($HTTP_POST_VARS['email_to']);
$message = tep_db_prepare_input($HTTP_POST_VARS['message']);
$message .= "\n\n" . TEXT_GV_WORTH . $currencies->format($HTTP_POST_VARS['amount']) . "\n\n";
$message .= TEXT_TO_REDEEM;
$message .= TEXT_WHICH_IS . $id1 . TEXT_IN_CASE . "\n\n";
$message .= HTTP_SERVER . DIR_WS_CATALOG . 'gv_redeem.php' . '?gv_no='.$id1 . "\n\n";
$message .= TEXT_OR_VISIT . HTTP_SERVER . DIR_WS_CATALOG . TEXT_ENTER_CODE;
dus de code dient te worden gemailt.
Bovenstaande code ga ik uiteraard niet uitspitten, maar het staat wel vol fouten. Ga de error_reporting maar eens aanzetten en op het hoogste niveau zetten.
op :
http://creloadedpub.creforge.com/docs/d2/d24/admin_2includes_2add__ccgvdc__application__top_8php-source.html
staat gehele script waar het over gaat.
als je klik op:
Go to the documentation of this file.
boven in de scrip. Zie je alle bestandje die aan de script verbonden zijn. Deze kan je ook inkijken.
Aan de hand van deze gegevens. Wie kan mij vertellen hoe en waar ik wat moet aanpassen om de nummers die gecreert worden te krijken in cijfer ipv letters en cijfers.
Ik weet niet erg veel van php vandaar dat ik misschien wat omslachtig overkom
script is van oscommerce contri
flashfocus schreef op 10.01.2008 17:30:
Ah, dat verklaart een hoop, dat sluit helemaal aan bij de berichten die ik heb meegekregen: Zeer slechte en omslachtige code.script is van oscommerce contri
Bumpen::
SanThe.
sorry santhe was niet mijn bedoeling
flashfocus schreef op 10.01.2008 17:30:
ik weet het nog beter, op :
Ik verpruts niet de layout, ik maak netjes een linkje.
Ik verpruts niet de layout, ik maak netjes een linkje.
Jah, maar zie eens wanneer die pagina is gemaakt:
Quote:
Generated on Fri Mar 17 15:47:38 2006
Dat is al bijna 2 jaar terug....
Quote:
Aan de hand van deze gegevens. Wie kan mij vertellen hoe en waar ik wat moet aanpassen om de nummers die gecreert worden te krijken in cijfer ipv letters en cijfers.
Jah, niet hé, dat script is gewoon bedoelt voor een alfa-numerieke string uit te poepen.