PDA

View Full Version : Cách fix lỗi khi tạo thẻ card ở Muweb 0.8



bachcotsau
06-05-08, 11:48 AM
Hôm nay mình mới làm tới modules tạo thẻ card và đã fix được lỗi khi tạo ra 2 mã thẻ trùng nhau .
Code :



$number1 = rand(0, 2);
$number2 = rand(0, 0);
$number3 = rand(0, 0);
$card_id = $number1.$number2.$number3;

$check_taikhoan="SELECT card_id from MuWeb_card where card_id='$card_id'";
$hien_taikhoan = $db->Execute($check_taikhoan);
$bachcotsau = $hien_taikhoan->fetchrow();
$amount = $_POST["card_amount"];
$date = date('d-m-Y');

if ($bachcotsau[0] == $card_id)
exit("Lỗi trong quá trình tạo thẻ. Thẻ này đã có .");


Các bạn muốn thử chỉ cần thay thế đoạn trên vào đoạn sau sau đó tạo vài thẻ .



$number1 = rand(100000, 999999);
$number2 = rand(10000, 99999);
$number3 = rand(1000, 9999);
$card_id = $number1.$number2.$number3;
$amount = $_POST["card_amount"];
$date = date('d-m-Y');

Hưởng thụ thành quả :go:
Hiện mình đã tìm ra lỗi đúp zen ngân hàng do lỗi chuyển zen từ tài khoản này sang tài khoản khác, nhưng lúc mình tìm lại cách đúp đó thì lại không nhớ rõ là do chuyển như thế nào mà bị lỗi . Nếu ai phát hiện lỗi trên reply cho mình để mình fix .Hiện chức năng gửi zen và rút zen từ hệ thống ngân hàng đã hoàn chỉnh mời các bạn tham quan web của mình để tìm ra lỗi để mình fix .
Hiện trang web đang là : 123.18.164.254/fpt
hoặc tên miền <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

mylove0707
25-05-08, 07:43 PM
[quote=bachcotsau;116438]Hôm nay mình mới làm tới modules tạo thẻ card và đã fix được lỗi khi tạo ra 2 mã thẻ trùng nhau .
Code :
[code]

$number1 = rand(0, 2);
$number2 = rand(0, 0);
$number3 = rand(0, 0);
$card_id = $number1.$number2.$number3;

$check_taikhoan="SELECT card_id from MuWeb_card where card_id='$card_id'";
$hien_taikhoan = $db->Execute($check_taikhoan);
$bachcotsau = $hien_taikhoan->fetchrow();
$amount = $_POST["card_amount"];
$date = date('d-m-Y');

if ($bachcotsau[0] == $card_id)
exit("Lỗi trong quá trình tạo thẻ. Thẻ này đã có .");

---------------------------------
lấy nguyên cái này paste qua luôn hả bro ? có được không vậy ?

bachcotsau
25-05-08, 10:40 PM
hướng dẫn như vậy là cặn kẽ rồi mà không hiểu thì chịu :">

thanhbuata
27-05-08, 03:05 PM
Mấy dòng đó nằm ở file nào vậy bạn mình cũng sử dụng web 08 nhưng tìm trong file card.php ko thấy những dòng đó.

mylove0707
28-05-08, 07:30 PM
nằm trong folder sss ấy ! ...\MuWeb0.8\sss là thư mục chức các file chức năng của Admin

NetBanBe.Net
29-05-08, 09:24 AM
Cách tốt nhất để không bị trùng thẻ đó là: sử dụng ngày tháng năm, giờ phút giây làm 1 phần tử trong thẻ.
Ví dụ: khi tạo thẻ lúc 12h 01 phút 02 giây ngày 29-05-2008.
Mã số thẻ sẽ là: 12010229052008 cộng với 5 số random đằng sau. -> 1201022905200812345

qvloveh34ever
29-05-08, 04:04 PM
Cách tốt nhất để không bị trùng thẻ đó là: sử dụng ngày tháng năm, giờ phút giây làm 1 phần tử trong thẻ.
Ví dụ: khi tạo thẻ lúc 12h 01 phút 02 giây ngày 29-05-2008.
Mã số thẻ sẽ là: 12010229052008 cộng với 5 số random đằng sau. -> 1201022905200812345

Làm hộ tớ với :sexy_girl:
cái "món" này em chịu :burn_joss_stick:

