Перейти к содержимому

Фотография

PHPвопросы по PHP


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 411

#81
San_k

San_k
  • В доску свой
  • 1 509 сообщений
вопрос:
как реализовать ping на php?

ну или хотя бы проверить жив ли хост или нет.
  • 0

#82
Pranksterus

Pranksterus
  • Гость
  • 39 сообщений

вопрос:
как реализовать ping на php?

ну или хотя бы проверить жив ли хост или нет.

в php для этого есть целый класс.

<?php 

class Net_Ping 
{ 
  var $icmp_socket; 
  var $request; 
  var $request_len; 
  var $reply; 
  var $errstr; 
  var $time; 
  var $timer_start_time; 
  function Net_Ping() 
  { 
   $this->icmp_socket = socket_create(AF_INET, SOCK_RAW, 1); 
   socket_set_block($this->icmp_socket); 
  } 
   
  function ip_checksum($data) 
  { 
	 for($i=0;$i<strlen($data);$i += 2) 
	 { 
		 if($data[$i+1]) $bits = unpack('n*',$data[$i].$data[$i+1]); 
		 else $bits = unpack('C*',$data[$i]); 
		 $sum += $bits[1]; 
	 } 
	  
	 while ($sum>>16) $sum = ($sum & 0xffff) + ($sum >> 16); 
	 $checksum = pack('n1',~$sum); 
	 return $checksum; 
  } 

  function start_time() 
  { 
   $this->timer_start_time = microtime(); 
  } 
   
  function get_time($acc=2) 
  { 
   // format start time 
   $start_time = explode (" ", $this->timer_start_time); 
   $start_time = $start_time[1] + $start_time[0]; 
   // get and format end time 
   $end_time = explode (" ", microtime()); 
   $end_time = $end_time[1] + $end_time[0]; 
   return number_format ($end_time - $start_time, $acc); 
  } 

  function Build_Packet() 
  { 
   $data = "abcdefghijklmnopqrstuvwabcdefghi"; // the actual test data 
   $type = "\x08"; // 8 echo message; 0 echo reply message 
   $code = "\x00"; // always 0 for this program 
   $chksm = "\x00\x00"; // generate checksum for icmp request 
   $id = "\x00\x00"; // we will have to work with this later 
   $sqn = "\x00\x00"; // we will have to work with this later 

   // now we need to change the checksum to the real checksum 
   $chksm = $this->ip_checksum($type.$code.$chksm.$id.$sqn.$data); 

   // now lets build the actual icmp packet 
   $this->request = $type.$code.$chksm.$id.$sqn.$data; 
   $this->request_len = strlen($this->request); 
  } 
   
  function Ping($dst_addr,$timeout=5,$percision=3) 
  { 
   // lets catch dumb people 
   if ((int)$timeout <= 0) $timeout=5; 
   if ((int)$percision <= 0) $percision=3; 
	
   // set the timeout 
   socket_set_option($this->icmp_socket, 
	 SOL_SOCKET,  // socket level 
	 SO_RCVTIMEO, // timeout option 
	 array( 
	   "sec"=>$timeout, // Timeout in seconds 
	   "usec"=>0  // I assume timeout in microseconds 
	   ) 
	 ); 

   if ($dst_addr) 
   { 
	 if (@socket_connect($this->icmp_socket, $dst_addr, NULL)) 
	 { 
	  
	 } else { 
	   $this->errstr = "Cannot connect to $dst_addr"; 
	   return FALSE; 
	 } 
	 $this->Build_Packet(); 
	 $this->start_time(); 
	 socket_write($this->icmp_socket, $this->request, $this->request_len); 
	 if (@socket_recv($this->icmp_socket, &$this->reply, 256, 0)) 
	 { 
	   $this->time = $this->get_time($percision); 
	   return $this->time; 
	 } else { 
	   $this->errstr = "Timed out"; 
	   return FALSE; 
	 } 
   } else { 
	 $this->errstr = "Destination address not specified"; 
	 return FALSE; 
   } 
  } 
} 

$ping = new Net_Ping; 
$ping->ping("www.google.ca"); 

if ($ping->time) 
  echo "Time: ".$ping->time; 
else 
  echo $ping->errstr; 

?>

а для проверки живости можешь просто попробовать коннект на нужный порт, будет проще
  • 0

#83
T. Anre

T. Anre

    Data Miner

  • В доску свой
  • 2 327 сообщений

Мне надо сравнить если переменная $page=пуста. т.е. ничему не равна, то надо привоить этой переменной 0. А ничерта не выходит.
когда делаешь эхо, то ничего не выводит.

Способ 1
switch(true){
case (isset($page) <> true):
$page = 0;
break;
case (empty($page) == true):
$page = 0;
break;
case (is_null($page) == true):
$page = 0;
break;
}
var_dump($page);

Способ 2
if (!$page) {
$page = 0;
} 
var_dump($page);

Сообщение отредактировал T. Anre: 19.02.2006, 04:53:09

  • 0

#84
УважухА

УважухА
  • Свой человек
  • 778 сообщений

Вы очень даже правы.
Оператор INSERT отвечает за вставку строк, а UPDATE за изменения.


Подскажите плз... с синтаксисом...
как это будет?
  • 0

#85
San_k

San_k
  • В доску свой
  • 1 509 сообщений
Pranksterus, спасибо!
да коннект на порт уже делал. не совсем устраивает

а вот при использовании данного класса, время каждого запроса всегда будет равно timeout?
  • 0

#86
Плюша

Плюша
  • Завсегдатай
  • 285 сообщений
2 UvazHai

Взято из "Краткое пособие по языку SQL", Автор неизвестен.
Оператор  INSERT.

может вставить в таблицу одну строку, если используется в форме
INSERT  INTO ... VALUES, а может вставить в таблицу целый набор
строк, выбранных подзапросом SELECT из другой таблицы.

INSERT INTO kadry VALUES (4,0,"Грицько",num,"10/25/1939",NULL)

INSERT INTO customer VALUES (ps_customer.*)
# ps_customer - переменная типа RECORD  -  аналог  структуры  в
# языке Си. Этот оператор вставляет значения элементов записи
# ps_customer в соответствующие поля таблицы customer

INSERT INTO kadry	  (tabnom,  fio,  nomerceh,  dolvnostx)
		 SELECT  0 , fio, 4, dolvnostx FROM kadryold
				 WHERE nomerceh=3 AND fio IS NOT NULL
#   последний оператор вставляет сразу несколько строк

Если мы хотим, чтобы при вставлении строки в столбец типа SERI-
AL  автоматически заносилось очередное значение счетчика, нужно
вставлять в этот столбец константу 0.
Если не во все столбцы  вставляемой  строки  вносится  значение
(как это сделано в третьем операторе), то незаполненные столбцы
заполняются значением NULL.

В  операторах DELETE, UPDATE, SELECT может присутствовать WHERE
предложение, в котором можно задать условия на строки,  которые
требуется  обработать  (соответственно уничтожить, изменить или
выбрать). Рассмотрим примеры использования WHERE предложения.


Оператор UPDATE.

меняет значения столбцов, в  строках, удовлетворяющим WHERE ус-
ловию.

UPDATE kadry SET fio="Зыкова" WHERE fio="Гирусова"

UPDATE ceh SET kod_ceha[1,4]=nameceh[5,8]	WHERE
 nomerceh BETWEEN 3 AND 5 OR nameceh IN ("токарный","литейный")

В  таблице ceh в цехах номер 3,4,5 а так же в токарном и литей-
ном  первые четыре символа в коде цеха будут заменены на подст-
року поля nameceh из той же строки.

  • 0

#87
PRO1rock1

PRO1rock1

    Специальный прохожий

  • В доску свой
  • 2 273 сообщений

$page == null или empty($page)
а вообще лучше бы весь код глянуть.
мне почему то кажется что возможно из за register_globals

Спасибо. Так оно и оказалось... :) А столько геморроя я хапнул из-за этого на выходных :D Ну да ладно. Хоть теперь узнал, и в предь надо запомнить. Теперь все отлично работает :D
  • 0

#88
freesea

freesea
  • Завсегдатай
  • 278 сообщений
Подскажите пожалуйста, " index.php?/news/22/ " как делается вообще? :lol:
*только без БД*

