Как получить только IP-адрес / подсеть - PullRequest
1 голос
/ 03 марта 2011

Я использую плагин jquery, он маскирует мое поле и позволяет пользователю только вводить правильные значения.Это работает очень хорошо, но теперь, когда я отправляю свою форму, IP-адрес объекта является массивом, мне нужно получить только IP-номер (10.1.25.2/30)

Результат:

$ip = $_POST['ipaddress'];
print_r($ip);

//It returns to me
Array ( [abcd] => Array ( [0] => 10.1.25.2/30 ) ) 

Мне нужно взорвать массив или сделать что-нибудь по этому пути ... помогите, пожалуйста!

Весь код:

HTML-страница Включены jQuery плагины:

<script src="scripts/jquery.min.js" type="text/javascript">
<script src="jquery.validate/jquery.caret.js" type="text/javascript"></script>
<script src="jquery.validate/jquery.ipaddress.js" type="text/javascript"></script>

    <script>
        $(function(){
        $('#ip').ipaddress({cidr:true});
        });     
    </script>

<form name="form1" method="post" action="equipAction.php">
 <tr>
  <td>IP</td>
  <td><input name="ipaddress[abcd][]" id="ip" type="text" value="<?=$ip;?>" />
  <b>»» IP atribuído ao contrato do Cliente/Torre </b> </td>    
 </tr>
 <input type='submit' name="alt" value="Edit" class="btn" />
</form>

Теперь мой Action phpкод:

 if ($_POST["alt"] == "Edit") {

    # Dados do form
    $idequip  = $_GET['id'];
    $contrato = $_POST['contrato'];
    $transmi  = $_POST['transmissor'];
    $ip       = $_POST['ipaddress'];
    $local    = $_POST['local']; //tipo_equip
    $obs      = $_POST['obs'];
    $usado    = $_POST['usado'];

    echo "<br />";
    print_r($ip);




    # Atualiza dados do equipamento mestre
    # desenvolvendo
    $res = mysql_query("UPDATE equipment SET idtorre='$transmi', ip='$ip', tipo_equip='$local', obs='$obs', usado_cliente='$usado' WHERE id='$idequip'") or die("Erro na query: atualização equipamento mestre.");
    #header("Location: equipamento_adm.php?return=3&ip=$control");
    exit;
 }

Вот и все!

Ответы [ 3 ]

4 голосов
/ 03 марта 2011

Это простой многомерный массив, вы можете получить ваше значение следующим образом:

$ip = $_POST['ipaddress'];    
$justip = $ip['abcd'][0];

Теперь в переменной $justip есть только ip-адрес.

Возможно, вам следует прочитать документацию по массивам: http://ch.php.net/manual/en/language.types.array.php

1 голос
/ 03 марта 2011

Сколько форм на этой странице?

Причина, по которой он отображается в массиве, а не в $ _POST ['ipaddress'], заключается в следующем: <input name="ipaddress[abcd][]" id="ip" type="text" value="<?=$ip;?>" /> в форме html. [abcd][] заставляет его сделать ipaddress массивом, содержащим массив с ключом 'abcd', первый доступный ключ которого заполняется значением из формы. Если вы сделали <input name="ipaddress" id="ip" type="text" value="<?=$ip;?>" />, тогда IP-адрес будет доступен напрямую через $_POST['ipaddress'].

Если у вас несколько форм, используйте name="ipaddress[]", и каждая форма будет заполнять ключ массива $_POST['ipaddress'], поэтому $_POST['ipaddress'][0] будет первой формой, $_POST['ipaddress'][1] будет второй формой и так далее.

0 голосов
/ 03 марта 2011

Кстати, если вы переключитесь с

<input name="ipaddress[abcd][]" id="ip" type="text" value="<?=$ip;?>" />

на

<input name="ipaddress[abcd]" id="ip" type="text" value="<?=$ip;?>" />

, вы избавитесь от массива (обратите внимание на удаление [] из атрибута имени входного файла).

...