mylove0707
30-05-08, 07:09 PM
cách fix của BACHOTTSAU càng toi nữa ! fix như vậy mà gọi là fix gì, làm lỗi thêm thì có

mylove0707
30-05-08, 07:11 PM
Netbanbe.us chỉ rõ luôn đi, thanks !

bachcotsau
30-05-08, 07:33 PM
cách fix của BACHOTTSAU càng toi nữa ! fix như vậy mà gọi là fix gì, làm lỗi thêm thì có

Toi như thế nào nói thử xem :sweat:

mylove0707
31-05-08, 12:28 PM
tạo được khoảng 34 cái thẻ, thì không tạo được nữa, tạo thẻ mệnh giá bao nhiêu cũng báo là lỗi thẻ, không cho tạo luôn !

bachcotsau
31-05-08, 12:34 PM
Thẻ bao nhiêu ID card ??? đây nhỉ .Tôi ngồi tạo cả trăm cái thẻ cũng ko sao hết trừ khi nó không còn số để mà tạo .Tạo thẻ 15 ID card thì 1 ngàn cái thẻ may ra dính 1 cái nhưng tạo lại là ok

Cách fix tạo thể ở trên là lấy số thể đã tạo rồi so sánh với ID thẻ đã có trong dữ liệu rồi gây báo lỗi có thẻ trùng .

mylove0707
31-05-08, 04:05 PM
có 3 số thôi ! có cách nào không anh ơi ? đang phải xài tạm cái nguyên thuỷ

bachcotsau
31-05-08, 07:01 PM
có 3 số thôi ! có cách nào không anh ơi ? đang phải xài tạm cái nguyên thuỷ

3 số là phải .như vậy chứng tỏ bạn không biết tý gì về php cả .Ở trên tôi làm như vậy để xác thực đựoc chức năng check thẻ có chuẩn không

Đây là code 14 ký tự hoàn chỉnh để fix :


$number1 = rand(00000, 99999);
$number2 = rand(00000, 99999);
$number3 = rand(0000, 9999);
$card_id = $number1.$number2.$number3;

$check_taikhoan="SELECT card_id from MuWeb_card where card_id='$card_id'";
$hien_taikhoan = $db->Execute($check_taikhoan);
$bachcotsau = $hien_taikhoan->fetchrow();
$amount = $_POST["card_amount"];
$date = date('d-m-Y');

if ($bachcotsau[0] == $card_id)
exit("Lỗi trong quá trình tạo thẻ. Thẻ này đã có .");


Thực chất 15 ký tự mới là hoàn chỉnh nhất nhưng nếu tôi tạo ở trên 15 ký tự thì bản web 0.8 các bạn đang sửdụng chỉ cho điền 14 ký tự . Vậy còn 1 ký tự thừa trong SQL để làm gì nhỉ =))

htclub
16-06-08, 10:43 AM
đảm bảo sau khi ban thay code này vào thì sẽ không bao giờ trùng mã id
$number1 = date('siHmdy');
//tạo chuỗi theo 12 số theo định dạng giây_phút_giờ_ngày_tháng _năm
$number2 = rand(00000000, 99999999);
// nếu bạn muốn dùng 14 chữ số để tạo ID Card thì dùng $number2 = rand(00, 99);
// ở đây tui dùng 20 chữ số để tạo ID Card vì độ rộng của id card là 20
$card_id = $number1.$number2;

bachcotsau
16-06-08, 01:10 PM
đảm bảo sau khi ban thay code này vào thì sẽ không bao giờ trùng mã id
$number1 = date('siHmdy');
//tạo chuỗi theo 12 số theo định dạng giây_phút_giờ_ngày_tháng _năm
$number2 = rand(00000000, 99999999);
// nếu bạn muốn dùng 14 chữ số để tạo ID Card thì dùng $number2 = rand(00, 99);
// ở đây tui dùng 20 chữ số để tạo ID Card vì độ rộng của id card là 20
$card_id = $number1.$number2;

Ai bảo không trùng ID card được ...Tôi làm cho nó trùng đưựoc với đoạn code fix như trên thì sao :big_smile:
P/S biết trương trình đóng băng time để ăn gian giờ netcafe chứ =))

