Jump to content
  • 0

как "распарсить" полученные чекбоксы с одинаковым name


snake2
 Share

Question

обнаружил тут одну непонятную вещь на мобильной версии сайта m.mail.ru/cgi-bin/msglist

дело такое, если в браузере выключить Javascript и выделить несколько писем чекбоксами, и выбрать действие (ну допустим -удалить) то действие примениться ко всем выделенным письмам.

Но вопрос вот в чём, заглянул в код странички,и непонял,у всех чекбоксов атрибут name имеет одинаковое имя name="id" . выходит дело что на сервер передаются все выбранные value и при этом все под одним именем "id" ,

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

То есть вот в таком коде,если выделить все чекбоксы и отправить,то узнать я смогу только последний (четвертый):

<?php
print_r($_POST);

?>

<form method="Post" name="main" action="" id="m_form">

<input type="checkbox" id="msg1" name="id" value="msg1" /> msg1 <br>
<input type="checkbox" id="msg2" name="id" value="msg2" /> msg2 <br>
<input type="checkbox" id="msg3" name="id" value="msg3" /> msg3 <br>
<input type="checkbox" id="msg4" name="id" value="msg4" /> msg4 <br>
<input type="submit" />

</form>

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Это так только в случае если вы отправляете форму стандартными способами html, возможно там есть js скрипт который занимается отправлением и он из выбранных полей формирует что-нибудь в роде "posts=13123,123123,132323,23232,3223", а на сервере это все дело разбирается, чтобы понять логику приложения не достаточно просто руководствоваться возможностями одной технологии если в нем используются несколько технологий. Смотрите js скрипты и разбирайте что происходит в момент нажатия кнопки "удалить" или какой то другой.

Link to comment
Share on other sites

  • 0

нет, не сходится, я же специально написал что выключил javascript

Я не совсем правильно выразился в предыдущем посте. Конечно же не отправка стандартными способами html, данные отправляет браузер, а не html )) и оправляет он все поля даже с одинаковыми именами.А вот что с ними происходит на сервере уже другой вопрос. В вашем случае используются возможности других используемых технологий. Майл ру во-первых возможно использует не php, а cgi скрипты написанные на других языках )) И не факт что там вообще есть такая вещь как глобальный массив $_POST ))

Если вы хотите понять как примерно это можно реализовать на PHP то замените вашу строку:


print_r($_POST);

на


echo file_get_contents("php://input");

И получите все входные данные, а уж потом делайте с ними что хотите )).

так же можете прочитать про переменную $HTTP_RAW_POST_DATA и директиву always_populate_raw_post_data, а конкретнее если в php.ini директива always_populate_raw_post_data установлена как true то исходные post данные будут попадать в переменную $HTTP_RAW_POST_DATA, но там имеются ограничения и лучше использовать первый способ.

кстати еще:

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

Вот так можно еще )) Это я и имел ввиду под стандартными способами html, если не указывать что это массив параметров то в глобальный массив $_POST попадет только последнее значение,а если добавить [] к именам полей с одинаковым именем то php воспримет это как массив значений.Но это не ваш случай. И с этим я конечно фигню спорол про javascript.


<?php
print_r($_POST);
?>
<form method="Post" name="main" action="" id="m_form">
<input type="checkbox" id="msg1" name="id[]" value="msg1" /> msg1 <br>
<input type="checkbox" id="msg2" name="id[]" value="msg2" /> msg2 <br>
<input type="checkbox" id="msg3" name="id[]" value="msg3" /> msg3 <br>
<input type="checkbox" id="msg4" name="id[]" value="msg4" /> msg4 <br>
<input type="submit" />
</form>

Edited by wwt
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy