我有非常奇怪的问题。我的页面如下。 在第11行,当用户通过if($ row_cnt =='1')存在时,我基本上包括我的xajax库和我的php函数。
现在所有的代码都能完美运行(当我删除if语句时),但是当它在IF语句中时它不包括我的xajax.inc.php文件。
当我在声明$ test并删除else语句后关闭我的IF语句时,代码100%工作,它甚至将$ test值正确传递给我的函数,所以我知道我的IF语句是真的。
确切的代码在我自己的3台服务器上运行完美,但无法让它在我的客户端服务器上运行。所以我只能认为它必须是这样做的某种服务器设置,但不知道它可能是什么设置。
<?php
$config = parse_ini_file('config/config.ini');
$mysqli = mysqli_connect($config['server'],$config['username'],$config['password'],$config['dbname'],3306);
$_login_password = mysqli_real_escape_string($mysqli, $_POST['login_password']);
$sql = "SELECT
a.`id`, a.`name`, a.`surname`, `username`, `password`, `user_level`
FROM `comp_mfm_users` AS a
WHERE (a.`username`='$_POST[login_username]' AND a.`password`='$_login_password') LIMIT 1";
$result = $mysqli->query($sql);
$row_cnt = $result->num_rows;
if($row_cnt == '1'){
$test = "IN";
include_once("xajax/xajax_core/xajax.inc.php");
$xajax = new xajax();
// Included Functions
require_once("functions/test.php");
// Request
$xajax->processRequest();
}
else{
$test = "OUT";
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<?php $xajax->printJavascript('xajax/'); ?>
</head>
<body>
<script type="text/javascript">
var clicks = 0;
function onClick() {
var php = "<?php echo "$test" ?>";
clicks += 1;
xajax_test(clicks,php);
};
</script>
<div id="mainContent"><?php echo "$test" ?></div>
<input type="button" value="click Here" onclick="onClick();">
</body>
</html>
我正在调用的函数:
<?php
$xajax->registerFunction("test");
function test($in,$in2){
$content = <<<EOF_
Teast Page : $in : $in2
EOF_;
$objResponse = new xajaxResponse();
$objResponse->assign("mainContent","innerHTML", $content);
return $objResponse;
}
?>
好的,这完全打败了我。我尝试了不同的方法并跳过IF语句来加载包含。 Xajax仍未执行。 php代码正常工作,当用户名和密码正确时它正在加载页面,当它不再那样在php代码中没有错误时它会退出。但是当我删除时,会出现starnge部分:
if($stmt->num_rows !== 1){
echo "You are logged out";
exit();
}
一切都很好,除了没有用户验证外,一切正常。所以我更进一步,移动了:
if($stmt->num_rows !== 1){
echo "You are logged out";
exit();
}
线下/后线:
// Request
$xajax->processRequest();
所有人都在100%工作。这根本没有意义!我拿了确切的代码并在我的测试服务器上运行它并且它正在使用下面的代码100%工作,但当我把它放在客户端服务器上时,我必须将IF语句向下移动到上面提到的线路工作。问题仍然是我不能使用这个代码,它的安全性不是很好,页面可以在exit()之前停止;命令所以我需要包含在IF语句中。
所以真正的问题是为什么客户端服务器的行为是这样的,它必须是.ini文件中的php设置,但是一个是百万美元的答案。
下面是带有IF语句的更改代码是否仍然高于包含它在客户端服务器上不起作用但它在我的测试服务器上工作的地方。
<?php
$config = parse_ini_file('config/config.ini');
$mysqli = mysqli_connect($config['server'],$config['username'],$config['password'],$config['dbname'],3306);
$_login_password = mysqli_real_escape_string($mysqli, $_POST['login_password']);
$stmt = $mysqli->prepare("
SELECT
a.`id`, a.`name`, a.`surname`, `user_level`
FROM `comp_mfm_users` AS a
WHERE a.`username`=? AND a.`password`=? LIMIT 1
");
$stmt->bind_param('ss', $_POST[login_username], $_login_password);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($myrow[id], $myrow[name], $myrow[surname], $myrow[user_level]);
$stmt->fetch();
if($stmt->num_rows !== 1){
echo "You are logged out";
exit();
}
include_once("xajax/xajax_core/xajax.inc.php");
$xajax = new xajax();
// Included Functions
require_once("functions/test.php");
// Request
$xajax->processRequest();
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<?php $xajax->printJavascript('xajax/'); ?>
</head>
<body>
<script type="text/javascript">
var clicks = 0;
function onClick() {
var php = "in";
clicks += 1;
xajax_testpp(clicks,php);
};
</script>
<?php
$dis = <<<EOF_
<div id="mainContent">$myrow[surname]</div>
<input type="button" value="click Here" style="cursor:pointer" onclick="onClick();">
EOF_;
echo"$dis";
?>
</body>
</html>