本文整理汇总了PHP中IPAddress::getVersion方法的典型用法代码示例。如果您正苦于以下问题:PHP IPAddress::getVersion方法的具体用法?PHP IPAddress::getVersion怎么用?PHP IPAddress::getVersion使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPAddress
的用法示例。
在下文中一共展示了IPAddress::getVersion方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: showForm
function showForm($ID, $options = array())
{
global $CFG_GLPI, $DB;
if (!self::canView()) {
return false;
}
$this->check($ID, READ);
$recursiveItems = $this->recursivelyGetItems();
if (count($recursiveItems) > 0) {
$lastItem = $recursiveItems[count($recursiveItems) - 1];
$lastItem_entities_id = $lastItem->getField('entities_id');
} else {
$lastItem_entities_id = $_SESSION['glpiactive_entity'];
}
$options['entities_id'] = $lastItem_entities_id;
$this->showFormHeader($options);
$options['canedit'] = false;
$options['candel'] = false;
$number_errors = 0;
foreach (self::getMotives() as $key => $name) {
if ($this->fields[$key] == 1) {
$number_errors++;
}
}
$motives = self::getMotives();
$interface_cell = "td";
$address_cell = "td";
$network_cell = "td";
$gateway_cell = "td";
$address = new IPAddress();
$netmask = new IPNetmask();
$number_real_errors = 0;
if (!$address->setAddressFromString($this->fields['ip']) || !$netmask->setNetmaskFromString($this->fields['netmask'], $address->getVersion())) {
unset($address);
unset($netmask);
} else {
$network = new IPNetwork();
$params = array("address" => $address, "netmask" => $netmask);
if (isset($this->fields["address"])) {
$params["exclude IDs"] = $this->fields["address"];
}
if (isset($this->fields["entities_id"])) {
$entity = $this->fields["entities_id"];
} else {
$entity = -1;
}
$networkports_ids = IPNetwork::searchNetworks("equals", $params, $entity, false);
if (count($networkports_ids) == 0) {
unset($network);
} else {
$network->getFromDB($networkports_ids[0]);
}
}
if ($this->fields['unknown_interface_type'] == 1) {
$options['canedit'] = true;
$number_real_errors++;
$interface_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['unknown_interface_type'] . "</th>\n" . "<td>" . __('Transform this network port to');
echo "</td><td colspan=2>";
Dropdown::showItemTypes('transform_to', NetworkPort::getNetworkPortInstantiations(), array('value' => "NetworkPortEthernet"));
echo "</td></tr>\n";
}
if ($this->fields['invalid_network'] == 1) {
$number_real_errors++;
$network_cell = "th";
$address_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['invalid_network'] . "</th>\n<td colspan=3>";
if (isset($network)) {
printf(__('Network port information conflicting with %s'), $network->getLink());
} else {
if (!isset($address) || !isset($netmask)) {
_e('Invalid address or netmask');
} else {
_e('No conflicting network');
}
echo " <a href='" . Toolbox::getItemTypeFormURL('IPNetwork') . "'>" . __('you may have to add a network') . "</a>";
}
echo "</td></tr>\n";
}
if ($this->fields['invalid_gateway'] == 1) {
$number_real_errors++;
$gateway_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['invalid_gateway'] . "</th>\n<td colspan=3>";
if (isset($network)) {
printf(__('Append a correct gateway to the network %s'), $network->getLink());
} else {
printf(__('%1$s: %2$s'), __('Unknown network'), "<a href='" . Toolbox::getItemTypeFormURL('IPNetwork') . "'>" . __('Add a network') . "\n </a>");
}
echo "</td></tr>\n";
}
if ($this->fields['invalid_address'] == 1) {
$number_real_errors++;
$address_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['invalid_address'] . "</th>\n<td colspan=3>";
$networkPort = new NetworkPort();
if ($networkPort->getFromDB($this->getID())) {
$number_real_errors++;
echo "<a href='" . $networkPort->getLinkURL() . "'>" . __('Add a correct IP to the network port') . "</a>";
} else {
_e('Unknown network port');
//.........这里部分代码省略.........
示例2: searchNetworks
/**
* Search networks relative to a given network
*
* @param $relation type of relation ("is contained by", "equals" or "contains")
* regarding the networks given as parameter
* @param $condition array of elements to select the good arrays (see Parameters above)
* - fields : the fields of the network we wish to retrieve (single field or array of
* fields). This parameter will impact the result of the function
* - address (see \ref parameterType) : the address for the query
* - netmask (see \ref parameterType) : the netmask for the query
* - exclude IDs : the IDs to exclude from the query (for instance, $this->getID())
* - where : filters to add to the SQL request
*
* @param $entityID the entity on which the selection should occur (-1 => the current active
* entity) (default -1)
* @param $recursive set to false to only search in current entity, otherwise, all visible
* entities will be search (true by default)
* @param $version version of IP to look (only use when using arrays or string as input for
* address or netmask n(default 0)
*
* @return array of networks found. If we want request several field, the return value will be
* an array of array
*
* \warning The order of the elements inside the result are ordered from the nearest one to the
* further. (ie. 0.0.0.0 is the further of whatever network if you lool for ones that
* contains the current network.
**/
static function searchNetworks($relation, $condition, $entityID = -1, $recursive = true, $version = 0)
{
global $DB;
if (empty($relation)) {
return false;
}
if (empty($condition["fields"])) {
$fields = 'id';
} else {
$fields = $condition["fields"];
}
if (!is_array($fields)) {
$fields = array($fields);
}
$FIELDS = "`" . implode("`, `", $fields) . "`";
$startIndex = $version == 4 ? 3 : 1;
$addressDB = array('address_0', 'address_1', 'address_2', 'address_3');
$netmaskDB = array('netmask_0', 'netmask_1', 'netmask_2', 'netmask_3');
$WHERE = "";
if (isset($condition["address"]) && isset($condition["netmask"])) {
$addressPa = new IPAddress($condition["address"]);
// Check version equality ...
if ($version != $addressPa->getVersion()) {
if ($version != 0) {
return false;
}
$version = $addressPa->getVersion();
}
$netmaskPa = new IPNetmask($condition["netmask"], $version);
// Get the array of the adresses
$addressPa = $addressPa->getBinary();
$netmaskPa = $netmaskPa->getBinary();
// Check the binary is valid
if (!is_array($addressPa) || count($addressPa) != 4) {
return false;
}
if (!is_array($netmaskPa) || count($netmaskPa) != 4) {
return false;
}
$startIndex = $version == 4 ? 3 : 0;
if ($relation == "equals") {
for ($i = $startIndex; $i < 4; ++$i) {
$WHERE .= " AND (`" . $addressDB[$i] . "` & '" . $netmaskPa[$i] . "')=\n ('" . $addressPa[$i] . "' & '" . $netmaskPa[$i] . "')\n AND ('" . $netmaskPa[$i] . "' = `" . $netmaskDB[$i] . "`)";
}
} else {
for ($i = $startIndex; $i < 4; ++$i) {
if ($relation == "is contained by") {
$globalNetmask = "'" . $netmaskPa[$i] . "'";
} else {
$globalNetmask = "`" . $netmaskDB[$i] . "`";
}
$WHERE .= " AND (`" . $addressDB[$i] . "` & {$globalNetmask})=\n ('" . $addressPa[$i] . "' & {$globalNetmask})\n AND ('" . $netmaskPa[$i] . "' & `" . $netmaskDB[$i] . "`)={$globalNetmask}";
}
}
}
$WHERE = "`version`='{$version}' {$WHERE}";
if ($entityID < 0) {
$entityID = $_SESSION['glpiactive_entity'];
}
$entitiesID = array();
switch ($relation) {
case "is contained by":
$ORDER_ORIENTATION = 'ASC';
if ($recursive) {
$entitiesID = getSonsOf('glpi_entities', $entityID);
}
break;
case "contains":
$ORDER_ORIENTATION = 'DESC';
if ($recursive) {
$entitiesID = getAncestorsOf('glpi_entities', $entityID);
}
break;
//.........这里部分代码省略.........