bachcotsau
16-06-08, 01:28 PM
Ai bảo không trùng ID card được ...Tôi làm cho nó trùng đưựoc với đoạn code fix như trên thì sao :big_smile:
P/S biết trương trình đóng băng time để ăn gian giờ netcafe chứ =)) .xin lỗi nói như vậy là không phải cho lắm nhưng tỷ lệ % fix như trên cũng là 99.99% rồi .
Còn 0.001% bị trùng ID card VD là 1 câu truyện cổ tích nhé ^^:

Máy chủ lúc đó đang quá trình tes server và tes nạp card .Bạn cần chỉnh lại time quay lại để tes event chẳng hạn ( vì event phải chạy đúng giờ đã định trước)
Web của bạn có nhiều admin quản lý nhiều nơi và bạn cho họ vào đó tạo card .Trong cái giây phút quay ngược lại thời gian trước đó thì đúng cái giờ nghỉ trưa mọi người tranh thủ làm thêm thẻ card thì vô tình 12h đúng event devil bắt đàu và 25 admin ở nhiều nơi cũng quản lý 1 server và tạo card thời điểm đó bỗng dưng kỳ tích xuất hiện vào đúng 12h 15' xong event devil thì tất cả vào tạo ID card .Không may xả ra cái 00.001 % đó lại dính vào cái giờ phút này .
end

Và 1 bug nữa của cách nạp thẻ ở trên là không thể giới hạn số ký tự Card ID send vào dữ liệu .Nếu ở trên 20 ký tự thì Trong SQL của các bạn hiên nay chỉ có thể cho vào 15 ký tự .
Nếu cho ít quá 15 ký tự thì dẫn đến việc gặp dân Pro nó chèn thêm 1 vài câu lệnh vào SQL và tái xử dụng lại ID Card :hungry:

Các khắc phục của tôi hiên nay vẫn là check card Id và dự định làm các nạp thẻ cấp 2 .
Nạp thẻ cấp 2 bao ghồm ID card và serial của Card .Nếu muốn thì cho thêm 4 số mã pin nữa nhưng như vậy đã quá ổn rồi .

htclub
16-06-08, 02:31 PM
- thứ nhất dùng chương trình đóng băng time thì làm gì có tác dụng vì thời gian ở đây là thời gian của máy chủ chứ không phải là thời gian của máy duyệt web (còn máy chủ thì chả thằng nào cài cái đó vào làm gì => dở hơi)
- Giả sử sau sự kiện như bcs nói thì sát suất có trên 2 người cùng bấm tạo thẻ cùng 1 giây cũng ít sảy ra lắm hơn nữa lại còn có random nữa mà

htclub
16-06-08, 03:03 PM
cần thiết nữa thì cho 1 đoạn mà kiểm tra xem thẻ có trùng thì không tạo được thẻ
if (isset($_POST["add_card"]))
{
$number1 = date('siHmdy');
$number2 = rand(10000000, 99999999);
$card_id = $number1.$number2;
$amount = $_POST["card_amount"];
$date = date('d-m-Y');
$card_query = $db->Execute("SELECT card_id from MuWeb_card where card_id='$card_id'");
if ($card_query->numrows()>0) echo "Có lỗi trong quá trình tạo thẻ!<br> bạn hãy tạo lại thẻ khác";
else{
$db->Execute("INSERT INTO MuWeb_card (card_id,card_amount,sell_info,use_info,member_use ,add_date,use_date,buyer) VALUES (?,?,'0','0','',?,'0','')",array($card_id,$amount,$date));
echo "<img src=./images/ok.gif> Bạn tạo thành công thẻ ID :<b> $card_id</b>, trị giá : <b>$amount</b> .";
}}

htclub
16-06-08, 03:24 PM
và đây là 1 thử ngiệm của tui
tui cho 1 vòng lặp từ 1 dến 10.000 kết quả là thu được 8572 thẻ không có thẻ nào bị trùng id
if (isset($_POST["add_card"]))
{
for($i=0;$i<10000;++$i){
$number1 = date('siHmdy');
$number2 = rand(10000000, 99999999);
$card_id = $number1.$number2;
$amount = $_POST["card_amount"];
$date = date('d-m-Y');
$card_query = $db->Execute("SELECT card_id from MuWeb_card where card_id='$card_id'");
if ($card_query->numrows()>0) echo "Có lỗi trong quá trình tạo thẻ!<br> bạn hãy tạo lại thẻ khác";
else{
$db->Execute("INSERT INTO MuWeb_card (card_id,card_amount,sell_info,use_info,member_use ,add_date,use_date,buyer) VALUES (?,?,'0','0','',?,'0','')",array($card_id,$amount,$date));
echo "<img src=./images/ok.gif> Bạn tạo thành công thẻ ID :<b> $card_id</b>, trị giá : <b>$amount</b> .";
}}}

