У меня и очень странная проблема. Моя страница ниже.
в строке 11 я в основном включаю мою библиотеку xajax и мои функции php, когда пользователь существует через if ($ row_cnt == ‘1’).
Теперь весь код работает отлично (когда я удаляю оператор if), но, похоже, он не включает мой файл xajax.inc.php, когда он находится в операторе IF.
Когда я закрываю свой оператор IF после объявления $ test и удаляю оператор else, код работает на 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. Но вот, когда я удаляю, наступает самый важный момент:
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 до строки, упомянутой выше, чтобы он Работа. Проблема все еще в том, что я не могу использовать этот код, это не очень хорошая безопасность, страница может быть остановлена до выхода (); команда, поэтому мне нужно, чтобы include был внутри оператора IF.
Таким образом, реальный вопрос заключается в том, почему клиентский сервер ведет себя так: это должен быть параметр php в INI-файле, но один из них — ответ на миллион долларов.
Ниже приведен измененный код с оператором 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>
Задача ещё не решена.
Других решений пока нет …