- Проблем с (int) при GET
WT форуми -> PHP MySQL ASP.NET -> Проблем с (int) при GET
Създайте нова тема Напишете отговор 
Автор Съобщение
Pro_Lamer4e
Нов
Нов

Регистриран на: 26/10/2009 7:10 am

Support: 2
Bonus: 4
Мнения: 187
Мнение 03/09/2018 2:05 pm     Проблем с (int) при GET Отговорете с цитат


здравейте колеги, имам проблем с (int) при гет стойностите, когато сложа (int) не ми позволява да се направа собственик на даденият сървър
линка изглежда по този начин
PHP code:
process.php?task=owner&ip=1111.1111.111.111&port=27015

опитах даже с htaccess да го промена на
/process/owner/ip:port , но и това не се получи

PHP code:
RewriteRule ^process/owner/(.*)$ process.php?task=owner&server_ip=$1&server_port=$1


PHP code:
headcs("");
if (isset($_GET['task']) && $_GET['task'] == "owner") {

$ip=$_GET['ip']; // тук като сложа (int) и не минава
$port =$_GET['port']; // тук като сложа (int) и не минава
$vreme = time();

$info = mysql_fetch_array(mysql_query("SELECT * FROM servers WHERE server_ip='$ip' AND server_port='$port'"));



if($user['id'] == ""){
echo "ne ste lognat";
header("location:/index.php");
die();
}

if($info['ip'] && $info['port'] == ""){
echo "eror";
header("location:/all_servers.php");
die();
}

$server_id = $info['server_id'];
$game = $info['server_game'];

require_once('include/q.php');


if($info['server_name'] == "claim"){
mysql_query("UPDATE servers SET owner='$user[username]',owner_id='$user[id]' WHERE server_id='$server_id'");
echo "$site_lang[serverclaimsuc]";
} else {
echo"$site_lang[serverclaim]";

}

}
footcs("right");?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 03/09/2018 3:20 pm      Отговорете с цитат


Защото int() прехвърля стойностите в цяло число.

PHP code:

$var = '1a';
echo (int) $var; // връща 1
$var2 = 'a2';
echo (int) $var2; // връща 0
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
raiden
Активен
Активен

Регистриран на: 08/12/2006 10:13 am

Support: 188
Bonus: 462
Мнения: 2170
Мнение 03/09/2018 7:26 pm     Re: Проблем с (int) при GET Отговорете с цитат


А като не сложиш int и мине какво има в променливите?
IP адресът не е тип int. Попринцип може да се обърне, но по-добре го матчвай с регекс. Освен това Rewrite rule-а ти подава целия стринг ip:port и към двата параметъра.

Опитай с този rule:
RewriteRule ^process/owner/((?:(?:[12]?\d?\d\.){3}[12]?\d?\d))/(\d+)$ process.php?task=owner&server_ip=$1&server_port=$2

Не е перфектен, ще пусне адреси като 00.00.0.01, 299.267.00.00, но формата винаги ще ти е коректен
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Pro_Lamer4e
Нов
Нов

Регистриран на: 26/10/2009 7:10 am

Support: 2
Bonus: 4
Мнения: 187
Мнение 04/09/2018 8:25 am      Отговорете с цитат


така пак не стана, иначе по IP и port търся даденият сървър после от него вада името и ид-то му , и според тях обратно въвеждам данни базата за собственик на сървъра,
  $ip = preg_replace("/[^0-9.]+/", "", $_GET['ip']);
  $port = preg_replace("/[^0-9.]+/", "", $_GET['port']);

така уж е добре, до колкото съм запознат
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
raiden
Активен
Активен

Регистриран на: 08/12/2006 10:13 am

Support: 188
Bonus: 462
Мнения: 2170
Мнение 05/09/2018 12:39 am      Отговорете с цитат


Да, това което си дал ще маха всичко освен числа и точки, в порта даже можеш да махнеш и точките
А Rule-а е за process/owner/ip/port сигурно за това не е станало
Ако все пак искаш да ползваш process/owner/ip:port с твоето филтриране в кода можеш да го опростиш
RewriteRule ^process/owner/([^:]+):(.+)$ process.php?task=owner&server_ip=$1&server_port=$2
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Pro_Lamer4e
Нов
Нов

Регистриран на: 26/10/2009 7:10 am

Support: 2
Bonus: 4
Мнения: 187
Мнение 12/09/2018 10:44 am      Отговорете с цитат


Благодаря, всичко работи вече
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети