Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подмена IP адреса в скрипте
 
 автор: nightcat   (22.12.2006 в 18:37)   письмо автору
 
 

Есть webserver, который работает на компьютере в локальной сети, но при обращении на этот компьютер из Iternet (через NAT) запускается скрипт, в котором передается внутрений IP адрес и порт (типа 192.168.0.9), соответственно ничего не работает. Есть ли возможность доработать этот скрипт таким образом, что при обращении с локальной сети (диапазон IP 192.168.0.XXX) передавался бы внутренний IP (192.168.0.9), а при обращении из Internet подставлялся бы внешний адрес роутера (62.XX.XX.XX)? Сам я в PHP совсем ни как, разве что нашел почему не работает запрос. А вот кусочек оригинального скрипта:

$CAMS=array();
for ($i=0;$i<$wins_nr;$i++)
{
$tmp=array();
if (empty($cams[$i])) {
$tmp['set']=0;
} else {
if (!preg_match("/^cam (\d*) on (\d*\.\d*\.\d*\.\d*):(\d+) \[(\d+)x(\d+)\]/i",
$cams[$i], $matches) )
MYDIE("preg_match($cams[$i]) failed",__FILE__,__LINE__);
$cam_nr = $matches[1];settype($cam_nr,'int');
$_sip = $matches[2];
$w_port = $matches[3];settype($w_port,'int');
$_ww=$matches[4]; settype($_ww,'int');
$_wh=$matches[5]; settype($_wh,'int');
$tmp['set']=1;
$tmp['cam_nr']=$cam_nr;
$tmp['ip']=$_sip;
$tmp['port']=$w_port;
$tmp['orig_w']=$_ww;
$tmp['orig_h']=$_wh;
}
$tmpstr=implode('=',$tmp);
print 'WINS['.$i.']="'.$tmpstr.'";'."\n";
$CAMS[$i] = $tmp;
}

$cnames_nr = count($camnames);
if ($cnames_nr>0) {
print 'var CNAMES = new MakeArray('.$cnames_nr.')'."\n";
for ($i=0;$i<$cnames_nr;$i++)
print 'CNAMES['.$i.']="'.$camnames[$i].'";'."\n";
}

   
 
 автор: cheops   (23.12.2006 в 12:55)   письмо автору
 
   для: nightcat   (22.12.2006 в 18:37)
 

>котором передается внутрений IP адрес и порт (типа 192.168.0.9), соответственно ничего не
>работает.
Передаётся куда?

   
 
 автор: NightCat   (23.12.2006 в 13:17)   письмо автору
 
   для: cheops   (23.12.2006 в 12:55)
 

Передает похоже в этом кусочке:

var help_win=null;

var win_info;
var cam_nr;
var ip;
var port;
var orig_w;
var orig_h;
var url;

function parse_win_info(wininfo) {
win_info = wininfo.split('=');
cam_nr = parseInt(win_info[1]);
ip = win_info[2];
port = parseInt(win_info[3]);
orig_w = parseInt(win_info[4]);
orig_h = parseInt(win_info[5]);

url = 'http://'+ip+':'+ port;
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования