Неопределенный индекс Если я не проверю флажок

Кажется, у меня странное происшествие. Если я поставлю флажок в форме, тогда скрипт php отлично работает. Если я не проверю флажок, то php сообщает о неопределенном индексе для другой переменной.

Это использует локальный хост IIS, проверяя вещи.

В Интернете опубликованный идентичный скрипт работает независимо от того, что. Ну, практически одинаковые. Я локально добавил переменную «test» POST-ed в php и сравнивал с жестко закодированным значением. Это все.

Вот html для флажка:

<tr> <td>Publish Comment?</td> <td><input name="publishok" value="NO" type="checkbox"> Check Box For Do spanstyle="font-weight: bold;">Not</span> Publish</td> </tr> <tr> 

и вот php для переменной, 'publishok':

 $IP = $_SERVER["REMOTE_ADDR"]; $publishok = $_POST['publishok']; $test = $_POST['test']; if ($test != 'park') die ("Wrong input. Sorry. Go back, try again"); 

Я подозревал, что мой редактор PSPad добавлял ложные (и невидимые) коды символов или что-то еще, поэтому я обновился до последней версии. Нет разницы.

Не могу подумать, что может вызвать это.

Может ли кто-нибудь помочь?

флажок не будет отправлять данные на сервер, если вы его не проверили.

Вы должны использовать isset($_POST['publishok']) чтобы проверить, проверено ли оно на стороне сервера.

Это происходит потому, что данные флажка не отправляются на сервер, если он не установлен. Немного взломать это – использовать скрытое поле ввода с тем же именем перед флажком, поэтому, если флажок снят, это значение будет отправлено вместо этого.

 <input name="publishok" value="0" type="hidden"> <input name="publishok" value="NO" type="checkbox"> 

Я полагаю, что флажки и переключатели не отправляют данные get / post, если не выбраны / отмечены (вы можете проверить это, выполнив var_dump / print_r на $ _GET / $ _ POST), поэтому вы должны сделать что-то вроде:

 if(isset($_POST['publishok'])){ $publishok = $_POST['publishok']; }else{ $publishok = "";#default value }