【发布时间】:2016-11-05 09:29:46
【问题描述】:
所以我想要的是我希望它检查这个人是否已经使用过代码,如果已经使用过,那么它应该死掉,否则从$_POST['code']设置数据并锁定它,所以它可以' t 又变了——(但只能通过删除数据库中的数据)
数据库名称 = 用户
在用户中,我有一个带有 code_used 的结构设置
<?php
session_start();
include ('assets/includes/include.php');
if(isset($_POST['code'])) {
$SQLCheckExistens = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `code_used` = :code");
$SQLCheckExistens -> execute(array(':code' => $_POST['code']));
$countCodes = $SQLCheckExistens -> fetchColumn(0);
if($countCodes = 0) {
$SQLRedeemCode = $odb -> prepare("UPDATE `users` SET `code_used` = :code WHERE `steamid` = :SteamID");
$SQLRedeemCode -> execute(array(':code' => $_POST['code'], ':SteamID' => $_SESSION['steamid']));
die('Saved successfully!');
} else {
die('Error. You have already redeemed a code.');
}
} else {
die();
}
?>
这里是ajax
<script>
function SetCode() {
var code = document.getElementById('code').value;
$.ajax( {
type: 'post',
url: 'redeem.php',
data: "code=" + code,
success: function(response) {
console.log(response);
document.getElementById('data_response').innerHTML = response;
}
});
}
这里是函数
function getCode($UserID, $odb)
{
$SQLUserInfo = $odb -> prepare("SELECT * FROM `users` WHERE `steamid` = :SteamID");
$SQLUserInfo -> execute(array(':SteamID' => $UserID));
$UserInfo = $SQLUserInfo->fetch(PDO::FETCH_ASSOC);
return $UserInfo['code_used'];
}
【问题讨论】:
-
那么,问题出在哪里?
-
它不会让我只输入一次,因为您可以通过更改文本框中的代码来编辑它。打完代码后就不能用别人了,这样问。我不知道如何创建它。
-
什么错误或什么阻碍了你实现这一目标?
-
我不知道,它不会告诉我,因为它只是更新我数据库中的数据。所以我声明了代码:1234 - 它接受并将其写入我的数据库。但是当我返回该站点时,我尝试输入 4534,然后它只是将 1234 替换为 4534,这应该是不可能的,因为它应该只能申请一次。