bachcotsau
16-06-08, 06:21 PM
và đây là 1 thử ngiệm của tui
tui cho 1 vòng lặp từ 1 dến 10.000 kết quả là thu được 8572 thẻ không có thẻ nào bị trùng id
if (isset($_POST["add_card"]))
{
for($i=0;$i<10000;++$i){
$number1 = date('siHmdy');
$number2 = rand(10000000, 99999999);
$card_id = $number1.$number2;
$amount = $_POST["card_amount"];
$date = date('d-m-Y');
$card_query = $db->Execute("SELECT card_id from MuWeb_card where card_id='$card_id'");
if ($card_query->numrows()>0) echo "Có lỗi trong quá trình tạo thẻ!<br> bạn hãy tạo lại thẻ khác";
else{
$db->Execute("INSERT INTO MuWeb_card (card_id,card_amount,sell_info,use_info,member_use ,add_date,use_date,buyer) VALUES (?,?,'0','0','',?,'0','')",array($card_id,$amount,$date));
echo "<img src=./images/ok.gif> Bạn tạo thành công thẻ ID :<b> $card_id</b>, trị giá : <b>$amount</b> .";
}}}

chỉ nói là 00.001% mà và đó chỉ là 1 con số chỉ có kỳ tích mới có :biggrin: .Còn tạo theo kiểu 20 ID card thì phải fix lại SQL nếu không nhiều người họ ko rành .

Lãng Tử Sầu
17-06-08, 10:58 AM
Toàn Pro PHP :D Hum nào nhờ mí Anh chỉnh sửa cho cái Web :D Thanks !

thanhbuata
17-06-08, 05:10 PM
Săn các pro giúp mình cái vụ bán đồ trên web của thành viên bị trùng ID luôn đi nha.
Nghĩa là khi bán đồ trên web các ID của các món đồ bị trùng nhau. Nên khi bấm vào xem món đồ này thì nó hiện món đồ khác và khi mua thì mất luôn cả hai.
Các pro giúp mình với.

htclub
20-06-08, 04:38 PM
bạn mở file includes\muweb.php tìm đến dòng
$id1 = rand(10000, 99999);
$id1 = rand(10000, 99999);
$id2 = rand(10000, 99999);
$creater_id = $id1.$id2;
$muweb['verify_code'] = substr(str_shuffle($creater_id), 0, 7);
$muweb['item_id'] = substr(str_shuffle($creater_id), 0, 7);
$muweb['event_id'] = substr(str_shuffle($creater_id), 0, 7);
$muweb['news_id'] = substr(str_shuffle($creater_id), 0, 7);
$muweb['link_id'] = substr(str_shuffle($creater_id), 0, 7);
Thay bằng (tiện thể thay luôn id của một số cái khác luôn cho đỡ trùng)
$id1 = date('siHmdy');
$id2 = rand(1000000, 9999999);
$creater_id = $id1.$id2;
$muweb['verify_code'] = $id2;
$muweb['item_id'] = $creater_id;
$muweb['event_id'] = $creater_id;
$muweb['news_id'] = $creater_id;
$muweb['link_id'] = $creater_id;

Mr.Rin
20-04-09, 04:25 PM
đảm bảo sau khi ban thay code này vào thì sẽ không bao giờ trùng mã id
$number1 = date('siHmdy');
//tạo chuỗi theo 12 số theo định dạng giây_phút_giờ_ngày_tháng _năm
$number2 = rand(00000000, 99999999);
// nếu bạn muốn dùng 14 chữ số để tạo ID Card thì dùng $number2 = rand(00, 99);
// ở đây tui dùng 20 chữ số để tạo ID Card vì độ rộng của id card là 20
$card_id = $number1.$number2;


Tớ dùng cách này tạo 14 số ID. Nhưng mà nhiều thẻ nó có 13 số thôi là sao hả cậu ?
Tớ dùng

$number2 = rand(00, 99);

ghvn1991
20-04-09, 04:39 PM
Cách Fix của anh Bachcot y hệt em. Chả có lỗi gì cả, mylove0707 xem lại đi nhá.