我一直致力于代码,用户可以访问数据库中的promocode以及随附的折扣。现在,当用户必须支付并获得一个促销代码时,他输入相同的内容,并在他的工资中获得一些折扣。 现在如何限制promocode访问一次?
我的代码为::
<?php include('db.php'); ?>
<?php
$promocode = $_POST['promocode'];
$payamount = $_POST['payamount'];
$mobile = $_SESSION['mobile'];
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql3 = "SELECT * FROM apromocode WHERE code = '$promocode' ";
$result3 = $conn->query($sql3);
if ($result3->num_rows > 0) {
while($row3 = $result3->fetch_assoc()) {
$discount = $row3['discount'];
$total1 = $discount;
$total2 = $pay - $total1;
$sql = "UPDATE userpaytoget SET payamount = '$total2'
WHERE mobile = '$mobile'";
if ($conn->query($sql) === TRUE) {
echo '<script language="javascript">';
echo 'alert("PromoCode Applied")';
echo '</script>';
echo '<a href="user-profile.php"></a>';
}
else {
echo "ERROR" . $sql . "<br>" . $conn->error;
}
}
}
else {
echo "ERROR" . $sql3 . "<br>" . $conn->error;
}
$conn->close();
?>
在这里,我获得了payamount和promocode表单用户,而我将使用db检查promocode并相应地获得折扣...
现在,我对用户没有任何限制,他只能使用一次.. 任何帮助表示赞赏...
答案 0 :(得分:0)
这可能更像是设计问题,而不是代码问题。您必须考虑规则“promocode只能由用户使用一次”是否适用于每个promocode和每个用户。如果是,那么:
apromocode
表中定义的promocode已经是UNIQUE KEY
,如果不是PRIMARY KEY
,并且mobile
等同于某个user_id
就识别a而言独特的用户关注。userpaytoget
表格中,制作UNIQUE KEY
和mobile
的复合code
。这样可以确保promocode
只能使用mobile
一次。 现在,这不一定能确保用户收到错误消息(因为INSERT
或UPDATE
操作只会因抛出DUPLICATE KEY
错误而失败。因此,为了能够将其转发给用户,您可以:
mobile
和code
的计数。如果它大于0,请向用户提供自定义错误消息。
如果您决定某些promocodes可以多次使用,则需要稍微不同的逻辑和错误处理机制。在那种情况下,
max_usage_count
中添加新列,例如apromocode
。 UNIQUE KEY
中定义的复合userpaytoget
。不过,您仍然可以在COUNT
/ mobile
之前检查promocode
和INSERT
的{{1}},并将其与UPDATE
进行比较,然后相应地决定是否max_usage_count
或不允许操作。希望有所帮助。