Флажки PHP и перезапись URL - PullRequest
       0

Флажки PHP и перезапись URL

1 голос
/ 26 февраля 2012

Надеюсь, кто-нибудь может помочь мне с моим кодом. Я использую переписанные URL-адреса и у меня есть этот кусок кода в форме. Когда страница впервые загружает mypage.htm, по умолчанию установлен флажок get_24. Если они установят флажок type_12, я хочу снять флажок type_24.

Моя проблема в том, что если я установлю флажок type_12, страница обновится, и оба флажка type_12 и type_24 будут отмечены ... что не то, что я хочу Я думаю, это потому, что я перезагружаю свой переписанный URL в своем действии, потому что он отлично работает, если в качестве действия у меня есть только php файл.

Любые идеи, как я могу исправить свой код, чтобы он проверял type_12 только когда я отмечаю поле type_24?

<form name="frmrefresh" id="frmrefresh" method="post" action="mypage.htm">

<input type="checkbox" name="type_12" id="type_12" <?php if(isset($_POST['type_12']) &&    $_POST['type_12']=="12"){?> checked="checked"<?php }?> value="12"   onClick="uncheck24(this);" /> <label>12</label> 

<input type="checkbox" name="type_24" id="type_24" <?php if(isset($_GET['id']) && $_GET['id']!=''){?>checked="checked"<?php }?><?php if(isset($_POST['month_24']) && $_POST['type_24']=="24"){?> checked="checked"<?php }?> value="24" onClick="uncheck12(this);"/> <label>24 Months</label>

<input type="hidden" name="id" value="<?php echo $_REQUEST['id'];?>" />
</form>

В шапке у меня есть функции:

function uncheck12(obj)
    {
    if (obj.checked == true)
        {
             document.getElementById("type_12").checked = false;
             document.frmrefresh.submit();
        }
}

function uncheck24(obj)
{
        if (obj.checked == true)
        {
            document.getElementById("type_24").checked = false;
            document.frmrefresh.submit();
        }
    }

1 Ответ

0 голосов
/ 26 февраля 2012

Несколько замечаний:

  • Рассмотрите возможность использования переключателей вместо флажков
  • Я думаю, что вы имеете в виду isset($_POST['type_24']) вместо isset($_POST['month_24'])

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

RewriteRule ^mypage.htm$ mypage.php?id=5

Это означает, что когда форма отправляется через POST, PHP по-прежнему будет устанавливать для вас переменную $_GET['id'], поскольку она находится вСтрока запроса.И так как вы проверяете опцию «24» всякий раз, когда установлена ​​$_GET['id'], второй флажок всегда будет отмечен.Чтобы это исправить, вы можете добавить чек $_SERVER['REQUEST_METHOD'] == 'GET':

<form name="frmrefresh" id="frmrefresh" method="post" action="mypage.htm">
<input type="checkbox" name="type_12" id="type_12" <?php if(isset($_POST['type_12']) &&    $_POST['type_12']=="12"){?> checked="checked"<?php }?> value="12"   onClick="uncheck24(this);" /> <label>12</label> 
<input type="checkbox" name="type_24" id="type_24" <?php if(isset($_GET['id']) && $_GET['id']!='' && $_SERVER['REQUEST_METHOD']=='GET'){?>checked="checked"<?php }?><?php if(isset($_POST['type_24']) && $_POST['type_24']=="24"){?> checked="checked"<?php }?> value="24" onClick="uncheck12(this);"/> <label>24 Months</label>
<input type="hidden" name="id" value="<?php echo $_REQUEST['id'];?>" />
</form>
...