Здравствуйте! У меня вот такая вот проблемка: есть форма, в ней кроме всего остального есть чекбоксы, но почему то, через $_POST не передаётся значение одного чекбокса. Помогите пж, вот часть формы: HTML: <p> <input type="checkbox" name="CS 1.6" value="Counter-Strike 1.6" />Counter-Strike 1.6<br> <input type="checkbox" name="War3" value="WarCraft III" />WarCraft III<br> <input type="checkbox" name="CSS" value="Counter-Strike Source" />Counter-Strike Source<br> <input type="checkbox" name="CoD4" value="Call Of Duty 4: Modern Warfare" />Call Of Duty 4: Modern Warfare<br> <input type="checkbox" name="CoD6" value="Call Of Duty 6: Modern Warfare2" />Call Of Duty 6: Modern Warfare2<br> </p> а вот тут: PHP: echo $_POST['CS 1.6']; пусто
Всегда меня напрягали пробелы в идентификаторах. Насколько мне известно, в пхп есть (был) механизм отражения переменных хттп запроса (и многих других) на реальные переменные. register globals - так вроде это называется. мне эта затея сразу не понравилась, поэтому я ею никогда не пользовался. Так вот. Если бы этот регистер глобалс сделал из <input type="checkbox" name="CS 1.6" value="Counter-Strike 1.6" /> переменную, то как бы к ней нужно было обращаться? типа if ($CS 1.6) ... что за муть? пхп бы грязно выругался. короче, попробуй без пробела название инпута. тем более, что от остальных инпутов он как-раз наличием пробела и отличается я бы даже всякие точки не рекомендовал использовать.
Zerox Вам уже несколько раз сказали по теме, вы не послушали. var_dump ($_POST); http://phpfaq.ru/debug - ещё это почитайте
Вы, извините, дурак. Вам уже сколько раз намекнули, что это особенность самого PHP. Примите как факт. Если вы хоть немного интересуетесь языком, на котором пишите, то вы бы знали что в PHP переменные не могут содержать знак точка ("."), а ведёт это ограничение к дням register_globals, когда данные из GET/POST запросов автоматом преобразовывались в переменные и все сонимательные и запрещённые символы автоматом приводились к знаку подчёркивания ("_"). Если бы вы уж совсем хотели бы изучить нормально PHP, то знали бы все причины, по которым происходит такое преобразование, а так же о планах его возможно отменить в PHP6, т.к. прямого перевода GET/POST данных в переменные там просто не будет существовать.
вы тоже это я понял с самого начала и это мне уже объяснили Извините, но ничего нового вы мне не сказали, кроме
вот дамп PHP: array(13) { ["rlogin"]=> string(5) "Zerox" ["rpass"]=> string(6) "123456" ["rpass_r"]=> string(6) "123456" ["date"]=> string(4) "1992" ["name"]=> string(8) "Вячеслав" ["fam"]=> string(8) "Алексеев" ["email"]=> string(20) "joker-main@yandex.ru" ["icq"]=> string(9) "403993613" ["War3"]=> string(12) "WarCraft III" ["CSS"]=> string(21) "Counter-Strike Source" ["CoD4"]=> string(30) "Call Of Duty 4: Modern Warfare" ["CoD6"]=> string(31) "Call Of Duty 6: Modern Warfare2" ["nick"]=> string(5) "Zerox" }
я посмотрел..переменная CS вообще не создаётся? з.ы перед этим поменял имя чекбокса на CS и в массиве поставил trim($_POST['CS'])
Zerox PHP: <?php if (count ($_POST) > 0){ echo '<pre>' . print_r ($_POST, true) . '</pre>'; } ?> <form method="post" action=""> <p> <input type="checkbox" name="CS 1.6" value="Counter-Strike 1.6" />Counter-Strike 1.6<br> <input type="checkbox" name="War3" value="WarCraft III" />WarCraft III<br> <input type="checkbox" name="CSS" value="Counter-Strike Source" />Counter-Strike Source<br> <input type="checkbox" name="CoD4" value="Call Of Duty 4: Modern Warfare" />Call Of Duty 4: Modern Warfare<br> <input type="checkbox" name="CoD6" value="Call Of Duty 6: Modern Warfare2" />Call Of Duty 6: Modern Warfare2<br> </p> <input type="submit" name="ok" value="Ololo"> </form> Вывод:
ого! Что то я не понял! Не знаю может ли быть такое, но по моему превышено максимальное количество переменных, так как после того как я удалил последний чекбокс всё заработало! Может ли быть такое?