Зачистки из текстового поля

Здравствуйте, я использовал поиск, прежде чем отправлять это.

Я новичок в php / mysql, делаю ооочень много чтения. смогли сделать игру, в которую играют несколько друзей. это как игра PvP.

Во всяком случае, один из людей, играющих, нашел способ сбить с толку покупку и продажу юнитов, поставив. перед значением. у меня есть функция защиты для удаления незаконных символов

function protect($string) {
return mysql_real_escape_string(strip_tags(addslashes($string)));
}

это работает для других персонажей, но не с. Я не прошу, чтобы кто-то сделал это для меня, просто хотел, чтобы меня указали в правильном направлении.

но просто кто-то спрашивает здесь код, который я использую

if(isset($_POST['buy'])){
$sword = protect($_POST['sword']);
$shield = protect($_POST['shield']);
$gold_needed = (10 * $sword) + (10 * $shield);

if($sword < 0 || $shield < 0){
output("You must buy a positive number of weapons!");
}elseif($stats['gold'] < $gold_needed){
output("You do not have enough gold!");
}else{
$weapon['sword'] += $sword;
$weapon['shield'] += $shield;

$update_weapons = mysql_query("UPDATE `weapon` SET
`sword`='".$weapon['sword']."',
`shield`='".$weapon['shield']."'
WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
$stats['gold'] -= $gold_needed;
$update_gold = mysql_query("UPDATE `stats` SET `gold`='".$stats['gold']."'
WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
include("update_stats.php");
output("You have bought weapons!");
}

Если бы кто-нибудь мог дать мне руку, я был бы очень признателен

я нашел что-то «строковые функции, substr replace и str replace»

но я могу использовать две функции в 1 запросе? извините, я новичок

РЕДАКТИРОВАТЬ***

Вот запрос, размещенный в update_stats

$update_stats = mysql_query("UPDATE `stats` SET
`income`='".$income."',`farming`='".$farming."',
`attack`='".$attack."',`defense`='".$defense."'
WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());

0

Решение

один из играющих людей нашел способ сбить с толку покупку и продажу юнитов, поставив a. перед значением

Ну, вы точно не раскрыли, в чем именно заключается уязвимость, но я рискну догадаться, что при вводе десятичного значения они влияют на вашу цену / математику? Итак, ряд возможностей, я должен подумать?

if (substr($string, 0, 1) == ".") {
//return false, warn, etc.
}

Это может пойти в вашей функции «защиты».

Аналогично, вы можете использовать intval () или даже is_numeric () … здесь я просто добавляю его в присваивание:

$sword = protect(intval($_POST['sword']));

Вы также можете играть с регулярным выражением. Я предполагаю, что $ value будет числовым? Сколько цифр макс? Я использовал 5:

if (preg_match("%\.\d{1,5}%", $sword)) { //this guy's playing w/us
die("Go away, bad hax0rz! :-P");
}
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]