Php 找不到if/else函数的确切值
我有这段代码,试图将Php 找不到if/else函数的确切值,php,mysql,Php,Mysql,我有这段代码,试图将$bonval放入mysql插入函数,但它返回null。我做错了什么 <?php if (!isset($_SESSION['views'])) { $_SESSION['views'] = 0; } $_SESSION['views'] = $_SESSION['views']+1; $first = mt_rand(10,20); $second = mt_rand(40,50); $third = mt_rand(60,70); if ($_SE
$bonval
放入mysql插入函数,但它返回null
。我做错了什么
<?php
if (!isset($_SESSION['views'])) {
$_SESSION['views'] = 0;
}
$_SESSION['views'] = $_SESSION['views']+1;
$first = mt_rand(10,20);
$second = mt_rand(40,50);
$third = mt_rand(60,70);
if ($_SESSION['views'] == 2 or ($_SESSION['views'] == 5) or ($_SESSION['views'] == 10) or ($_SESSION['views'] == 20) or ($_SESSION['views'] == 50)) {
?>
<div class="popup">
<form role="form" method='post' action='test.php'>
<fieldset>
<h2 class="blink_me" style="color:green;font-size:40px;"><?php if ($_SESSION['views'] == 2) { echo $bonval = $first; } elseif ($_SESSION['views'] == 5) { echo $bonval = $third; } elseif ($_SESSION['views'] == 10) { echo $bonval = $second; } elseif ($_SESSION['views'] == 20) { echo $bonval = $second; } elseif ($_SESSION['views'] == 50) { echo $bonval = $first; } ?></h2>
<div class="form-group">
<center><div class="g-recaptcha" data-sitekey="sitekey"></div></center>
</div>
<div class="row">
<center><input type="submit" name="submit" class="btn btn-lg btn-success btn-block" value="Submit"></center>
</div>
</fieldset>
</form>
</div>
<?php
}
if (isset($_POST['submit'])) {
if(!empty($recaptcha)) {
require("getCurlData.php");
$google_url="https://www.google.com/recaptcha/api/siteverify";
$secret='6LdriBAUAAAAAFTwQuLozpK9V2qsZAA5gTtBV60G';
$ip=$_SERVER['REMOTE_ADDR'];
$url=$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
$resp=getCurlData($url);
if($resp['success']) {
$db->fetchVal("insert into log (`user_id`,`amount`) values (?,?) ", [$id, $bonval]); }
} else {
$_SESSION['views'] = $_SESSION['views']-1;
}
}
}
?>
我得到这个错误:
插入日志(`user_id`、`amount`)值(?,)数组([0]=>9[1]=>)数组([0]=>23000[1]=>1048[2]=>列“amount”不能为空)数组([0]=>Array([file]=>
这段代码有什么问题,或者可能有更好的方法可以做到这一点?以下是一些可以尝试的方法。创建一些函数来消除脚本中的混乱,并在表单中提交所需的变量或将其分配给
$\u SESSION
function hasView()
{
# Use an array instead of a bunch of OR
$filter = array(2,5,10,20,50);
return (in_array($_SESSION['views'],$filter));
}
# Create a switch here, but you may want a default otherwise it will be null
# if none of the conditions are met
function getBonVal($first,$second,$third)
{
switch($_SESSION['views']) {
case(2):
return $first;
case(5):
return $third;
case(10):
return $second;
case(20):
return $second;
case(50):
return $first;
}
}
# Create a cURL function, no reason not to to keep this contained
function getGoogleRecaptcha($secret = 'key-here')
{
require_once("getCurlData.php");
$google_url = "https://www.google.com/recaptcha/api/siteverify";
$ip = $_SERVER['REMOTE_ADDR'];
$url = $google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
return getCurlData($url);
}
if(!isset($_SESSION['views']))
$_SESSION['views'] = 0;
# This will increment by 1
$_SESSION['views']++;
# If you don't need these anywhere else in the page,
# maybe put them into the function
$first = mt_rand(10,20);
$second = mt_rand(40,50);
$third = mt_rand(60,70);
# Use the function instead of all the OR clauses
if (hasView()) {
# Get the value here instead of in the middle of the html
$bonval = getBonVal($first,$second,$third);
# Set value to session
$_SESSION['bonval'] = $bonval;
?>
<div class="popup">
<form role="form" method='post' action='test.php'>
<fieldset>
<h2 class="blink_me" style="color:green;font-size:40px;"><?php echo $bonval ?></h2>
<div class="form-group">
<center>
<div class="g-recaptcha" data-sitekey="sitekey"></div>
</center>
</div>
<div class="row">
<center>
<input type="submit" name="submit" class="btn btn-lg btn-success btn-block" value="Submit">
</center>
</div>
</fieldset>
</form>
</div>
<?php
}
if(isset($_POST['submit'])) {
if(!empty($recaptcha)) {
# Use the recaptcha function here
$resp = getGoogleRecaptcha();
if($resp['success']) {
# Capture value from session
$bonval = $_SESSION['bonval'];
# Insert normally
$db->fetchVal("insert into log (`user_id`,`amount`) values (?,?)", array($id, $bonval));
}
}
else {
# This will auto-decrease by 1
$_SESSION['views']--;
}
}
函数hasView()
{
#使用数组而不是一堆或
$filter=数组(2,5,10,20,50);
返回(在数组($会话['views',$filter]中);
}
#在这里创建一个开关,但您可能需要一个默认值,否则它将为null
#如果不满足任何条件
函数getBonVal($first、$second、$third)
{
开关($\u会话['views']){
案例(2):
先返回$first;
案例(5):
返回三分之一美元;
案例(10):
返回$second;
案件(20):
返回$second;
案件(50):
先返回$first;
}
}
#创建一个cURL函数,没有理由不包含它
函数getGoogleRecaptcha($secret='key here')
{
需要_once(“getCurlData.php”);
$google_url=”https://www.google.com/recaptcha/api/siteverify";
$ip=$\u服务器['REMOTE\u ADDR'];
$url=$google_url.?secret=“.$secret.”响应=“.$recaptcha.”远程ip=“.$ip;
返回getCurlData($url);
}
如果(!isset($\u会话['views']))
$\u会话['views']=0;
#这将增加1
$_会话['views']++;
#如果你在页面的其他地方不需要这些,
#也许可以把它们放到函数中
$first=百万兰特(10,20);
$second=百万兰特(40,50);
三分之一=百万兰特(60,70);
#使用函数而不是所有OR子句
如果(hasView()){
在这里获得值,而不是在HTML的中间
$bonval=getBonVal($first,$second,$third);
#将值设置为会话
$\会话['bonval']=$bonval;
?>
$_SESSION['views']的值是多少?我还建议从代码中删除您的密钥。感谢密钥建议…我不理解您所说的$SESSION['views']的值是什么意思?似乎bonval并不总是被设置的-因此它经常是“null”,因为$SESSIONS['views'的许多值都是统一的$bonval只在弹出窗口打开时才需要,不是每次都需要。您是否单击某个东西打开弹出窗口,然后从弹出窗口提交表单?无法阻止用户通过页面刷新重新提交表单…如果您需要任何帮助,我可以查看它,但如果没有看到它并进行第一手测试,我真的无法排除故障。。