我试图通过输入代码短信来创建一个可以添加自己的目录。输入正确的代码短信后,它会检查数据库中是否存在代码,然后从数据库中删除输入的代码并从表单中添加数据。现在我遇到了一个问题,因为当给定的代码不正确时,我不知道如何防止将数据添加到数据库中。 目前,它看起来像这样:
if ($sum != $val1+$val2) { //simple captcha
echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
}
else {
if ($_POST['code']){
$code=$_POST['code'];
global $wpdb;
$sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);
$check_code = $wpdb->get_results($sql);
if ($check_code>0) {
$wpdb->delete( 'code_sms', array( 'code' => $code ) );
if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
$company_nip = strip_tags($_POST["company_nip"], "");
$company_name = strip_tags($_POST["company_name"], "");
$result = $wpdb->insert(
'test',
array(
'company_nip' => $company_nip, 'company_name' => $company_name)
);
if (!$result) {
echo '<div>
ERROR</div>';
}
else {
echo '<div>
Succes</div>';
}
}
}
}
}
修改 我编辑了我的代码,就像@thephatp说的那样,它现在正在工作:)
答案 0 :(得分:0)
您必须在if
条件中包含将数据添加到数据库中的代码,其中已验证短信代码为真{ - 1}} - 只需在代码短信删除后立即附加。
if ($check_code>0) {
答案 1 :(得分:0)
if ($sum != $val1+$val2) { //simple captcha
echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
}
else {
if ($_POST['code']){
$code=$_POST['code'];
global $wpdb;
$sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);
$check_code = $wpdb->get_results($sql);
if ($check_code>0) {
$wpdb->delete( 'code_sms', array( 'code' => $code ) );
if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
$company_nip = strip_tags($_POST["company_nip"], "");
$company_name = strip_tags($_POST["company_name"], "");
$result = $wpdb->insert(
'test',
array(
'company_nip' => $company_nip, 'company_name' => $company_name)
);
if (!$result) {
echo '<div>
ERROR</div>';
}
else {
echo '<div>
Succes</div>';
}
}
}
}
else
{
echo '<div>
ERROR WRONG CODE</div>';
}
}
答案 2 :(得分:0)
您基本上是在检查“数据库中是否存在sms_code”,然后“删除代码;插入表单数据。”
但是,您正在关闭if语句之前以添加表单数据。移动关闭if语句的}
,如下所示。这样,如果sms_code不正确,则不处理表单数据if if statement&amp;插入
此外,您的$check_code
变量不是行数,而是结果集。如果查询导致错误,则此结果集仅为FALSE
。
请在此处查看get_result的文档:
mysqli_stmt_get_result
返回成功SELECT查询的结果集,或其他的FALSE DML查询或失败。 mysqli_errno()函数可用于 区分两种类型的失败。
您需要检查行数的结果集,并在if语句中对其进行测试。以下代码已更新。
if ($sum != $val1+$val2) { //simple captcha
echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
}
else {
if ($_POST['code']){
$code=$_POST['code'];
global $wpdb;
$sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);
$result = $wpdb->get_results($sql);
/* Get the number of rows */
$num_of_rows = $result->num_rows;
if ($num_of_rows>0) {
$wpdb->delete( 'code_sms', array( 'code' => $code ) );
if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
$company_nip = strip_tags($_POST["company_nip"], "");
$company_name = strip_tags($_POST["company_name"], "");
$result = $wpdb->insert(
'test',
array(
'company_nip' => $company_nip, 'company_name' => $company_name)
);
if (!$result) {
echo '<div>
ERROR</div>';
}
else {
echo '<div>
Succes</div>';
}
}
}