Сообщение отредактировал matlex: 22.02.2006, 19:07:36

  • 0

#89
kornel

kornel
  • В доску свой
  • 9 069 сообщений
Анализируется $_SERVER['QUERY_STRING']
  • 0

#90
T. Anre

T. Anre

    Data Miner

  • В доску свой
  • 2 327 сообщений

Подскажите пожалуйста, " index.php?/news/22/ " как делается вообще? :lol:
*только без БД*

Анализировать $_SERVER['QUERY_STRING'] или использовать php-folders, но лучше использовать Apache::mod_rewrite.

Сообщение отредактировал T. Anre: 22.02.2006, 23:32:47

  • 0

#91
freesea

freesea
  • Завсегдатай
  • 278 сообщений
Сказать по правде, в пхп я вообще-то не очень. Можете поподробнее рассказать про Query_String?
Сложно все это да?

В данный момент я сделал это таким образом: хттп://ццц.webscript.ru/stories/02/01/03/3584690
  • 0

#92
PRO1rock1

PRO1rock1

    Специальный прохожий

  • В доску свой
  • 2 273 сообщений
Знающие люди, помогите!
Вопрос: как загнать в базу данных значение поля checkbox. Мне надо вставлять либо 1 либо 0. Подскажите, а....
  • 0

#93
Sokrat-aka

Sokrat-aka
  • Гость
  • 18 сообщений

Знающие люди, помогите!
Вопрос: как загнать в базу данных значение поля checkbox. Мне надо вставлять либо 1 либо 0. Подскажите, а....

Можешь сделать так:
$cheсk=($_POST[имя_checkbox]!="")?(1):(0);
потом значение $check записывай в БД.

Сообщение отредактировал Sokrat-aka: 25.02.2006, 14:11:06

  • 0

#94
San_k

San_k
  • В доску свой
  • 1 509 сообщений
ищется скрипт, для отправления файлов на мыло...
кто нибудь помогите плиз...
  • 0

#95
T. Anre

T. Anre

    Data Miner

  • В доску свой
  • 2 327 сообщений

ищется скрипт, для отправления файлов на мыло...
кто нибудь помогите плиз...

http://pear.php.net/...14&catname=Mail
  • 0

#96
Dik2

Dik2
  • Завсегдатай
  • 148 сообщений
Помогите. Зделал скрипт который выводит счетчики из Интернета в Казнете. http://webdesign.forever.kz с низу уже стоит 2 счетчик. Вопрос как зделать чтоба считались "Хосты" и вообще как они считаются по каким пораметрам?
  • 0

#97
PRO1rock1

PRO1rock1

    Специальный прохожий

  • В доску свой
  • 2 273 сообщений


Знающие люди, помогите!
Вопрос: как загнать в базу данных значение поля checkbox. Мне надо вставлять либо 1 либо 0. Подскажите, а....

Можешь сделать так:
$cheсk=($_POST[имя_checkbox]!="")?(1):(0);
потом значение $check записывай в БД.

Спасибо! Премного благодарен :0)
  • 0

#98
San_k

San_k
  • В доску свой
  • 1 509 сообщений
я нашел php rapid get. спаисбо всем
  • 0

#99
PRO1rock1

PRO1rock1

    Специальный прохожий

  • В доску свой
  • 2 273 сообщений


Знающие люди, помогите!
Вопрос: как загнать в базу данных значение поля checkbox. Мне надо вставлять либо 1 либо 0. Подскажите, а....

Можешь сделать так:
$cheсk=($_POST[имя_checkbox]!="")?(1):(0);
потом значение $check записывай в БД.

что-то у меня не получается так. :rolleyes:
  • 0

#100
NETchik

NETchik
  • Завсегдатай
  • 225 сообщений



Знающие люди, помогите!
Вопрос: как загнать в базу данных значение поля checkbox. Мне надо вставлять либо 1 либо 0. Подскажите, а....

Можешь сделать так:
$cheсk=($_POST[имя_checkbox]!="")?(1):(0);
потом значение $check записывай в БД.

что-то у меня не получается так. :rolleyes:


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

а вообще попробуй так:

IF ($имя_входящего_чекбокса != ""){
$chek = 0;
} else {$chek = 1;}
  • 0


Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.