Привет Я пытаюсь вызвать функцию php при нажатии кнопки, но я продолжаю получать ошибку в заголовке.Переменная не определена, даже если она есть?
Я вызываю функцию, как так:
echo("<th><input type='button' name = 'Attack_Btn' onclick = 'FightPlayer(".$row['username'].")' value ='Attack'></th>");
просто сказать имя пользователя, что он получает от $ строки [ 'пользователь ... это Джеймс ошибка будет отображаться
index.php: 1 Неперехваченные ReferenceError: casualjames не определен
Это код, который он вызывает следующий
function FightPlayer(enemyName){
var xhttpe;
if (window.XMLHttpRequest) {
xhttpe = new XMLHttpRequest();
} else {
xhttpe = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttpe.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
BattlePlayers();
}
};
xhttpe.open("GET", "FightPlayer.php?enemyname="+enemyName, true);
xhttpe.send();
}
и затем вызывает мой скрипт переходящий в переменной enemyname
для того, чтобы использовать
<?php
session_start();
include 'Training.php';
$link = mysqli_connect("","","","");
if (isset($_SESSION['username'])) {
$enemyname = $_REQUEST["enemyname"];
echo $enemyname;
$energyRemove = 1;
$ExperienceGain = 1;
$sql = "SELECT * FROM userstats WHERE username = '$enemyname'";
$result = mysqli_query($link,$sql);
$row = mysqli_fetch_assoc($result);
$Defence = $row["Defence"];
$winChance = CalculateWinChance($link,$Defence);
$sql = "SELECT Energy FROM userstats WHERE username = '".$_SESSION['username']."'";
$result = mysqli_query($link,$sql);
$row = mysqli_fetch_assoc($result);
$rand = rand (1 , 100);
if($row["Energy"] < 1){
echo "<script type='text/javascript'>alert('Not enough energy to fight. please restore in character page');</script>";
}else{
if($rand < $winChance){
$_SESSION['Battlemessage'] = "you won against ".$enemyname;
$sql = "UPDATE userstats SET `Energy` = `Energy` - '$energyRemove' WHERE username = '".$_SESSION['username']."'";
mysqli_query($link,$sql);
$sql = "UPDATE userstats SET `Experience` = `Experience` + '$ExperienceGain' WHERE username = '".$_SESSION['username']."'";
mysqli_query($link,$sql);
$sql = "UPDATE userstats SET `Satoshi` = `Satoshi` + 2 WHERE username = '".$_SESSION['username']."'";
mysqli_query($link,$sql);
}else{
$_SESSION['Battlemessage'] = "you lost against ".$enemyname;
$sql = "UPDATE userstats SET `Energy` = `Energy` - '$energyRemove' WHERE username = '".$_SESSION['username']."'";
mysqli_query($link,$sql);
$sql = "UPDATE userstats SET `Satoshi` = `Satoshi` + 1 WHERE username = '".$enemyname."'";
mysqli_query($link,$sql);
}
echo "";
}
calculateLevel($link);
}
?>
Я не уверен, где ошибка на самом деле происходит, я кладу скрипты через интернет-код шашки и все это возвращает нормальное , Где я здесь не так?
на стороне записки - Этот код все настройки для «Stored XSS атак» вы получили не дезинфицировать вход впрыскивается в базу данных, а затем вы его получили ($ enemyname) выводится другим пользователям без экранирования. – ArtisticPhoenix
@ArtisticPhoenix О, я был под впечатлением, что вам нужно было только для ввода полей? – GregHBushnell
Лучше всегда это делать, особенно когда вы сохраняете вещи в сеансе, вы можете случайно ввести ввод в параметр, который, хотя бы был бы безопасен, когда вы написали этот код. Также лучше использовать htmlentities для всего, что вы выводите в браузер (это не должно содержать html), который может интерпретировать встроенный javascript. Идея состоит в том, чтобы защитить ее прямо в том месте, где она потерпит неудачу. Таким образом, запросы, непосредственно перед вставкой, обновлением, выбором и т. Д. И выводом непосредственно перед его выходом. Тогда вы не будете волноваться последним, если вы измените какой-то код, который влияет на него. – ArtisticPhoenix